{"version":3,"sources":["webpack:///./node_modules/@ag-grid-enterprise/core/dist/cjs/license/md5.js","webpack:///./node_modules/@ag-grid-enterprise/core/dist/cjs/license/watermark.js","webpack:///./node_modules/@ag-grid-enterprise/clipboard/dist/cjs/main.js","webpack:///./node_modules/@ag-grid-enterprise/column-tool-panel/dist/cjs/main.js","webpack:///./node_modules/@ag-grid-enterprise/column-tool-panel/dist/cjs/columnToolPanel/primaryColsHeaderPanel.js","webpack:///./node_modules/@ag-grid-enterprise/row-grouping/dist/cjs/rowGrouping/columnDropZones/rowGroupDropZonePanel.js","webpack:///./node_modules/@ag-grid-enterprise/row-grouping/dist/cjs/rowGrouping/columnDropZones/pivotDropZonePanel.js","webpack:///./node_modules/@ag-grid-enterprise/side-bar/dist/cjs/sideBar/horizontalResizeComp.js","webpack:///./node_modules/@ag-grid-enterprise/side-bar/dist/cjs/sideBar/sideBarButtonsComp.js","webpack:///./node_modules/@ag-grid-enterprise/side-bar/dist/cjs/sideBar/common/toolPanelColDefService.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/main.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/styles/numberFormat.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/styles/font.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/styles/border.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/styles/xf.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/worksheet.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/excelXmlSerializingSession.js","webpack:///./node_modules/@ag-grid-enterprise/filter-tool-panel/dist/cjs/main.js","webpack:///./node_modules/@ag-grid-enterprise/filter-tool-panel/dist/cjs/filterToolPanel/filtersToolPanelHeaderPanel.js","webpack:///./node_modules/@ag-grid-enterprise/filter-tool-panel/dist/cjs/filterToolPanel/toolPanelFilterComp.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/main.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/axis.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/chartProxies/cartesian/scatterChartProxy.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/cartesianChart.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/chart.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scene/scene.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/series/series.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/series/seriesMarker.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/marker/circle.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/axis/groupedCategoryAxis.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/series/polar/polarSeries.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/compare.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/interpolate/number.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/bisect.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/label.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scene/shape/sector.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scene/dropShadow.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/axis/numberAxis.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/time/day.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/time/week.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/time/year.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/chartProxies/chartProxy.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/typeChecker.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/miniCharts/miniChart.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/miniCharts/miniStackedColumn.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/miniCharts/miniStackedBar.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/miniCharts/miniDoughnut.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/miniCharts/miniStackedArea.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/chartProxies/polar/polarChartProxy.js","webpack:///./node_modules/@ag-grid-enterprise/range-selection/dist/cjs/rangeSelection/abstractSelectionHandle.js","webpack:///./node_modules/@ag-grid-enterprise/master-detail/dist/cjs/main.js","webpack:///./node_modules/@ag-grid-enterprise/menu/dist/cjs/main.js","webpack:///./node_modules/@ag-grid-enterprise/menu/dist/cjs/menu/menuList.js","webpack:///./node_modules/@ag-grid-enterprise/rich-select/dist/cjs/main.js","webpack:///./node_modules/@ag-grid-enterprise/server-side-row-model/dist/cjs/main.js","webpack:///./node_modules/@ag-grid-enterprise/server-side-row-model/dist/cjs/serverSideRowModel/serverSideBlock.js","webpack:///./node_modules/@ag-grid-enterprise/set-filter/dist/cjs/main.js","webpack:///./node_modules/@ag-grid-enterprise/status-bar/dist/cjs/main.js","webpack:///./node_modules/@ag-grid-enterprise/viewport-row-model/dist/cjs/main.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/chartAxis.js","webpack:///./node_modules/@ag-grid-enterprise/core/dist/cjs/main.js","webpack:///./node_modules/@ag-grid-enterprise/core/dist/cjs/agGridEnterpriseModule.js","webpack:///./node_modules/@ag-grid-enterprise/clipboard/dist/cjs/clipboardModule.js","webpack:///./node_modules/@ag-grid-enterprise/clipboard/dist/cjs/clipboard/clipboardService.js","webpack:///./node_modules/@ag-grid-enterprise/column-tool-panel/dist/cjs/columnsToolPanelModule.js","webpack:///./node_modules/@ag-grid-enterprise/column-tool-panel/dist/cjs/columnToolPanel/primaryColsListPanel.js","webpack:///./node_modules/@ag-grid-enterprise/column-tool-panel/dist/cjs/columnToolPanel/toolPanelColumnGroupComp.js","webpack:///./node_modules/@ag-grid-enterprise/column-tool-panel/dist/cjs/columnToolPanel/toolPanelColumnComp.js","webpack:///./node_modules/@ag-grid-enterprise/column-tool-panel/dist/cjs/columnToolPanel/columnToolPanel.js","webpack:///./node_modules/@ag-grid-enterprise/column-tool-panel/dist/cjs/columnToolPanel/pivotModePanel.js","webpack:///./node_modules/@ag-grid-enterprise/row-grouping/dist/cjs/rowGroupingModule.js","webpack:///./node_modules/@ag-grid-enterprise/row-grouping/dist/cjs/rowGrouping/aggregationStage.js","webpack:///./node_modules/@ag-grid-enterprise/row-grouping/dist/cjs/rowGrouping/groupStage.js","webpack:///./node_modules/@ag-grid-enterprise/row-grouping/dist/cjs/rowGrouping/pivotColDefService.js","webpack:///./node_modules/@ag-grid-enterprise/row-grouping/dist/cjs/rowGrouping/pivotStage.js","webpack:///./node_modules/@ag-grid-enterprise/row-grouping/dist/cjs/rowGrouping/aggFuncService.js","webpack:///./node_modules/@ag-grid-enterprise/row-grouping/dist/cjs/rowGrouping/columnDropZones/gridHeaderDropZones.js","webpack:///./node_modules/@ag-grid-enterprise/row-grouping/dist/cjs/rowGrouping/columnDropZones/dropZoneColumnComp.js","webpack:///./node_modules/@ag-grid-enterprise/row-grouping/dist/cjs/rowGrouping/columnDropZones/valueDropZonePanel.js","webpack:///./node_modules/@ag-grid-enterprise/column-tool-panel/dist/cjs/columnToolPanel/primaryColsPanel.js","webpack:///./node_modules/@ag-grid-enterprise/side-bar/dist/cjs/sideBarModule.js","webpack:///./node_modules/@ag-grid-enterprise/side-bar/dist/cjs/sideBar/sideBarComp.js","webpack:///./node_modules/@ag-grid-enterprise/side-bar/dist/cjs/sideBar/toolPanelWrapper.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExportModule.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/excelXlsxFactory.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/core.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/contentTypes.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/contentType.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/themes/office.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/themes/office/themeElements.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/themes/office/colorScheme.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/themes/office/fontScheme.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/themes/office/formatScheme.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/sharedStrings.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/styles/numberFormats.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/styles/fonts.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/styles/fills.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/styles/fill.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/styles/borders.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/styles/cellStyleXfs.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/styles/alignment.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/styles/protection.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/styles/cellXfs.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/styles/cellStyles.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/styles/cellStyle.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/workbook.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/sheets.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/sheet.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/column.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/row.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/cell.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/mergeCell.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/relationships.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/relationship.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/excelXmlFactory.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/xml/workbook.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/xml/excelWorkbook.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/xml/worksheet.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/xml/column.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/xml/row.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/xml/cell.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/xml/documentProperties.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/xml/styles/alignment.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/xml/styles/borders.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/xml/styles/font.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/xml/styles/interior.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/xml/styles/protection.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/xml/styles/numberFormat.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/xml/styles/style.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/excelCreator.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/excelXlsxSerializingSession.js","webpack:///./node_modules/@ag-grid-enterprise/filter-tool-panel/dist/cjs/filtersToolPanelModule.js","webpack:///./node_modules/@ag-grid-enterprise/filter-tool-panel/dist/cjs/filterToolPanel/filtersToolPanelListPanel.js","webpack:///./node_modules/@ag-grid-enterprise/filter-tool-panel/dist/cjs/filterToolPanel/toolPanelFilterGroupComp.js","webpack:///./node_modules/@ag-grid-enterprise/filter-tool-panel/dist/cjs/filterToolPanel/filtersToolPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/gridChartsModule.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartService.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/gridChartComp.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/chartMenu.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/tabbedChartMenu.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/data/chartDataPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/chartDatasource.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/format/chartFormattingPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/format/legend/legendPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/format/series/barSeriesPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/format/axis/axisPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/format/axis/axisTicksPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scene/intersection.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scene/polyRoots.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/format/series/lineSeriesPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/canvas/hdpiCanvas.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/legend.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/markerLabel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/layout/tree.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/polarChart.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/series/cartesian/lineSeries.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/interpolate/constant.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/interpolate/date.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/interpolate/array.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/interpolate/object.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/series/cartesian/scatterSeries.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/series/cartesian/columnSeries.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/series/cartesian/areaSeries.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/series/polar/pieSeries.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/color.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/caption.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/groupedCategoryChart.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/marker/cross.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/marker/diamond.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/marker/plus.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/marker/triangle.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/map.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scale/timeScale.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/time/millisecond.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/time/second.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/time/minute.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/time/hour.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/time/month.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/time/format/defaultLocale.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/time/format/locale.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/time/utcDay.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/time/utcYear.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/time/utcWeek.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/format/series/pieSeriesPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/format/series/calloutPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/format/chart/chartPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/format/chart/paddingPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/format/chart/backgroundPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/format/series/areaSeriesPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/format/series/scatterSeriesPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/chartSettingsPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/miniChartsContainer.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/miniCharts/index.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/miniCharts/miniColumn.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/miniCharts/miniNormalizedColumn.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/miniCharts/miniBar.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/miniCharts/miniNormalizedBar.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/miniCharts/miniPie.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/miniCharts/miniLine.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/miniCharts/miniScatter.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/miniCharts/miniBubble.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/miniCharts/miniArea.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/miniCharts/miniNormalizedArea.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/chartProxies/cartesian/barChartProxy.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/chartProxies/cartesian/areaChartProxy.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/chartProxies/cartesian/lineChartProxy.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/chartProxies/polar/pieChartProxy.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/chartProxies/polar/doughnutChartProxy.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/chartTranslator.js","webpack:///./node_modules/@ag-grid-enterprise/range-selection/dist/cjs/rangeSelectionModule.js","webpack:///./node_modules/@ag-grid-enterprise/range-selection/dist/cjs/rangeSelection/rangeController.js","webpack:///./node_modules/@ag-grid-enterprise/range-selection/dist/cjs/rangeSelection/fillHandle.js","webpack:///./node_modules/@ag-grid-enterprise/range-selection/dist/cjs/rangeSelection/rangeHandle.js","webpack:///./node_modules/@ag-grid-enterprise/master-detail/dist/cjs/masterDetailModule.js","webpack:///./node_modules/@ag-grid-enterprise/master-detail/dist/cjs/masterDetail/detailCellRenderer.js","webpack:///./node_modules/@ag-grid-enterprise/menu/dist/cjs/menuModule.js","webpack:///./node_modules/@ag-grid-enterprise/menu/dist/cjs/menu/enterpriseMenu.js","webpack:///./node_modules/@ag-grid-enterprise/menu/dist/cjs/menu/contextMenu.js","webpack:///./node_modules/@ag-grid-enterprise/menu/dist/cjs/menu/menuItemMapper.js","webpack:///./node_modules/@ag-grid-enterprise/rich-select/dist/cjs/richSelectModule.js","webpack:///./node_modules/@ag-grid-enterprise/rich-select/dist/cjs/richSelect/richSelectCellEditor.js","webpack:///./node_modules/@ag-grid-enterprise/rich-select/dist/cjs/richSelect/richSelectRow.js","webpack:///./node_modules/@ag-grid-enterprise/server-side-row-model/dist/cjs/serverSideRowModelModule.js","webpack:///./node_modules/@ag-grid-enterprise/server-side-row-model/dist/cjs/serverSideRowModel/serverSideRowModel.js","webpack:///./node_modules/@ag-grid-enterprise/server-side-row-model/dist/cjs/serverSideRowModel/serverSideCache.js","webpack:///./node_modules/@ag-grid-enterprise/set-filter/dist/cjs/setFilterModule.js","webpack:///./node_modules/@ag-grid-enterprise/set-filter/dist/cjs/setFilter/setFilter.js","webpack:///./node_modules/@ag-grid-enterprise/set-filter/dist/cjs/setFilter/setValueModel.js","webpack:///./node_modules/@ag-grid-enterprise/set-filter/dist/cjs/setFilter/setFilterListItem.js","webpack:///./node_modules/@ag-grid-enterprise/set-filter/dist/cjs/setFilter/setFloatingFilter.js","webpack:///./node_modules/@ag-grid-enterprise/status-bar/dist/cjs/statusBarModule.js","webpack:///./node_modules/@ag-grid-enterprise/status-bar/dist/cjs/statusBar/statusBarService.js","webpack:///./node_modules/@ag-grid-enterprise/status-bar/dist/cjs/statusBar/statusBar.js","webpack:///./node_modules/@ag-grid-enterprise/status-bar/dist/cjs/statusBar/providedPanels/totalAndFilteredRowsComp.js","webpack:///./node_modules/@ag-grid-enterprise/status-bar/dist/cjs/statusBar/providedPanels/filteredRowsComp.js","webpack:///./node_modules/@ag-grid-enterprise/status-bar/dist/cjs/statusBar/providedPanels/totalRowsComp.js","webpack:///./node_modules/@ag-grid-enterprise/status-bar/dist/cjs/statusBar/providedPanels/selectedRowsComp.js","webpack:///./node_modules/@ag-grid-enterprise/status-bar/dist/cjs/statusBar/providedPanels/aggregationComp.js","webpack:///./node_modules/@ag-grid-enterprise/viewport-row-model/dist/cjs/viewportRowModelModule.js","webpack:///./node_modules/@ag-grid-enterprise/viewport-row-model/dist/cjs/viewportRowModel/viewportRowModel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scene/group.js","webpack:///./node_modules/@ag-grid-enterprise/all-modules/dist/styles/ag-grid.css?3e9d","webpack:///./node_modules/@ag-grid-enterprise/all-modules/dist/styles/ag-grid.css","webpack:///./node_modules/@ag-grid-enterprise/all-modules/dist/styles/ag-theme-material.css?e8e5","webpack:///./node_modules/@ag-grid-enterprise/all-modules/dist/styles/ag-theme-material.css","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scale/linearScale.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/array.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/observable.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/time/interval.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scene/bbox.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scene/node.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/marker/marker.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scale/bandScale.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/settings/miniCharts/miniChartWithAxes.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scene/selection.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scene/shape/path.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/time/duration.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/palettes.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scene/shape/shape.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/number.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/angle.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scene/shape/text.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chartBuilder.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scene/shape/rect.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/chartDataModel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/format/fontPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/padding.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/series/cartesian/cartesianSeries.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/axis/categoryAxis.js","webpack:///./node_modules/@ag-grid-enterprise/status-bar/dist/cjs/statusBar/providedPanels/nameValueComp.js","webpack:///./node_modules/@ag-grid-enterprise/row-grouping/dist/cjs/main.js","webpack:///./node_modules/@ag-grid-enterprise/side-bar/dist/cjs/main.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/chartController.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scene/matrix.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scene/shape/line.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/object.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/chartProxies/cartesian/cartesianChartProxy.js","webpack:///./node_modules/@ag-grid-enterprise/core/dist/cjs/licenseManager.js","webpack:///./node_modules/@ag-grid-enterprise/row-grouping/dist/cjs/rowGrouping/columnDropZones/baseDropZonePanel.js","webpack:///./node_modules/@ag-grid-enterprise/excel-export/dist/cjs/excelExport/files/ooxml/styles/stylesheet.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/format/series/shadowPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/util/ticks.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scene/shape/arc.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scene/path2D.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/chartAdaptor/chartComp/menu/format/series/markersPanel.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/marker/square.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scale/continuousScale.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/interpolate/value.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/chart/axis/timeAxis.js","webpack:///./node_modules/@ag-grid-enterprise/charts/dist/cjs/charts/scene/clipRect.js","webpack:///./node_modules/@ag-grid-enterprise/range-selection/dist/cjs/main.js","webpack:///./node_modules/@ag-grid-enterprise/menu/dist/cjs/menu/menuItemComponent.js","webpack:///./node_modules/@ag-grid-enterprise/all-modules/dist/cjs/main.js"],"names":["__decorate","this","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","exports","value","core_1","MD5","ieCompatibility","prototype","init","md5","md5cycle","x","k","a","b","ff","gg","hh","ii","add32","cmn","q","s","t","md51","n","state","md5blk","substring","tail","charCodeAt","md5blks","rhex","hex_chr","split","j","hex","join","add32Compat","add32Std","y","lsw","PostConstruct","Bean","extendStatics","__extends","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","create","WatermarkComp","_super","call","postConstruct","_this","show","shouldDisplayWatermark","_","addOrRemoveCssClass","getGui","eLicenseTextRef","innerText","licenseManager","getWatermarkMessage","window","setTimeout","addCssClass","isDisplayWatermark","isWhiteListURL","location","hostname","match","search","indexOf","Autowired","RefSelector","Component","clipboardModule_1","ClipboardModule","columnsToolPanelModule_1","ColumnsToolPanelModule","EXPAND_STATE","SELECTED_STATE","PrimaryColsHeaderPanel","apply","preConstruct","translate","gridOptionsWrapper","getLocaleTextFunc","setTemplate","createExpandIcons","useNativeCheckboxes","eSelectCheckbox","document","createElement","type","className","eSelect","appendChild","createCheckIcons","addDestroyableEventListener","eExpand","onExpandClicked","bind","onSelectClicked","eFilterTextField","onFilterTextChanged","onMiniFilterKeyPress","eventService","Events","EVENT_NEW_COLUMNS_LOADED","showOrHideOptions","params","columnController","isReady","eExpandChecked","createIconNoSpan","eExpandUnchecked","eExpandIndeterminate","eSelectChecked","eSelectUnchecked","eSelectIndeterminate","showFilter","suppressColumnFilter","showSelect","suppressColumnSelectAll","showExpand","suppressColumnExpandAll","groupsPresent","isPrimaryColumnGroupsPresent","setDisplayed","eFilterWrapper","onFilterTextChangedDebounced","debounce","filterText","dispatchEvent","e","isKeyPressed","Constants","KEY_ENTER","eventType","selectState","CHECKED","expandState","EXPANDED","setExpandState","COLLAPSED","INDETERMINATE","setSelectionState","checked","indeterminate","UNCHECKED","PreConstruct","RowGroupDropZonePanel","horizontal","passBeansUp","setBeans","context","getContext","loggerFactory","dragAndDropService","localeTextFunc","emptyMessage","title","dragAndDropIcon","DragAndDropService","ICON_GROUP","icon","EVENT_COLUMN_ROW_GROUP_CHANGED","refreshGui","isColumnDroppable","column","isFunctionsReadOnly","isPrimary","isAllowRowGroup","isRowGroupActive","updateColumns","columns","isFunctionsPassive","event_1","EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST","api","gridApi","columnApi","setRowGroupColumns","getIconName","isPotentialDndColumns","ICON_NOT_ALLOWED","getExistingColumns","getRowGroupColumns","BaseDropZonePanel","PivotDropZonePanel","EVENT_COLUMN_EVERYTHING_CHANGED","refresh","EVENT_COLUMN_PIVOT_CHANGED","EVENT_COLUMN_PIVOT_MODE_CHANGED","checkVisibility","pivotMode","isPivotMode","isHorizontal","getPivotPanelShow","pivotActive","isPivotActive","isAllowPivot","EVENT_COLUMN_PIVOT_CHANGE_REQUEST","setPivotColumns","ICON_PIVOT","getPivotColumns","HorizontalResizeComp","setElementToResize","elementToResize","finishedWithResizeFunc","horizontalResizeService","addResizeBar","eResizeBar","dragStartPixels","onResizeStart","onResizing","onResizeEnd","addDestroyFunc","setInverted","isEnableRtl","startingWidth","offsetWidth","delta","direction","inverted","newWidth","Math","max","floor","style","width","SideBarButtonsComp","TEMPLATE","buttonComps","setToolPanelDefs","toolPanelDefs","forEach","addButtonComp","setActiveButton","id","comp","setSelected","getToolPanelId","def","buttonComp","SideBarButtonComp","wireBean","push","addEventListener","EVENT_TOGGLE_BUTTON_CLICKED","EVENT_SIDE_BAR_BUTTON_CLICKED","toolPanelId","clearButtons","destroy","clearElement","toolPanelDef","template","createTemplate","eToggleButton","querySelector","insertAdjacentElement","iconKey","onButtonPressed","labelKey","labelDefault","selected","ToolPanelColDefService","isColGroupDef","colDef","children","getId","groupId","colId","createColumnTree","colDefs","invalidColIds","createDummyColGroup","abstractColDef","depth","groupDef","headerName","group","OriginalColumnGroup","children_1","child","setChildren","field","getPrimaryColumn","mappedResults","result","console","warn","syncLayoutWithGrid","syncLayoutCallback","leafPathTrees","getLeafPathTrees","mergeLeafPathTrees","getLeafPathTree","node","childDef","leafPathTree","isPadding","assign","getColGroupDef","getGroupId","getColDef","getColId","parent","getOriginalParent","getAllGridColumns","filter","showRowGroup","map","col","pathA","pathB","mergeTrees","treeA","treeB","mergeResult","groupToMerge","addChildrenToGroup","mergeColDefs","first","second","tree","currentGroup","groupToAdd","existingChildIds","childGroupAlreadyExists","includes","lastChild","last","lastChildIsDifferent","subGroupIsSplit","subGroup","excelExportModule_1","ExcelExportModule","default","getTemplate","numberFormat","name","properties","rawMap","formatCode","numFmtId","numberFormatMap","font","_a","size","colorTheme","_b","color","_c","family","scheme","italic","bold","strike","outline","shadow","underline","val","theme","rgb","lUnder","toLocaleLowerCase","getFamilyId","pos","stylesheet_1","getBorderColor","convertLegacyColor","borderFactory","border","left","right","top","bottom","diagonal","leftChildren","undefined","rightChildren","topChildren","bottomChildren","diagonalChildren","mappedNames","None","Dot","Dash","Double","DashDot","DashDotDot","SlantDashDot","mediumBorders","convertLegacyBorder","weight","namedWeight","mappedName","charAt","toLowerCase","substr","alignment_1","protection_1","xfFactory","xf","alignment","borderId","fillId","fontId","protection","xfId","applyAlignment","applyProtection","applyBorder","applyFont","applyNumberFormat","column_1","row_1","mergeCell_1","getMergedCells","rows","cols","mergedCells","currentRow","rowIdx","lastCol","cells","merges","index","currentCell","cellIdx","min","start","getExcelColumnName","outputRow","mergeAcross","end","range","prevCol","currentMin","updateColMinMax","ref","colIdx","fromCharCode","String","tableIdx","worksheetFactory","config","table","count","prefixedAttributes","prefix","xmlns","__spreadArrays","il","jl","csv_export_1","ExcelXmlSerializingSession","mixedStyles","mixedStyleCounter","stylesByIds","baseExcelStyles","excelStyles","addCustomContent","customContent","prepare","columnsToExport","convertColumnToExcel","onNewHeaderGroupingRow","currentCells","height","headerRowHeight","onColumn","header","span","styleIds","styleLinker","RowType","HEADER_GROUPING","createMergedCell","onNewHeaderRow","onNewRow","onNewHeaderColumn","onNewBodyRow","onNewBodyColumn","rowHeight","onNewColumnAccumulator","rowIndex","nameForCol","extractHeaderValue","HEADER","createCell","parse","longestRow","reduce","data","sheetName","createExcel","excelFactory","excelStyleId","valueForCell","extractRowCellValue","EXPORT_TYPE_EXCEL","BODY","addNewMixedStyle","excelID","getDataTypeForValue","isNumeric","excelId","resultantStyle","styleId","excelStyle","mergeDeep","deepCloneObject","styleExists","actualStyle","typeTransformed","dataType","getType","suppressTextAsCDATA","escape","cdataEndRegex","RegExp","replace","massageText","Number","valueOf","numOfCells","columnWidth","getActualWidth","BaseGridSerializingSession","filtersToolPanelModule_1","FiltersToolPanelModule","FiltersToolPanelHeaderPanel","eSearchTextField","onSearchTextChanged","showFilterSearch","suppressFilterSearch","suppressExpandAll","filterGroupsPresent","some","isFilterAllowed","onSearchTextChangedDebounced","searchText","event","currentExpandState","ToolPanelFilterComp","hideHeader","expanded","setColumn","eFilterName","getDisplayNameForColumn","eFilterToolPanelHeader","toggleExpanded","EVENT_FILTER_OPENED","onFilterOpened","addInIcon","eFilterIcon","isFilterActive","Column","EVENT_FILTER_CHANGED","onFilterChanged","getColumn","getColumnFilterName","iconName","eParent","eIcon","filterManager","collapse","expand","container","loadTemplate","filterPromise","getOrCreateFilterWrapper","then","underlyingFilter","agFilterToolPanelBody","afterGuiAttached","removeChild","refreshFilter","refreshVirtualList","source","gridChartsModule_1","GridChartsModule","Tags","group_1","selection_1","line_1","ticks_1","angle_1","text_1","arc_1","bbox_1","matrix_1","AxisTick","AxisLabel","fontSize","fontFamily","padding","rotation","mirrored","parallel","get","_format","set","onFormatChange","enumerable","configurable","Axis","scale","lineNode","Line","Group","line","tick","label","translation","_title","_gridLength","gridStyle","stroke","lineDash","_radialGrid","groupSelection","Selection","select","selectAll","onTickFormatChange","append","domain","format","tickFormat","tickFormatter","oldTitle","PI","remove","setData","update","toRadians","parallelLabels","labelRotation","normalizeAngle360","translationX","translationY","bandwidth","sideFlag","parallelFlipRotation","parallelFlipFlag","regularFlipRotation","regularFlipFlag","alignFlag","ticks","exit","enter","each","tag","Tick","gridLength","radialGrid","Arc","GridLine","Text","merge","attrFn","datum","round","convert","selectByTag","strokeWidth","attr","styleCount_1","gridLines","angularGridLength_1","normalizeAngle360Inclusive","arc","radius","centerX","centerY","endAngle","radiusX","radiusY","x1","x2","y1","y2","visible","abs","gridLine","fill","fractionDigits","NumericTicks","labelSelection","selectByClass","fontStyle","fontWeight","textBaseline","text","formatter","toFixed","textAlign","labelX","autoRotation","rotationCenterX","titleNode","bbox","computeBBox","excludeTitle","titleRotationFlag","options","labels","Infinity","computeTransformMatrix","matrix","Matrix","flyweight","preMultiplySelf","labelBBox","transformBBox","BBox","__assign","chartBuilder_1","chartDataModel_1","cartesianChartProxy_1","timeAxis_1","numberAxis_1","typeChecker_1","ScatterChartProxy","getMarkersEnabled","initChartOptions","recreateChart","createChart","ChartBuilder","createScatterChart","chartProxyParams","parentElement","fields","chart","removeAllSeries","seriesDefaults","chartOptions","seriesDefinitions","getSeriesDefinitions","paired","updateAxes","xField","getPalette","fills","strokes","seriesOptions","labelFieldDefinition","category","ChartDataModel","DEFAULT_CATEGORY","existingSeriesById","series","reduceRight","findIndex","xKey","yField","yKey","sizeField","sizeKey","removeSeries","Map","previousSeries","seriesDefinition","existingSeries","createSeries","xFieldDefinition","yFieldDefinition","sizeFieldDefinition","displayName","xName","yName","sizeName","labelName","addSeriesAfter","testDatum","xKeys","xAxis","axes","position","xValuesAreDates","every","test","isDate","TimeAxis","NumberAxis","getTooltipsEnabled","tooltip","enabled","getDefaultOptions","isBubble","chartType","ChartType","Bubble","getDefaultCartesianChartOptions","opacity","marker","minSize","isBubbleChart","xField_1","CartesianChartProxy","CartesianChartLayout","chart_1","array_1","padding_1","categoryAxis_1","groupedCategoryAxis_1","observable_1","chartAxis_1","CartesianChart","axisAutoPadding","Padding","flipXY","_seriesRoot","_layout","Vertical","_updateAxes","scene","root","legend","performLayout","dataPending","shrinkRect","positionCaptions","positionLegend","legendAutoPadding","legendPadding","captionAutoPadding","axis","ChartAxisPosition","Top","Right","CategoryAxis","GroupedCategoryAxis","Bottom","Left","layoutPending","initSeries","freeSeries","removeEventListener","linkedTo","linkedAxes","concat","boundSeries","domains_1","getDomain","numericExtent","axisThickness","reactive","Chart","scene_1","shape_1","rect_1","legend_1","cartesianSeries_1","createId","background","Rect","defaultTooltipClass","Legend","tooltipOffset","onLayoutChange","onLegendPositionChange","clear","_axes","_series","scheduleLayout","scheduleData","_data","_axesChanged","_seriesChanged","layoutCallbackId","_performLayout","fireEvent","dataCallbackId","updateLegend","legendData","showInLegend","listSeriesItems","onMouseMove","offsetX","offsetY","pick","pickSeriesNode","Shape","lastPick","tooltipEnabled","showTooltip","onSeriesNodePick","dehighlightNode","hideTooltip","onMouseOut","toggleTooltip","onClick","datumForPoint","id_1","itemId","find","toggleSeriesItem","_tooltipClass","Scene","addPropertyListener","tooltipElement","tooltipClass","body","setupListeners","canvas","element","captionListener","caption","oldCaption","oldValue","Error","tooltipParent","parentNode","cleanupListeners","values","insertBefore","seriesRoot","axesChanged","addSeries","before","allSeries","beforeIndex","splice","seriesChanged","after","afterIndex","unshift","onSeriesChange","axisName","onAxesChange","force","directionToAxesMap","directions","directionAxes","findMatchingAxis","getKeys","CartesianSeries","yAxis","directionKeys","axisKeys","keys","requestAnimationFrame","cancelAnimationFrame","clearTimeout","processData","subtitle","titleVisible","subtitleVisible","paddingTop","titleBBox","subtitleBBox","legendBBox","legendGroup","chartElement","pickNode","highlightNode","html","getTooltipHtml","classList","setAttribute","el","offset","innerHTML","tooltipRect","getBoundingClientRect","pageY","pageX","pageXOffset","Observable","hdpiCanvas_1","_dirty","animationFrameId","_root","_frameIndex","_renderFrameIndex","render","ctx","clearRect","save","restore","renderFrameIndex","fillStyle","fillRect","fillText","frameIndex","toString","dirty","HdpiCanvas","download","fileName","resize","cancelRender","_setScene","appendPath","path","commands","beginPath","moveTo","lineTo","bezierCurveTo","closePath","Series","ChartAxisDirection","X","Y","isArray","fixNumericExtent","extent","isFinite","circle_1","SeriesMarker","Circle","updatePath","cubicArc","Marker","bandScale_1","tree_1","axis_1","GroupedCategoryAxisLabel","grid","BandScale","tickScale","labelColor","paddingOuter","paddingInner","gridLineSelection","axisLineSelection","separatorSelection","tickTree","ticksToTree","tickTreeLayout","treeLayout","slice","resizeTickTree","layout","lineHeight","rangeStart","rangeEnd","cos","treeLabels","nodes","isLabelTree","updateGridLines","enterGridLines","updateLabels","enterLabels","labelFormatter","maxLeafLabelWidth","screenY","screenX","labelGrid","separatorData","leafCount","number","minX","updateSeparators","enterSeparators","lineCount","lines","updateAxisLines","enterAxisLines","styles_1","includeTitle","ChartAxis","series_1","seriesMarker_1","PolarSeries","PolarSeriesMarker","ascending","NaN","compare_1","ascendingComparator","item","bisectLeft","list","comparator","lo","hi","mid","bisectRight","complexBisectLeft","complexBisectRight","Label","path2D_1","number_1","Sector","Path2D","_dirtyPath","_centerX","_centerY","_centerOffset","_innerRadius","_outerRadius","_startAngle","_endAngle","_angleOffset","dirtyPath","outerRadius","isPointInPath","point","transformPoint","isPointInStroke","isEqual","startAngle","angleOffset","midAngle","innerRadius","centerOffset","fullPie","sin","dirtyTransform","toContext","fillStroke","DropShadow","xOffset","yOffset","blur","linearScale_1","LinearScale","_nice","clamp","nice","interval_1","duration_1","day","CountableTimeInterval","date","setHours","days","setDate","getDate","tzMinuteDelta","getTimezoneOffset","getTime","durationMinute","durationDay","weekday","getDay","weeks","durationWeek","sunday","monday","tuesday","wednesday","thursday","friday","saturday","year","setMonth","years","setFullYear","getFullYear","palettes_1","dropShadow_1","ChartProxy","getChart","isDarkTheme","getFontColor","getAxisGridColor","getBackgroundColor","getChartPaddingOption","property","getShadowEnabled","getShadowProperty","destroyChart","processChartOptions","overriddenOptions","safeOptions","overridePalette","allowPaletteOverride","getPredefinedPalette","defaultFills","defaultStrokes","colors","fillsOverridden","strokesOverridden","customPalette","getChartOptions","getCustomPalette","getChartOption","expression","setChartOption","raiseChartOptionsChangedEvent","getSeriesOption","setSeriesOption","mappings","setTitleOption","exists","setChartPaddingOption","setShadowProperty","freeze","EVENT_CHART_OPTIONS_CHANGED","chartPalette","getChartPaletteName","getDefaultFontOptions","getDefaultDropShadowOptions","palettes","getDefaultChartOptions","fontOptions","paddingX","paddingY","highlightStyle","transformData","categoryKey","valueString","Date","MiniChart","tooltipName","chartTranslator","miniChartWithAxes_1","MiniStackedColumn","yScaleDomain","xScale","yScale","bars","rect","crisp","updateColors","bar","StackedColumn","MiniChartWithAxes","MiniStackedBar","xScaleDomain","StackedBar","miniChart_1","sector_1","MiniDoughnut","centerRadiusScaler","center","angles","sectors","sector","Doughnut","path_1","MiniStackedArea","pathData","total","yDatum","points","areas","area","Path","StackedArea","PolarChartProxy","AbstractSelectionHandle","changedCell","dragging","shouldDestroyOnEndDragging","dragService","addDragSource","eElement","onDragStart","onDragging","rangeController","autoScrollService","check","onDrag","onDragStop","onDragEnd","clearValues","ensureCleared","removeCssClass","preventRangeExtension","isDragging","getCellComp","cellComp","setCellComp","getCellRange","cellRange","setCellRange","getRangeStartRow","rangeStartRow","setRangeStartRow","row","getRangeEndRow","rangeEndRow","setRangeEndRow","getLastCellHovered","lastCellHovered","preventDefault","stopPropagation","cellHoverListener","rowRenderer","getGridCore","getRootGui","updateLastCellPositionHovered","cell","mouseEventService","getCellPositionForEvent","oldCellComp","eGui","getCellRanges","startRow","endRow","rowPositionUtils","isVisible","isAlive","removeListeners","masterDetailModule_1","MasterDetailModule","menuModule_1","MenuModule","menuItemComponent_1","MenuList","timerCount","removeChildFuncs","clearActiveItem","removeActiveItem","removeChildPopup","addMenuItems","menuItems","missing","menuItemOrString","addSeparator","menuItem","addItem","menuItemDef","cMenuItem","MenuItemComponent","EVENT_ITEM_SELECTED","subMenu","action","showChildMenu","mouseEvent","addGuiEventListener","mouseEnterItem","mouseLeaveItem","menuItemParams","disabled","activeMenuItemParams","activeMenuItem","addHoverForChildPopup","menuItemComp","timerCountCopy","shouldShow","showingThisMenu","subMenuParentDef","SEPARATOR_TEMPLATE","childMenu","ePopup","hidePopupFunc","popupService","addAsModalPopup","positionPopupForMenu","eventSource","selectedListener","func","richSelectModule_1","RichSelectModule","serverSideRowModelModule_1","ServerSideRowModelModule","__param","paramIndex","decorator","ServerSideBlock","pageNumber","parentRowNode","parentCache","level","groupLevel","rowGroupCols","leafGroup","usingTreeData","isTreeData","usingMasterDetail","isMasterDetail","groupColVo","groupField","rowGroupColumn","createNodeIdPrefix","logger","parts","rowNode","nodeIdPrefix","reverse","createIdForIndex","getNodeIdPrefix","getRow","displayRowIndex","bottomPointer","getStartRow","virtualRowCount","getVirtualRowCount","getEndRow","topPointer","midPointer","currentRowNode","getRowUsingLocalIndex","master","detailNode","childrenCache","isDisplayIndexInCache","setDataAndId","stub","idToUse","setRowHeight","getRowHeightForNode","getServerSideGroupKey","getServerSideGroupKeyFunc","isServerSideGroup","getIsServerSideGroupFunc","valueService","getValue","doOnce","isRowMasterFunc","getIsRowMasterFunc","setGroupDataIntoRowNode","setChildCountIntoRowNode","getChildCount","getChildCountFunc","allChildrenCount","groupDisplayCols","getGroupDisplayColumns","groupData","isRowGroupDisplayed","groupValue","loadFromDatasource","createLoadParams","datasource","getRows","createBlankRowNode","uiLevel","createGroupKeys","groupNode","pointer","isPixelInRange","pixel","blockTop","blockHeight","getRowBounds","extractRowBounds","rowTop","serverSideCache","error","getRowIndexAtPixel","clearRowTops","forEachRowNode","clearRowTop","setDisplayIndexes","displayIndexSeq","nextRowTop","displayIndexStart","peek","setRowIndex","next","setRowTop","displayIndexEnd","callback","groupKeys","request","valueCols","pivotCols","filterModel","sortModel","successCallback","pageLoaded","getVersion","failCallback","pageLoadFailed","isDisplayIndexInBlock","displayIndex","isBlockBefore","getDisplayIndexStart","getDisplayIndexEnd","getBlockHeight","getBlockTop","isGroupLevel","getGroupField","DefaultBlockSize","Qualifier","RowNodeBlock","setFilterModule_1","SetFilterModule","statusBarModule_1","StatusBarModule","viewportRowModelModule_1","ViewportRowModelModule","flipChartAxisDirection","thickness","_position","agGridEnterpriseModule_1","EnterpriseCoreModule","licenseManager_1","LicenseManager","md5_1","watermark_1","licenseManager_2","md5_2","watermark_2","moduleName","ModuleNames","beans","agStackComponents","componentName","componentClass","core_2","clipboardService_1","ClipboardService","dependantModules","registerGridCore","gridCore","rowModel","ROW_MODEL_TYPE_CLIENT_SIDE","clientSideRowModel","pasteFromClipboard","log","executeOnTempElement","textArea","focus","missingOrEmpty","parsedData","dataToArray","userFunc","getProcessDataFromClipboardFunc","doPasteOperation","cellsToFlash","updatedRowNodes","focusedCell","changedPath","singleCellInClipboard","isMoreThanOneCell","pasteIntoActiveRange","pasteStartingFromFocusedCell","pasteOperationFunc","EVENT_PASTE_START","getApi","getColumnApi","onlyChangedColumns","isAggregateOnlyChangedColumns","ChangedPath","getRootNode","focusedCellController","getFocusedCell","doAggregate","refreshCells","dispatchFlashCells","fireRowChanged","setFocusedCell","rowPinned","EVENT_PASTE_END","clipboardData","abortRepeatingPasteIntoRows","rangeSize","indexOffset","dataRowIndex","iterateActiveRanges","isLastRow","currentRowData","idx","isCellEditable","isSuppressPaste","newValue","processCellFromClipboardFunc","getProcessCellFromClipboardFunc","userProcessCell","EXPORT_TYPE_DRAG_COPY","setValue","SOURCE_PASTE","addParentNode","cellId","cellPositionUtils","createIdFromValues","columnsToPasteInto","getDisplayedColumnsStartingAt","pasteSingleValue","pasteMultipleValues","EXPORT_TYPE_CLIPBOARD","copyRangeDown","isEmpty","firstRowValues","firstRowValue","processCellForClipboardFunc","getProcessCellForClipboardFunc","rowNodes","isFullRowEdit","EVENT_ROW_VALUE_CHANGED","clipboardGridData","clipboardRowData","getRowNode","updateCellValue","cellNavigationService","getRowBelow","processedValue","copyToClipboard","includeHeaders","isCopyHeadersToClipboard","selectedRowsToCopy","selectionController","isSuppressCopyRowsToClipboard","copySelectedRangeToClipboard","copySelectedRowsToClipboard","isAnyCellFocused","copyFocusedCellToClipboard","onlyFirst","rowCallback","columnCallback","cellRanges","iterateActiveRange","isLastRange","lastRow","rangeIndex","sameRow","deliminator","getClipboardDeliminator","userProcessHeader","getProcessHeaderForClipboardFunc","copyDataToClipboard","headerValue","EVENT_FLASH_CELLS","columnKeys","skipHeader","skipFooters","suppressQuotes","columnSeparator","onlySelected","processCellCallback","processHeaderCallback","csvCreator","getDataAsCsv","userProvidedFunc","getSendToClipboardFunc","execCommand","callbackNow","callbackAfter","eTempInput","guiRoot","err","strData","arrMatches","delimiter","objPattern","arrData","atFirstRow","exec","strMatchedDelimiter","strMatchedValue","lastItem","startRangeIndex","endRangeIndex","ranges","Optional","primaryColsHeaderPanel_1","primaryColsListPanel_1","columnToolPanel_1","primaryColsPanel_1","row_grouping_1","side_bar_1","ColumnToolPanelModule","PrimaryColsListPanel","PrimaryColsPanel","userComponents","ColumnToolPanel","RowGroupingModule","SideBarModule","toolPanelColumnGroupComp_1","toolPanelColumnComp_1","selectAllChecked","getColumnCompId","columnGroupChild","childIds","getLeafColumns","allowDragging","suppressSyncLayoutWithGrid","EVENT_COLUMN_MOVED","onColumnsChanged","EVENT_COLUMN_VALUE_CHANGED","EVENT_COLUMN_VISIBLE","fireSelectionChangedEvent","expandGroupsByDefault","contractColumnSelection","pivotModeActive","syncColumnLayout","buildTreeFromProvidedColumnDefs","colDefService","setColumnLayout","destroyColumnComps","columnTree","groupsExist","recursivelyAddComps","recursivelySetVisibility","notifyListeners","getPrimaryColumnTree","dept","recursivelyAddGroupComps","addColumnComps","columnGroup","newDept","suppressColumnsToolPanel","renderedGroup","ToolPanelColumnGroupComp","onGroupExpanded","filterResults","columnComps","getChildren","columnComp","ToolPanelColumnComp","fireGroupExpandedEvent","doSetExpandedAll","iterateObject","renderedItem","isExpandable","setExpanded","setGroupsExpanded","groupIds","expandedGroupIds","suppliedGroupId","unrecognisedGroupIds","getExpandState","expandedCount","notExpandedCount","recursiveFunc","items","compId","isExpanded","groupChildren","doSetSelectedAll","updateSelections","onSelectAllChanged","colsToChange","getPrimaryColumns","lockVisible","hide","setColumnsVisible","filteredCols_1","passesFilter","selectionState","getSelectionState","allPrimaryColumns","getAllPrimaryColumns","checkedCount","uncheckedCount","isAllowValue","isValueActive","setFilterText","filterColumns","onColumnStateChanged","columnCompId","getDisplayName","recursivelyCheckFilter","parentPasses","atLeastOneChildPassed","groupPasses_1","childPasses","filterPasses","parentGroupsOpen","childrenOpen","columnDept","expandByDefault","expandedCallback","getFilterResults","processingColumnStateChange","getFilterResultsCallback","eDragHandle","cbSelect","getDisplayNameForOriginalColumnGroup","eLabel","setupExpandContract","onLabelClicked","AgCheckbox","EVENT_CHANGED","onCheckboxChanged","setOpenClosedIcons","setupDragging","addVisibilityListenersToAllChildren","CssClassApplier","addToolPanelClassesFromColDef","EVENT_VISIBLE_CHANGED","EVENT_VALUE_CHANGED","EVENT_PIVOT_CHANGED","EVENT_ROW_GROUP_CHANGED","dragSource","DragSourceType","ToolPanel","dragItemName","getDragItem","createDragItem","removeDragSource","visibleState","eGroupClosedIcon","createIcon","eGroupOpenedIcon","onExpandOrContractClicked","touchListener","TouchListener","eColumnGroupIcons","EVENT_TAP","nextState","onChangeCommon","childColumns","actionCheckedReduce","actionUnCheckedReduce","allowedColumns","filterResults_1","visibleColumns","columnsToUnPivot","columnsToUnValue","columnsToUnGroup","removePivotColumns","removeRowGroupColumns","removeValueColumns","columnsToAggregate","columnsToGroup","columnsToPivot","isAnyFunctionActive","addValueColumns","addRowGroupColumns","addPivotColumns","selectedValue","workOutSelectedValue","readOnlyValue","workOutReadOnlyValue","setReadOnly","leafColumns","len","hidden","ignoredChildCount","ignore","isColumnVisible","colsThatCanAction","isAnyFunctionAllowed","pivoted","grouped","aggregated","folderOpen","isReadOnly","toggle","isSelected","isSelectable","displayNameSanitised","indent","actionCheckedPivotMode","actionUnCheckedPivotMode","setColumnVisible","functionPassive","copyOfPivotColumns","removePivotColumn","copyOfValueColumns","getValueColumns","event_2","EVENT_COLUMN_VALUE_CHANGE_REQUEST","removeValueColumn","copyOfRowGroupColumns","event_3","removeRowGroupColumn","removeFromArray","event_4","addValueColumn","event_5","addRowGroupColumn","event_6","addPivotColumn","checkboxReadOnly","anyFunctionActive","functionsReadOnly","noFunctionsAllowed","checkboxPassive","setPassive","pivotModePanel_1","initialised","childDestroyFuncs","setVisible","defaultParams","suppressSideButtons","suppressPivotMode","suppressRowGroups","suppressValues","suppressPivots","isRowGroupingModuleLoaded","pivotModePanel","PivotModePanel","addComponent","primaryColsPanel","createComponent","rowGroupDropZonePanel","valuesDropZonePanel","ValuesDropZonePanel","pivotDropZonePanel","setLastVisible","setPivotModeSectionVisible","firstChild","setRowGroupsSectionVisible","setValuesSectionVisible","setPivotSectionVisible","querySelectorAll","columnDrop","lastVisible","ModuleRegistry","assertRegistered","expandColumnGroups","expandGroups","collapseColumnGroups","collapseGroups","component","destroyChildren","cbPivotMode","setLabel","onBtPivotMode","onPivotModeChanged","setPivotMode","refreshHeader","aggregationStage_1","groupStage_1","pivotColDefService_1","pivotStage_1","aggFuncService_1","gridHeaderDropZones_1","AggregationStage","GroupStage","PivotColDefService","PivotStage","AggFuncService","GridHeaderDropZones","execute","getNodeChildDetailsFunc","noValueColumns","noUserAgg","getGroupRowAggNodesFunc","changedPathActive","isActive","aggDetails","createAggDetails","recursivelyCreateAggData","measureColumns","pivotColumns","valueColumns","forEachChangedNodeDepthFirst","hasChildren","aggData","setAggData","notPivoting","isSuppressAggAtRootLevel","aggregateRowNode","aggResult","measureColumnsMissing","pivotColumnsMissing","childrenAfterFilter","aggregateRowNodeUsingValuesOnly","aggregateRowNodeUsingValuesAndPivot","sibling","pivotColumnDefs","pivotStage","getPivotColumnDefs","v","pivotTotalColumnIds","valueColDef","pivotKeys","valueColumn","pivotValueColumn","getValuesFromMappedSet","childrenMapped","getValuesPivotNonLeaf","aggregateValues","getAggFunc","totalColDef","aggResults","changedValueColumns","getValueColumnsForNode","notChangedValueColumns","getNotValueColumnsForNode","values2d","getValuesNormal","oldValues","mappedSet","mapPointer","valueColumnCount","rowCount","childNode","aggFuncOrString","aggFunction","aggFuncService","groupIdSequence","NumberSequence","getDataPath","getDataPathFunc","details","createGroupingDetails","transaction","handleTransaction","afterColsChanged","afterColumnsChanged","shotgunResetEverything","sortGroupsWithComparator","rootNode","selectableService","updateSelectableAfterGrouping","rowNodeTransaction","rowNodeOrder","groupedCols","usingTransaction","includeParents","isSuppressParentsInRowNodes","isGroupSuppressRow","getGroupDefaultExpanded","groupedColCount","tran","add","insertNodes","moveNodesInWrongPath","removeNodes","sortChildren","sortRowNodesByOrder","childrenAfterGroup","getDefaultGroupSortComparator","recursiveSort","sort","getExistingPathForNode","res","childNodes","infoToKeyMapper","oldPath","newPath","getGroupInfo","compareArrays","moveNode","removeNodesInStages","insertOneNode","newParent","leafRowNodes","removeNodesFromParents","postRemoveCreateFillerNodes","postRemoveRemoveEmptyGroups","forEachParentGroup","nodesToRemove","batchRemover","BatchRemover","nodeToRemove","removeFromParent","removeFromAllLeafChildren","flush","newGroupNode_1","findParentForNode","allLeafChildren","checkAgain","_loop_1","mapKey","getChildrenMappedKey","isEmptyRowGroupNode","groupShouldBeRemoved","removeFromChildrenAfterGroup","addToParent","areGroupColsEqual","d1","d2","skipStage","oldGroupingDetails","newRowNodes","isMove","parentGroup","swapGroupWithUserNode","nextNode","groupInfo","getOrCreateNextNode","fillerGroup","userGroup","rowGroupIndex","createGroup","RowNode","setAllChildrenCount","getGroupInfoFromCallback","getGroupInfoFromGroupColumns","groupCol","getKeyForNode","keyExists","allSets","allParents","getSet","nodeDetails","createPivotColumnDefs","uniqueValues","pivotColumnGroupDefs","levelsDeep","columnIdSequence","recursivelyAddGroup","addRowGroupTotals","addPivotTotalsToGroups","cloneObject","parentChildren","primaryPivotColumns","newPivotKeys","columnGroupShow","valueGroup_1","colDef_1","createColDef","measureColumn","columnName","userComparator","pivotComparator","headerNameComparator","getPivotColumnGroupTotals","insertAfter","aggFuncs","valueCol","sameAggFuncs","recursivelyAddPivotTotal","colIds","grp","childColIds","aggFunc","getPivotRowTotals","extractColIdsForValueColumn","this_1","createRowGroupTotal","valueGroup","colDefToCopy","executePivotOn","executePivotOff","aggregationColumnsHashLastTime","isSecondaryColumnsPresent","setSecondaryColumns","setInactive","bucketUpRowNodes","uniqueValuesChanged","setUniqueValues","aggregationColumns","aggregationColumnsHash","aggregationFuncsHash","aggregationColumnsChanged","aggregationFuncsChanged","aggregationFuncsHashLastTime","pivotColDefService","newValues","JSON","stringify","recursivelySearchForLeafNodes","bucketRowNode","bucketChildren","pivotIndex","mappedChildren","pivotColumn","result_1","aggFuncsMap","AggFuncService_1","initialiseWithDefaultAggregations","addAggFuncs","getAggFuncs","AGG_SUM","aggSum","AGG_FIRST","aggFirst","AGG_LAST","aggLast","AGG_MIN","aggMin","AGG_MAX","aggMax","AGG_COUNT","aggCount","AGG_AVG","aggAvg","getDefaultAggFunc","allKeys","getFuncNames","sumInKeysList","sumInFuncs","existsAndNotEmpty","addAggFunc","userAllowedFuncs","allowedAggFuncs","input","sum","toNumber","itemIsGroupResult","rowGroupDropZonePanel_1","pivotDropZonePanel_1","setGui","createNorthPanel","onRowGroupChanged","topPanelGui","dropPanelVisibleListener","onDropPanelVisible","rowGroupComp","pivotComp","EVENT_DISPLAYED_CHANGED","bothDisplayed","isDisplayed","rowGroupPanelShow","getRowGroupPanelShow","ALWAYS","ONLY_WHEN_GROUPING","grouping","isRowGroupEmpty","DropZoneColumnComp","dragSourceDropTarget","ghost","popupShowing","btRemove","setupComponents","setTextValue","setupRemove","onShowAggFuncSelection","agEvent","EVENT_COLUMN_REMOVE","displayValue","aggFuncString","displayValueSanitised","eText","virtualList","VirtualList","setModel","getRowCount","clientWidth","hidePopup","setComponentCreator","createAggSelect","positionPopupUnderComponent","keepWithinBounds","aggFuncStringTranslated","AggItemComp","EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST","setColumnAggFunc","itemSelected","ICON_AGGREGATE","setValueColumns","primaryColsHeaderPanel","hideFilter","hideSelect","primaryColsListPanel","onSelectionChange","onExpandAll","onCollapseAll","onSelectAll","onUnselectAll","horizontalResizeComp_1","sideBarComp_1","sideBarButtonsComp_1","toolPanelColDefService_1","SideBarComp","toolPanelWrapper_1","toolPanelWrappers","sideBarButtonsComp","onToolPanelButtonClicked","setSideBarDef","openedItem","openToolPanel","clearDownUi","destroyToolPanelWrappers","sideBar","getSideBar","sideBarExists","toolPanels","shouldDisplaySideBar","hiddenByDefault","setupToolPanels","setSideBarPosition","defaultToolPanel","isLeft","resizerSide","wrapper","setResizerSizerSide","defs","toolPanel","ToolPanelWrapper","setToolPanelDef","currentlyOpenedKey","raiseToolPanelVisibleEvent","getToolPanelInstance","toolPanelWrapper","EVENT_TOOL_PANEL_VISIBLE_CHANGED","close","isToolPanelShowing","activeToolPanel","reset","componentPromise","userComponentFactory","newToolPanelComponent","setToolPanelComponent","setupResize","resizeBar","compInstance","toolPanelCompInstance","side","excelXlsxFactory_1","excelXmlFactory_1","excelCreator_1","csv_export_2","ExcelCreator","ExcelXmlFactory","ExcelXlsxFactory","GridSerializer","ZipContainer","XmlFactory","Downloader","CsvCreator","CsvExportModule","contentTypes_1","office_1","sharedStrings_1","workbook_1","worksheet_1","relationships_1","sharedStrings","createSharedStrings","createXmlPart","xmlFactory","createHeader","encoding","standalone","createXml","styles","worksheets","sheetNames","worksheet","registerStyles","createWorksheet","createCore","createContentTypes","createRels","rs","Id","Type","Target","createStylesheet","createTheme","createWorkbook","createWorkbookRels","coreFactory","jsonDate","toJSON","cp","dc","dcterms","dcmitype","xsi","textNode","contentType_1","contentTypesFactory","Extension","ContentType","PartName","themeElements_1","officeTheme","colorScheme_1","fontScheme_1","formatScheme_1","themeElements","getColorChildren","props","lastClr","colorScheme","getFont","typeface","script","panose","fontScheme","utf8_encode","getPropertyVal","getGs","schemeColor","satMod","lumMod","tint","shade","getSolidFill","getGradFill","rotWithShape","gs1","gs2","gs3","lin","ang","scaled","getLine","w","cap","cmpd","algn","lim","getEffectStyle","blurRad","dist","dir","formatScheme","buildSharedString","strings","uniqueCount","numberFormat_1","numberFormatsFactory","numberFormats","font_1","fontsFactory","fonts","fill_1","fillsFactory","patternType","fgTheme","fgTint","fgRgb","bgRgb","bgIndexed","pf","indexed","border_1","bordersFactory","borders","xf_1","cellStylesXfsFactory","convertLegacyHorizontalAlignment","Automatic","Center","Fill","Justify","CenterAcrossSelection","Distributed","JustifyDistributed","convertLegacyVerticalAlignment","getReadingOrderId","readingOrder","alignmentFactory","rotate","shrinkToFit","vertical","wrapText","textRotation","locked","protected","hideFormula","cellXfsFactory","cellStyle_1","cellStylesFactory","cellStyles","cellStyle","builtinId","sheets_1","workbookFactory","names","sheet_1","sheetsFactory","sheetId","columnFactory","bestFit","excelWidth","customWidth","ceil","getExcelCellWidth","cell_1","rowFactory","collapsed","mergeMap","posCounter","excelPos","addEmptyCells","ht","customHeight","customFormat","cellFactory","convertedType","toUpperCase","convertLegacyType","obj","getStyleId","relationship_1","relationshipsFactory","excelWorkbook_1","documentProperties_1","borders_1","interior_1","style_1","excelXmlHeader","docProps","eWorkbook","wb","workbook","boolean","docProperties","stylesXmlElement","it","styleXmlElement","styleProperties","compose","addProperty","interior","o","ss","ws","Name","Width","MergeAcross","StyleID","Horizontal","Indent","ReadingOrder","Rotate","ShrinkToFit","VerticalText","verticalText","WrapText","borderBottom","borderLeft","borderRight","borderTop","Position","LineStyle","lineStyle","Weight","Color","Bold","FontName","fontName","Italic","Outline","Shadow","Size","StrikeThrough","strikeThrough","Underline","VerticalAlign","verticalAlign","CharSet","charSet","Family","Pattern","pattern","PatternColor","patternColor","Protected","HideFormula","Format","ID","excelXmlSerializingSession_1","excelXlsxSerializingSession_1","downloader","gridSerializer","exportDataAsExcel","setExportMode","exportMode","export","getDataAsExcelXml","getData","getMimeType","getExportMode","getDefaultFileName","getDefaultFileExtension","createSerializingSession","isXlsx","xlsxFactory","excelXmlFactory","gridOptions","ExcelXlsxSerializingSession","rowType","colIndex","applicableStyles","stylingService","processAllCellClasses","$scope","isExportSuppressed","isSuppressExcelExport","packageFile","zipContainer","addFolders","addFile","getContent","BaseCreator","stringList","stringMap","getStringPosition","filtersToolPanelHeaderPanel_1","filtersToolPanelListPanel_1","filtersToolPanel_1","FiltersToolPanelListPanel","FiltersToolPanel","toolPanelFilterComp_1","toolPanelFilterGroupComp_1","filterGroupComps","refreshFilters","syncFilterLayout","toolPanelColDefService","setFiltersLayout","destroyFilters","setFirstAndLastVisible","searchFilterText","searchFilters","fireExpandedEvent","flatten","recursivelyAddFilterGroupComps","shouldDisplayFilter","hideFilterCompHeader","filterComp","filterGroupComp","ToolPanelFilterGroupComp","filtersExistInChildren","suppressFiltersToolPanel","newDepth","childFilterComps","expandFilterGroups","updatedGroupIds","updateGroupExpandState","filterGroup","getFilterGroupId","isColumnGroup","expandFilters","updatedColIds","anyChildrenChanged_1","updateFilterExpandState","unrecognisedColIds","updateExpandCounts","performFilterSearch","searchFilter","firstVisible","groupName","recursivelySearch","filterItem","groupNamePasses","getFilterGroupName","alreadyPassed","hideGroup","hideGroupItem","anyChildPasses","containsClass","firstIdx","lastIdx","setGroupTitle","setAlignItems","addTopLevelColumnGroupExpandListener","addFilterChangedListeners","filterGroupName","hideItem","toggleGroupExpand","getColumnGroupName","getColumnName","setTitle","filtersToolPanelHeaderPanel","filtersToolPanelListPanel","hideExpand","hideSearch","onSearchChanged","setFilterLayout","collapseFilterGroups","collapseFilters","chartService_1","chartTranslator_1","range_selection_1","ChartService","ChartTranslator","RangeSelectionModule","gridChartComp_1","activeCharts","Set","activeChartComps","getChartModels","models","getChartModel","createChartFromCurrentRange","GroupedColumn","selectedRange","getSelectedRange","createRangeChart","createCellRangeFromCellRangeParams","suppressChartRanges","chartContainer","createPivotChart","chartAllRangeParams","getAllDisplayedColumns","chartPaletteName","pivotChart","createChartContainerFunc","getCreateChartContainerFunc","insideDialog","chartComp","GridChartComp","chartRef","createChartRef","environment","getTheme","contains","EVENT_DESTROYED","delete","has","destroyAllActiveCharts","PreDestroy","chartMenu_1","chartController_1","barChartProxy_1","areaChartProxy_1","lineChartProxy_1","pieChartProxy_1","doughnutChartProxy_1","scatterChartProxy_1","chartController","getPaletteName","getChartComponentsWrapper","eChartComponentsWrapper","getDockedContainer","eDockedContainer","getCurrentChartType","modelParams","model","ChartController","addDialog","addResizeListener","addMenu","setActiveChartCellRange","EVENT_CHART_UPDATED","chartMenu","ChartMenu","EVENT_DOWNLOAD_CHART","downloadChart","chartProxy","processChartOptionsFunc","getProcessChartOptionsFunc","categorySelected","getSelectedDimension","getChartType","isGrouping","isThemeDark","eChart","getDocument","chartGroupingActive","createChartProxy","setChartProxy","NormalizedColumn","GroupedBar","NormalizedBar","BarChartProxy","Pie","PieChartProxy","DoughnutChartProxy","Area","NormalizedArea","AreaChartProxy","LineChartProxy","Scatter","chartDialog","AgDialog","resizable","movable","maximizable","centered","closable","setParentComponent","shouldRecreateChart","updateChart","chartTypeChanged","groupingChanged","slideDockedOut","minWidth","slideDockedIn","getSelectedValueColState","handleEmptyChart","selectedDimension","chartUpdateParams","pivotModeDisabled","isPivotChart","minFieldsRequired","isActiveXYChart","isEmptyChart","eEmpty","refreshCanvasSize","eChartWrapper","getInnerHeight","getInnerWidth","observeResizeFunc","resizeObserverService","observeResize","offsetParent","focusEvent","relatedTarget","setChartRange","tabbedChartMenu_1","buttons","chartSettings","showMenu","chartData","chartFormat","chartUnlink","toggleDetached","chartDownload","saveChart","tabs","createButtons","getToolbarOptions","tabOptions","toolbarItemsFunc","getChartToolbarItemsFunc","defaultItems","option","ignoreOptions","active","detachChartRange","button","buttonConfig","buttonEl","createMenu","defaultTab","getParentComponent","dockedContainer","menuPanel","AgPanel","chartMenuPanelWidth","hideTitleBar","tabbedMenu","TabbedChartMenu","controller","panels","Promise","setBodyComponent","showTab","hideMenu","slideDockedContainer","getWidth","tabName","tab","chartDataPanel_1","chartFormattingPanel_1","chartSettingsPanel_1","chartIcons","currentChartType","panel","panelType","createTab","getPanelClass","tabbedLayout","TabbedLayout","cssClass","ChildClass","eWrapperDiv","titleEl","bodyPromise","resolve","getMinDimensions","updateCurrentChartType","tabItem","showItem","parentComponent","TAB_DATA","ChartDataPanel","TAB_FORMAT","ChartFormattingPanel","ChartSettingsPanel","EVENT_TAB_SELECTED","TAB_MAIN","updatePanels","clearComponents","getColStateForMenu","dimensionCols","areEqual","getSeriesLabel_1","generateGetSeriesLabel","createCategoriesGroupComponent","createSeriesGroupComponent","eDiv","addChangeListener","columnState","AgAbstractField","updateForPanelChange","categoriesGroupComp","AgGroupComponent","getCategoryGroupTitle","suppressEnabledCheckbox","suppressOpenCloseIcons","inputName","getCompId","wireDependentBean","AgRadioButton","setInputName","seriesGroupComp","getSeriesGroupTitle","pairedModeToggle","AgToggleButton","chartProxy_1","getChartProxy","setLabelAlignment","setLabelWidth","setInputWidth","onValueChange","updateForGridChange","getSeriesLabel","addDragHandle","dropTarget","getContainer","isInterestedIn","addDropTarget","ChartPanel","onDragStopped","insertIndex","isInPairedMode","selectedValuesCount","indexToAxisLabel","axisLabel","escapedLabel","draggingEvent","checkInsertIndex","dragItem","order","vDirection","newIndex","clientY","VerticalDirection","Down","changed","ChartDatasource","extractRowsFromGridRowModel","aggregateRowsByDimension","extractedRowData","columnNames","groupNodeIndexes","groupsToRemove","modelLastRow","gridRowModel","numRows","getGridColumn","valueObject","getGroupLabels","multiCategories","groupKey","columnNamesArr","groupIndexesToRemove_1","_1","dataFromGrid","lastColId","dataAggregated","currentMap","groupItem_1","__children","groupItem","dataToAgg","aggregationStage","initialLabel","BeanStub","legendPanel_1","barSeriesPanel_1","axisPanel_1","lineSeriesPanel_1","pieSeriesPanel_1","chartPanel_1","areaSeriesPanel_1","scatterSeriesPanel_1","createPanels","destroyPanels","LegendPanel","AxisPanel","BarSeriesPanel","PieSeriesPanel","LineSeriesPanel","ScatterSeriesPanel","AreaSeriesPanel","fontPanel_1","activePanels","initLegendGroup","initLegendPosition","initLegendPadding","initLegendItems","initLabelPanel","hideEnabledCheckbox","setEnabled","onEnableChange","legendPositionSelect","addOptions","legendPaddingSlider","setTextFieldWidth","setMaxValue","initSlider","maxValue","markerSizeSlider","markerStrokeSlider","markerPaddingSlider","itemPaddingXSlider","itemPaddingYSlider","initialFont","setFont","fontPanelComp","FontPanel","destroyActivePanels","shadowPanel_1","seriesGroup","initSeriesTooltips","initSeriesStrokeWidth","initOpacity","initShadowPanel","seriesTooltipsToggle","seriesStrokeWidthSlider","seriesLineOpacitySlider","setStep","seriesFillOpacitySlider","labelPanelComp","shadowPanelComp","ShadowPanel","axisTicksPanel_1","initAxis","initAxisTicks","initAxisLabels","axisGroup","axisColorInput","getAxisProperty","newColor","setAxisProperty","axisLineWidthSlider","axisTicksComp","AxisTicksPanel","addAdditionalLabelComps","createAngleComp","initialValue","updateFunc","rotationInput","AgAngleSelect","addCompToPanel","degreesSymbol","createLabelUpdateFunc","axisPosition","xRotationLabel","yRotationLabel","labelPaddingSlider","AgSlider","axisTicksGroup","hideOpenCloseIcons","axisTicksColorPicker","initInput","axisTicksWidthSlider","axisTicksSizeSlider","polyRoots_1","bezierCoefficients","P1","P2","P3","P4","segmentIntersection","ax1","ay1","ax2","ay2","bx1","by1","bx2","by2","ua","ub","cubicSegmentIntersections","px1","py1","px2","py2","px3","py3","px4","py4","intersections","A","B","C","bx","by","roots","cubicRoots","tt","ttt","sign","isNaN","linearRoot","quadraticRoots","D","rD","sqrt","t1","t2","Q","R","S","pow","T","Im","t_1","theta","acos","thirdA","twoSqrtQ","t3","markersPanel_1","initSeriesGroup","initSeriesLineWidth","initMarkersPanel","seriesLineWidthSlider","markersPanelComp","MarkersPanel","_parent","_pixelRatio","tempCanvas","userSelect","updatePixelRatio","_width","_height","_canvas","toImage","img","src","toDataURL","trim","dataUrl","navigator","msSaveOrOpenBlob","binary","atob","array","blob","Blob","Uint8Array","href","display","click","ratio","pixelRatio","devicePixelRatio","overrides","makeHdpiOverrides","name_1","logicalWidth","logicalHeight","resetTransform","tempContext","drawImage","_textMeasuringContext","_svgText","svg","createElementNS","visibility","svgText","_has","textMetrics","textMeasuringContext","measureText","actualBoundingBoxDescent","getTransform","flicker","safari","getTextSize","metrics","actualBoundingBoxAscent","measureSvgText","cache","textSizeCache","fontCache","size_1","textContent","getBBox","$save","$restore","setTransform","f","$setTransform","Orientation","markerLabel_1","square_1","itemSelection","oldSize","orientation","itemPaddingX","itemPaddingY","markerPadding","MarkerLabel","defaults","markerSize","markerStrokeWidth","labelFontStyle","labelFontWeight","labelFontSize","labelFontFamily","_size","markerType","updateSelection","itemMarkerType","itemMarkerName","enterSelection","Square","itemCount","bboxes","markerLabel","labelText","itemHeight","paddedItemsWidth","paddedItemsHeight","columnCount","itemsWidth","itemsHeight","columnCount_1","startX","startY","markerFill","markerStroke","markerFillOpacity","fillOpacity","markerStrokeOpacity","strokeOpacity","_marker","_markerSize","_padding","labelFont","TreeNode","subtreeLeft","subtreeRight","prelim","mod","ancestor","change","shift","getLeftSibling","getLeftmostSibling","nextLeft","thread","nextRight","getSiblings","moveSubtree","wm","wp","vim","defaultAncestor","firstWalk","distance","defaultAncestor_1","vop","vip","vom","sip","sop","sim","som","apportion","executeShifts","midpoint","leftSibling","pad","pathParts","lastPartIndex","pathPart","partIndex","existingNode","isNotLeaf","insertTick","Dimensions","xy","TreeLayout","secondWalk","m","thirdWalk","dimensions","leafNodes","nonLeafNodes","shiftX","shiftY","flipX","xSteps","ySteps","scalingX","scalingY","existingSpacingX","existingSpacingY","screenDimensions","polarSeries_1","PolarChart","continuousScale_1","node_1","marker_1","LineSeries","xDomain","yDomain","xData","yData","CartesianSeriesMarker","_xKey","_xName","_yKey","_yName","_fill","_stroke","_strokeWidth","_fillOpacity","_strokeOpacity","lineJoin","pointerEvents","PointerEvents","onMarkerTypeChange","isContinuousX","highlightedNode","groupSelectionData","linePath","xDatum","seriesDatum","updateGroupSelection","updateGroups","enterGroups","highlightFill","highlightStroke","markerFormatter","isHighlightedNode","markerFormat","highlighted","nodeDatum","tooltipRenderer","titleString","xValue","yValue","msA","msB","setTime","value_1","nb","na","ScatterSeries","sizeData","sizeScale","titleHtml","contentHtml","ColumnSeriesNodeTag","label_1","ColumnSeriesLabel","ColumnSeries","rectGroup","textGroup","rectSelection","textSelection","yKeyEnabled","groupScale","_yKeys","_yNames","_grouped","_normalizedTo","absValue","_shadow","yKeys","keysFound","ySums","sumPositiveValues","normalizedTo","yMin","yMax","stackValues","selectionData","generateSelectionData","updateRectSelection","updateTextSelection","prev","curr","columnX","bottomY","yValueIsNumber","updateRects","enterRects","fillShadow","labelEnabled","updateTexts","enterTexts","yNames","yKeyIndex","fills_1","strokes_1","enabledYKeys","AreaSeries","areaGroup","strokeGroup","markerGroup","areaSelection","strokeSelection","markerSelection","_fills","_strokes","stack","areaSelectionData","markerSelectionData","updateAreaSelection","updateStrokeSelection","updateMarkerSelection","areaPoints","updateAreas","enterAreas","shape","updateStrokes","enterStrokes","lineCap","updateMarkers","enterMarkers","PieSeriesNodeTag","color_1","PieSeriesLabel","minAngle","PieSeries","radiusScale","angleScale","angle","dataEnabled","_calloutColors","_calloutStrokeWidth","_calloutLength","_labelOffset","_labelFontSize","_labelFontFamily","_labelColor","_angleKey","_angleName","_rotation","_outerRadiusOffset","_innerRadiusOffset","_labelFontStyle","_labelFontWeight","_radiusKey","_radiusName","_labelKey","_labelName","fromString","darker","toHexString","calloutColors","angleData","angleKey","angleDataTotal","angleDataRatios","labelData","radiusKey","useRadiusKey","innerRadiusOffset","radiusData","radii","maxDatum_1","halfPi","datumIndex","midCos","midSin","labelMinAngle","labelVisible","midAngle180","normalizeAngle180","quadrantStart","outerRadiusOffset","Callout","minOuterRadius","outerRadii","centerOffsets","calloutLength","calloutStrokeWidth","_d","offset_1","fontStyle_1","fontWeight_1","fontSize_1","fontFamily_1","color_2","labelRadius","angleName","radiusName","g","str","fromHexString","nameToHex","fromRgbaString","hexRe","parseInt","shortHexRe","rgbRe","rgbaRe","fromArray","arr","fromHSB","h","alpha","HSBtoRGB","padHex","toRgbaString","components","toHSB","RGBtoHSB","H","rc","gc","bc","derive","hueShift","saturationFactor","brightnessFactor","opacityFactor","hsb","rgba","brighter","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","Caption","cartesianChart_1","GroupedCategoryChart","domains","isNumericX","domain_1","Cross","Diamond","Plus","hs","Triangle","convertToMap","millisecond_1","second_1","minute_1","hour_1","day_1","week_1","month_1","year_1","bisect_1","defaultLocale_1","TimeScale","month","week","hour","minute","millisecond","locale","tickIntervals","durationSecond","durationHour","durationMonth","durationYear","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","_domain","defaultTickFormat","tickInterval","interval","stop","step","tickCount","tickStep","setDomain","invert","t0","specifier","i0","i1","x0","milliseconds","getMilliseconds","seconds","getSeconds","minutes","getMinutes","hours","getHours","months","getMonth","locale_1","setDefaultLocale","definition","dateTime","time","periods","shortDays","shortMonths","utcDay_1","utcYear_1","utcWeek_1","localDate","M","L","utcDate","UTC","setUTCFullYear","formatLookup","newYear","percentCharCode","numberRe","percentRe","requoteRe","requote","formatRe","pads","string","timeLocale","lDateTime","lDate","lTime","lPeriods","lWeekdays","lShortWeekdays","lMonths","lShortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMilliseconds","formatUnixTimestamp","formatUnixTimestampSeconds","dayOfWeek","yearStart","z","formatLiteralPercent","utcFormats","getUTCDay","getUTCMonth","formatUTCDayOfMonth","formatUTCMilliseconds","getUTCHours","getUTCMinutes","getUTCSeconds","utcThursday","utcMonday","getUTCFullYear","parses","parseSpecifier","parseDayOfMonth","parseFloat","parseHour24","u","U","V","W","Z","newParse","newDate","getUTCDate","newFormat","pad_1","code","char","getUTCMilliseconds","utcFormat","utcParse","utcDay","setUTCHours","setUTCDate","utcYear","setUTCMonth","utcSunday","utcTuesday","utcWednesday","utcFriday","utcSaturday","calloutPanel_1","initGroup","calloutPanelComp","CalloutPanel","initCalloutOptions","calloutGroup","calloutLengthSlider","calloutStrokeWidthSlider","labelOffsetSlider","paddingPanel_1","backgroundPanel_1","initTitles","initPaddingPanel","initBackgroundPanel","chartGroup","titleInput","paddingPanelComp","PaddingPanel","backgroundPanelComp","BackgroundPanel","initChartPaddingItems","chartPaddingGroup","paddingTopSlider","paddingRightSlider","paddingBottomSlider","paddingLeftSlider","initColorPicker","colorPicker","miniChartsContainer_1","miniCharts","cardItems","resetPalettes","ePrevBtn","eNextBtn","getPalettes","activePalette","paletteNames","eCardSelector","destroyMiniCharts","palette","isActivePalette","miniChartsContainer","MiniChartsContainer","eMiniChartsContainer","addCardLink","refreshSelected","eNavBar","paletteName","link","isAnimating","setActivePalette","getPrev","getNext","animationDirection","paletteIndex","radioCssClass","currentPalette","currentGui","futurePalette","futureGui","multiplier","final","getAbsoluteWidth","setChartPaletteName","miniCharts_1","wrappers","chartGroups","MiniColumn","MiniNormalizedColumn","barGroup","MiniBar","MiniNormalizedBar","pieGroup","MiniPie","lineGroup","MiniLine","scatterGroup","MiniScatter","MiniBubble","MiniArea","MiniNormalizedArea","groupComponent","MiniClass","miniWrapper","setChartType","__export","clipRect_1","clipRect","ClipRect","miniStackedArea_1","barSeries","getSeriesDefaults","isColumnChart","builderFunction","updateLabelRotation","isGrouped","isNormalized","areaSeries","updateAreaChart","fieldIds","lineSeries","categoryIsDate","createPieChart","existingSeriesId","pieSeriesField","pieSeries","callout","minRequiredAngle","createDoughnutChart","doughnutChart","seriesMap","ChartTranslator_1","toTranslate","DEFAULT_TRANSLATIONS","pivotChartTitle","rangeChartTitle","settings","categories","xyValues","xRotation","yRotation","maxSize","offsets","tooltips","markers","lineWidth","normal","boldItalic","predefined","groupedColumnTooltip","stackedColumnTooltip","normalizedColumnTooltip","groupedBarTooltip","stackedBarTooltip","normalizedBarTooltip","pieTooltip","doughnutTooltip","lineTooltip","groupedAreaTooltip","stackedAreaTooltip","normalizedAreaTooltip","scatterTooltip","bubbleTooltip","noDataToChart","pivotChartRequiresPivotMode","rangeController_1","fillHandle_1","rangeHandle_1","RangeController","FillHandle","RangeHandle","bodyScrollListener","onBodyScroll","registerGridComp","gridPanel","AutoScrollService","removeAllCellRanges","EVENT_COLUMN_GROUP_OPENED","refreshLastRangeStart","EVENT_COLUMN_PINNED","onColumnVisibleChange","beforeCols","dispatchChangedEvent","lastRange","refreshRangeStart","isContiguousRange","rangeColumns","allColumns","allPositions","pinnedRowModel","getPinnedTopRowCount","PINNED_TOP","pinnedBottomRowCount","getPinnedBottomRowCount","PINNED_BOTTOM","setRangeToCell","appendRange","isEnableRangeSelection","calculateColumnsBetween","isSuppressMultiRangeSelection","rowForCell","startColumn","newestRangeStartCell","extendLatestRangeToCell","cellPosition","updateRangeEnd","silent","endColumn","colsToAdd","moveColInCellRange","colToMove","moveToFront","otherCols","getRangeEdgeColumns","allIndices","extendLatestRangeInDirection","startCell","firstCol","endCellIndex","endCellFloating","endCell","newEndCell","getNextCellToFocus","rowStartIndex","rowStartPinned","rowEndIndex","rowEndPinned","columnStart","columnEnd","addCellRange","setCellRanges","newRange","getColumnWithValidation","lastMouseEvent","isCellInAnyRange","getCellRangeCount","isCellInSpecificRange","columnInRange","rowInRange","isRowInRange","isLastCellOfRange","isLastColumn","floating","firstRow","thisRow","equalsFirstRow","equalsLastRow","afterFirstRow","beforeLastRow","getDraggingRange","draggingRange","ctrlKey","metaKey","shiftKey","multiKeyPressed","multiSelectKeyPressed","mouseCell","draggingCell","mouseRowPosition","addScrollEventListener","isMouseAndStartInPinned","skipVerticalScroll","equals","removeScrollEventListener","started","finished","EVENT_RANGE_SELECTION_CHANGED","columnFrom","columnTo","isSameColumn","fromIndex","toIndex","firstIndex","lastIndex","tickingInterval","getBodyClientRect","getDomLayout","DOM_LAYOUT_NORMAL","isHorizontalScrollShowing","tickLeft","clientX","tickRight","tickUp","tickDown","ensureTickingStarted","setInterval","doTick","tickAmount","vScrollPosition","getVScrollPosition","hScrollPosition","getHScrollPosition","setVerticalScrollPosition","setHorizontalScrollPosition","clearInterval","markedCellComps","cellValues","isUp","isReduce","initialXY","top_1","dragAxis","initialPosition","getCellPosition","lastCellMarked","markPathFrom","finalRange","isX","initialRange","colLen","raiseFillStartEvent","handleValueChanged","raiseFillEndEvent","fillStartEvent","EVENT_FILL_START","fillEndEvent","EVENT_FILL_END","initialRangeEndRow","initialRangeStartRow","finalRangeEndRow","finalRangeStartRow","isVertical","isSuppressClearOnFillReduction","withinInitialRange","initialValues","resetValues","iterateAcrossCells","fillValues","getRowAbove","updateInitialSet","currentValue","processValues","clearCellsInRange","_loop_2","userFillOperation","getFillOperation","userResult","currentIndex","allNumbers","altKey","findLineByLeastSquares","clearMarkedPath","clearCellValues","currentPosition","isBefore","reduceVertical","extendVertical","initialColumn","currentColumn","displayedColumns","initialIndex","reduceHorizontal","extendHorizontal","endPosition","isMovingUp","rowPos","cellPos","cellInRange","isInitialRow","getComponentForCell","celPos","isMovingLeft","allCols","startCol","endCol","colsToMark","rangeFixed","fixRangeStartEnd","CellRangeType","DIMENSION","VALUE","detailCellRenderer_1","DetailCellRenderer","needRefresh","suppressRefresh","rowId","masterGridApi","selectAndSetTemplate","eDetailGrid","addThemeToDetailGrid","createDetailsGrid","registerDetailWithMaster","loadRowData","detailGridOptions","doLayout","EVENT_DATA_CHANGED","gridInfo","addDetailGridInfo","detailGridInfo","removeDetailGridInfo","paramsAny","templateFunc","Grid","$compile","providedBeanInstances","agGridReact","frameworkComponentWrapper","getDetailRowData","setRowData","rowData","enterpriseMenu_1","contextMenu_1","menuItemMapper_1","EnterpriseMenuFactory","ContextMenuFactory","MenuItemMapper","menuList_1","hideActiveMenu","activeMenu","showMenuAfterMouseEvent","menu","positionPopupUnderMouseEvent","showMenuAfterButtonClick","restrictToTabs","alignSide","minDims","nudgeX","nudgeY","minHeight","positionCallback","EnterpriseMenu","lastSelectedTab","eMenuGui","setMenuVisible","showTabBasedOnPreviousSelection","isMenuEnabled","getMenuTabs","TABS_DEFAULT","initialSelection","restrictTo","tabFactories","includeChecks","timeOfLastColumnChange","now","TAB_GENERAL","createMainPanel","TAB_FILTER","createFilterPanel","TAB_COLUMNS","createColumnsPanel","getTabsToCreate","menuTabName","onActiveItemClicked","onHidePopup","onItemClicked","onTabItemClicked","EVENT_DISPLAYED_COLUMNS_CHANGED","onDisplayedColumnsChanged","isValidMenuTabItem","isNotSuppressed","isModuleLoaded","isRegistered","isValid","itemsToConsider","toShow","tabItemColumns","tabItemFilter","tabItemGeneral","showFirstItem","ev","columnSelectPanel","mainMenuList","getMenuItems","defaultMenuOptions","getDefaultMenuOptions","getMainMenuItemsFunc","removeRepeatsFromArray","MENU_ITEM_SEPARATOR","allowPinning","lockPinned","rowGroupCount","doingGrouping","groupedByThisColumn","allowValue","allowRowGroup","pivotModeOn","isInMemoryRowModel","allowValueAgg","allowExpandAndContract","menuItemsMapped","menuItemMapper","mapWithStockItems","filterWrapper","afterFilterAttachedCallback","guiPromise","promise","afterAttachedCallback","setAfterAttachedParams","initialScroll","getHorizontalPixelRange","newScroll","getScrollbarWidth","isEnableCharts","csvModuleMissing","excelModuleMissing","suppressExcel","suppressCsv","isSuppressCsvExport","isIOSUserAgent","getContextMenuItemsFunc","ContextMenu","menuList","originalList","resultList","getStockMenuItem","resultDef","skipHeaderOnAutoSize","isSkipHeaderOnAutoSize","setColumnPinned","PINNED_LEFT","isPinnedLeft","PINNED_RIGHT","isPinnedRight","isPinned","createAggregationSubMenu","autoSizeColumn","autoSizeAllColumns","resetColumnState","expandAll","collapseAll","shortcut","clipboardService","exportSubMenuItems","csvModuleLoaded","excelModuleLoaded","exportDataAsCsv","chartMenuItem","getChartItems","pivotChartMenuItem","localeKey","defaultText","chartService","rangeChartMenuItem","columnToUse","columnIsAlreadyAggValue","funcNames","funcName","richSelectCellEditor_1","RichSelectCellEditor","richSelectRow_1","selectionConfirmed","searchString","originalSelectedValue","focusAfterAttached","cellStartedEdit","eValue","createRowComponent","eList","cellHeight","renderSelectedValue","onKeyDown","virtualListGui","clearSearchString","charPress","which","keyCode","onEnterKeyDown","KEY_DOWN","KEY_UP","onNavigationKeyPressed","stopEditing","oldIndex","valueToSelect","setSelectedValue","isCharacterKey","runSearch","searchStrings","keyCreator","topSuggestion","fuzzySuggestions","topValue","valueFormatted","formatValue","newCellRenderer","bindCellRendererToHtmlElement","renderer","ensureIndexVisible","RichSelectRow","setState","scrollTop","getScrollTop","mouseY","getRowHeight","selectedIndex","PopupComponent","populateWithRenderer","populateWithoutRenderer","valueToRender","cellRendererPromise","childComponent","serverSideRowModel_1","rowModels","ServerSideRowModel","serverSideCache_1","serverSideBlock_1","ensureRowHeightsValid","startPixel","endPixel","startLimitIndex","endLimitIndex","getRowHeightAsNumber","addEventListeners","getServerSideDatasource","setDatasource","destroyDatasource","datasourceChanged","onColumnRowGroupChanged","EVENT_ROW_GROUP_OPENED","onRowGroupOpened","onColumnEverything","onValueChanged","onColumnPivotChanged","EVENT_SORT_CHANGED","onSortChanged","isLastRowFound","cacheExists","isMaxRowFound","isSuppressEnterpriseResetOnNewColumns","resetRequired","cacheParams","rowGroupColumnVos","toValueObjects","valueColumnVos","pivotColumnVos","sortModelDifferent","jsonEquals","sortController","getSortModel","rowGroupDifferent","pivotDifferent","valuesDifferent","findChangedColumnsInSort","newSortModel","oldSortModel","allColsInBothSorts","ids","sm","oldSortItem","newSortItem","differentSorts","differentIndexes","extractSortModel","changedColumnsInSort","rowGroupColIds","sortingWithValueCol","isSortingWithValueColumn","sortingWithSecondaryCol","isSortingWithSecondaryColumn","isServerSideSortingAlwaysResets","refreshCacheAfterSort","createDetailNode","createNodeCache","isPurgeClosedRowNodes","updateRowIndexesAndBounds","rowAnimationEnabled","modelUpdatedEvent","EVENT_MODEL_UPDATED","newPage","newData","animate","isAnimateRows","keepRenderedRows","createNewRowNodeBlockLoader","createCacheParams","rowDataChangedEvent","EVENT_ROW_DATA_CHANGED","destroyRowNodeBlockLoader","maxConcurrentRequests","getMaxConcurrentDatasourceRequests","blockLoadDebounceMillis","getBlockLoadDebounceMillis","rowNodeBlockLoader","RowNodeBlockLoader","dynamicRowHeight","isDynamicRowHeight","maxBlocksInCache","getMaxBlocksInCache","isAutoRowHeightActive","getFilterModel","lastAccessedSequence","overflowSize","initialRowCount","blockSize","getCacheBlockSize","ServerSideCache","RowNodeCache","EVENT_CACHE_UPDATED","onCacheUpdated","resetRowTops","numberSequence","forEachNodeDeep","getTopLevelRowCount","getTopLevelRowDisplayedIndex","topLevelIndex","getCurrentPageHeight","isRowsToRender","ROW_MODEL_TYPE_SERVER_SIDE","forEachNode","executeOnCache","route","cacheToPurge","getChildCache","purgeCache","getNodesInRangeForSelection","firstInRange","lastInRange","getRowNodesInRange","getBlockState","isRowPresent","autoGroupIndex","GROUP_AUTO_COLUMN_ID","individualGroupCols","individualGroupCol","isGroupMultiAutoColumn","multiColumnPrefix","valueColIds","getSecondaryColumns","secondaryColIds","masterNode","detail","selectable","isLoading","cacheTop","blockHeights","blockFound","lastBlock","forEachBlockInOrder","block","nextRowIndex","rowsBetween","destroyBlock","lastAllowedIndex","lastBlockId","getBlockSize","currentBlock","blockId","blocksSkippedCount","rowsSkippedCount","skip","blockToAddId","lastVisitedRow","rowsNotAccountedFor","cacheHeight","dontCreateBlock","beforeBlock","displayIndexStart_1","blockNumber","getBlockNumber","cachedBlockHeight","localIndex","createBlock","blockBefore_1","getBlock","currentId","lastRowTopLevelIndex","indexDiff","newBlock","displayIndexSequence","postCreateBlock","nextKey","nextServerSideCache","forEachNodeShallow","keyListForNextLevel","shouldPurgeCache","rowGroupBlock","sortingByGroup","nextCache","setFilter_1","setFloatingFilter_1","SetFilter","SetFloatingFilterComp","CheckboxState","setValueModel_1","setFilterListItem_1","updateUiVisibility","createBodyTemplate","resetUiToDefaults","setMiniFilter","valueModel","selectEverything","setModelIntoUi","updateSelectAll","getModelFromUi","getModel","isEnableOldSetFilterModel","filterType","areModelsEqual","setParams","checkSetFilterDeprecatedParams","setFilterParams","eCheckedIcon","eUncheckedIcon","eIndeterminateCheckedIcon","eSelectAllCheckbox","eSelectAll","initialiseFilterBodyUi","suppressSyncValuesAfterDataChange","setupSyncValuesAfterDataChange","syncValuesLikeExcel","selectAllOnMiniFilter","resetFilterValuesAndReapplyModel","modelBeforeUpdate","resetFilterValues","EVENT_ROW_DATA_UPDATED","EVENT_CELL_VALUE_CHANGED","updateCheckboxIcon","selectAllState","INTERMEDIATE","setLoading","loading","eFilterLoading","eSetFilterList","getRefElement","createSetListItem","SetValueModel","valueGetter","doesRowPassOtherFilter","suppressSorting","toSelect","setFilterValues","valueFormatterService","ModelWrapper","suppressMiniFilter","eMiniFilter","getMiniFilter","onMiniFilterInput","eSelectAllContainer","suppressSelectAll","listItem","SetFilterListItem","isValueSelected","EVENT_SELECTED","onItemSelected","applyModel","appliedModel","appliedModelValuesMapped","doesFilterPass","makeNull","onNewRowsLoaded","valuesType","getValuesType","valuesTypeProvided","SetFilterModelValuesType","PROVIDED_CB","PROVIDED_LIST","newRowsActionKeep","isNewRowsActionKeep","everythingSelected","refreshAfterNewRowsLoaded","notify","onFilterValuesReady","keepSelection","newRowsAction","setValuesType","refreshValues","selectValue","onUiChanged","NOT_PROVIDED","onAnyFilterChanged","refreshAfterAnyFilterChanged","isEverythingSelected","isNothingSelected","onEnterKeyOnMiniFilter","selectAllFromMiniFilter","addAgGridEventPath","doSelectAll","selectAllUsingMiniFilter","selectNothingUsingMiniFilter","unselectValue","newMiniFilter","selectNothing","getUniqueValueCount","getUniqueValue","ProvidedFilter","getDisplayedValueCount","getDisplayedValue","doesRowPassOtherFilters","modelUpdatedFunc","isLoadingFunc","filterParams","showingAvailableOnly","suppressRemoveEntries","createAllUniqueValues","createAvailableUniqueValues","displayedValues","availableUniqueValues","miniFilter","selectedValuesMap","textFormatter","TextFilter","DEFAULT_FORMATTER","refreshSelection","valuesToUse","isSelectAll","setValues","oldModel","processMiniFilter","areValuesSync","extractSyncValuesToUse","filterValuesPromise","filterValuesExternalPromise","external","callback_1","params_1","success","onAsyncValuesLoaded","allUniqueValues","sortValues","toStrings","uniqueValuesAsAnyObjects","getUniqueValues","defaultComparator","filterOutNotAvailable","uniqueCheck","addUniqueValueIfMissing","forEachLeafNode","miniFilterUpperCase","matchesFn","valueToCheck","l","displayedValue","formattedValue","selectOn","toSelectOn","safeKey","valueToKey","keyToValue","selectedValues","setSyncModel","rawValue","firstOneOnly","useCellRenderer","eTarget","eCheckbox","queryForHtmlElement","eNativeCheckbox","eClickableArea","valueElement","eFloatingFilterText","onParentModelChanged","parentModel","formattedValues","arrayToDisplay","valuesString","statusBarService_1","statusBar_1","nameValueComp_1","totalAndFilteredRowsComp_1","filteredRowsComp_1","totalRowsComp_1","selectedRowsComp_1","aggregationComp_1","StatusBarService","StatusBar","NameValueComp","AggregationComp","SelectedRowsComp","TotalRowsComp","FilteredRowsComp","TotalAndFilteredRowsComp","allComponents","registerStatusPanel","getStatusPanel","statusBar","statusPanels","leftStatusPanelComponents","componentConfig","align","createAndRenderComponents","eStatusBarLeft","centerStatusPanelComponents","eStatusBarCenter","rightStatusPanelComponents","eStatusBarRight","statusBarComponents","ePanelComponent","componentDetails","newStatusPanelComponent","statusPanel","all","componentDetail","destroyFunc","statusBarService","onDataChanged","formatNumberCommas","getFilteredRowCountValue","totalRowCount","getTotalRowCount","filteredRowCount","forEachNodeAfterFilter","listener","totalRowCountValue","getTotalRowCountValue","filteredRowCountValue","getRowCountValue","isValidRowModel","selectedRowCount","getSelectedRows","eventListener","onRowSelectionChanged","EVENT_SELECTION_CHANGED","rowModelType","avgAggregationComp","countAggregationComp","minAggregationComp","maxAggregationComp","sumAggregationComp","onRangeSelectionChanged","setAggregationComponentValue","aggFuncName","statusBarValueComponent","getAggregationValueComponent","formatNumberTwoDecimalPlacesAndCommas","refComponentName","aggregationPanelConfig","statusPanelParams","numberCount","cellsSoFar","gotResult","gotNumberResult","viewportRowModel_1","ViewportRowModel","rowNodesByIndex","EVENT_VIEWPORT_CHANGED","onViewportChanged","getViewportDatasource","setViewportDatasource","viewportDatasource","calculateFirstRow","firstRenderedRow","bufferSize","getViewportRowModelBufferSize","pageSize","getViewportRowModelPageSize","afterBuffer","calculateLastRow","lastRenderedRow","lastRowIndex","newFirst","newLast","purgeRowsNotInViewport","setViewportRange","indexStr","setRowCount","ROW_MODEL_TYPE_VIEWPORT","firstNodeOutOfRange","lastNodeOutOfRange","endIndex","callbackCount","dataItem","isContainerNode","isPointInNode","parent_1","Node","content","module","transform","locals","tickIncrement","predicate","ln","calculatedExtent","propertyListeners","eventListeners","listeners","removePropertyListener","notifyPropertyListeners","notifyEventListeners","types","privateKeyPrefix","events","privateKey","backingProperty","privateKeyEvents","events_1","TimeInterval","_floor","_offset","d0","ms","previous","_count","_field","field_1","dilate","containsPoint","noParams","strokeStyle","strokeRect","_children","childSet","inverseMatrix","_dirtyTransform","_scalingX","_scalingY","_scalingCenterX","_scalingCenterY","_rotationCenterX","_rotationCenterY","_translationX","_translationY","_visible","All","isNode","_scene","_setParent","countChildren","MAX_SAFE_INTEGER","invertSelf","hit","computeBBoxCenter","scx","scy","bbcx","bbcy","sx","sy","scalingCenterX","scalingCenterY","rcx","rcy","rotationCenterY","tx","ty","tx4","ty4","setElements","inverseTo","_x","_y","half","ordinalRange","_range","_bandwidth","_paddingInner","_paddingOuter","_round","_align","rescale","reversed","axisOvershoot","addAxes","leftAxis","bottomAxis","EnterNode","groups","parents","Class","appendFn","creator","selector","numGroups","subgroups","groupSize","subgroup","subnode","selectAllByClass","selectAllByTag","selectNone","selectorAll","groupCount","groupLength","cb","other","groups0","groups1","m0","m1","group0","group1","exitGroups","setDatum","data_1","parent_2","dataSize","enterGroup","updateGroup","exitGroup","bindKey","bindIndex","keyValues","nodeByKeyValue","keyValue","keyPrefix","_svgPath","setFromString","closedPath","borneo","material","pastel","bright","flat","object_1","lastInstanceId","defaultStyles","_lineDash","_lineDashOffset","lineDashOffset","_lineCap","_lineJoin","_opacity","onShadowChange","_fillShadow","_strokeShadow","strokeShadow","createInstance","restoreOwnStyles","getOwnPropertyNames","restoreAllStyles","restoreOverriddenStyles","protoStyles","getPrototypeOf","identical","globalAlpha","shadowColor","shadowOffsetX","shadowOffsetY","shadowBlur","setLineDash","chainObjects","epsilon","fractionOrSignificantDigits","power","LN10","numberUnits","toReadableNumber","thousands","log10","twoPi","radians","degrees","toDegrees","lineBreakRegex","_text","_dirtyFont","_fontSize","_fontFamily","_textAlign","_textBaseline","_lineHeight","splitText","dirtyFont","_font","_fontStyle","_fontWeight","getPreciseBBox","getApproximateBBox","actualBoundingBoxLeft","strokeText","polarChart_1","lineSeries_1","scatterSeries_1","columnSeries_1","areaSeries_1","pieSeries_1","caption_1","groupedCategoryChart_1","cross_1","diamond_1","plus_1","triangle_1","map_1","createCartesianChart","createGroupedCategoryChart","createBarChart","createNumberAxis","createCategoryAxis","initChart","initBarSeries","createColumnChart","createLineChart","createAxis","initLineSeries","initScatterSeries","createAreaChart","initAreaSeries","createPolarChart","initPieSeries","createGroupedColumnChart","createGroupedAxis","createGroupedBarChart","createGroupedLineChart","createGroupedAreaChart","setValueIfExists","setTransformedValueIfExists","createTitle","createSubtitle","initLegend","initHighlightStyle","initMarker","initLabelOptions","createDropShadow","createPieTitle","getMarkerFromType","markerTypes","setDefaultFontOptions","createCaption","createTimeAxis","defaultType","RectSizing","_radius","_crisp","effectiveStrokeWidth","_sizing","Content","sizing","Border","borderSizing","halfWidth","halfHeight","chartDatasource_1","dimensionColState","valueColState","detached","getChartId","chartId","getValueColState","displayNameMapper","getDimensionColState","dimensionCellRange","valueCellRange","isSuppressChartRanges","isDetached","cs","getSelectedValueCols","getColDisplayName","referenceCellRange","generateId","updateCellRanges","updatedColState","getAllChartColumns","allColsFromRanges","getAllColumnsFromRanges","updateColumnState","setDimensionCellRange","setValueCellRange","updateData","isCurrentMultiCategory","isMultiCategoryChart","groupActive","groupCols","groupDimensionSelected","createCellRange","_i","convertToSet","getRowIndexes","displayedCols","chartDataType","isNumberCol","cellValue","extractLeafData","childRow","random","pivoting","isInitialising","hasSelectedDimension","defaultCategory","valueColumnsFromReferenceRange","updatedCol","idsMatch","orderedColIds","reorderColState","colsInRange","selectedDimensionColState","selectedValueCols","orderedColIds_1","activeComps","initFontFamilySelect","initFontWeightStyleSelect","initFontSizeSelect","initFontColorPicker","fontGroup","families","valueIndex","capitalisedFontValue","capitalise","familySelect","sizes","sizeSelect","weightStyles","selectedOption","weightStyleSelect","selectedWeightStyle","destroyActiveComps","defaultValue","rowGroupingModule_1","valueDropZonePanel_1","sideBarModule_1","updateForRangeChange","updateForDataChange","raiseChartUpdatedEvent","raiseChartRangeSelectionChangedEvent","getCurrentCellRangeParams","isDefaultCategorySelected","firstCellRange","EVENT_CHART_RANGE_SELECTION_CHANGED","elements","setIdentityElements","AxB","m11","m12","m21","m22","m31","m32","o11","o12","o21","o22","o31","o32","multiplySelf","multiply","inverse","clone","xx","yx","yy","h_w","h_h","cx","cy","identity","_x1","_y1","_x2","_y2","prop","categoryId","isHorizontalChart","axisKey","getDefaultAxisOptions","watermarkMessage","LicenseManager_1","validateLicense","licenseKey","outputMissingLicenseKey","extractLicenseComponents","license","version","isTrial","validateLicenseKeyForVersion","validateLegacyKey","outputInvalidLicenseKey","extractExpiry","restrictionHashed","lastIndexOf","decode","hashStart","extractBracketedInformation","getLicenseDetails","valid","expiry","formatDate","monthIndex","getGridReleaseDate","RELEASE_INFORMATION","keystr","utf8_decode","setLicenseKey","matches","validateForTrial","gridReleaseDate","current","formattedExpiryDate","formattedReleaseDate","outputIncompatibleVersion","outputExpiredTrialKey","dropZoneColumnComp_1","STATE_NOT_DRAGGING","guiDestroyFunctions","childColumnComponents","eColumnDropList","destroyGui","setupDropTarget","onDragEnter","onDragLeave","HeaderCell","getNewHorizontalInsertIndex","getNewVerticalInsertIndex","hDirection","enableRtl","goingLeft","HorizontalDirection","mouseX","childColumn","rectX","checkDragStartedBySelf","STATE_REARRANGE_COLUMNS","potentialDndColumns","dragColumns","STATE_NEW_COLUMNS_IN","goodDragColumns","removeColumns","addColumns","rearrangeColumns","columnsToRemove","newColumnList","columnsToAdd","insertArrayIntoArray","getNonGhostColumns","shallowCompare","addIconAndTitleToGui","addEmptyMessageToGui","addColumnsToGui","existingColumns","nonGhostColumns","addingGhosts","itemsToAddToGui","columnComponent","createColumnComponent","addArrow","iconFaded","isExistingColumnsEmpty","eGroupIcon","eContainer","eTitle","eMessage","stylesMap","registeredNumberFmts","registeredFonts","registeredFills","registeredBorders","registeredCellStyleXfs","registeredCellXfs","registeredCellStyles","numberFormats_1","fonts_1","cellStyleXfs_1","cellXfs_1","cellStyles_1","resetStylesheetValues","base","registerStyle","convertedPattern","convertedFillColor","convertedPatternColor","currentFill","currentBorder","currentFont","currentNumberFmt","Solid","Gray50","Gray75","Gray25","HorzStripe","VertStripe","ReverseDiagStripe","DiagStripe","DiagCross","ThickDiagCross","ThinHorzStripe","ThinVertStripe","ThinReverseDiagStripe","ThinDiagStripe","ThinHorzCross","ThinDiagCross","Gray125","Gray0625","bottomStyle","topStyle","leftStyle","rightStyle","bottomColor","topColor","leftColor","rightColor","clS","clC","crS","crC","ctS","ctC","cbS","cbC","registerBorders","utf8Name","convertedColor","familyId","registerFont","currentFormat","registerNumberFmt","stylesheetFactory","cellStylesXfs","cellXfs","defaultPivotStyle","defaultTableStyle","shadowBlurSlider","shadowXOffsetSlider","shadowYOffsetSlider","initSeriesShadow","shadowGroup","shadowColorPicker","minValue","setMinValue","absStep","e10","e5","e2","rawStep","ArcType","_radiusX","_radiusY","_counterClockwise","_type","Open","counterClockwise","Chord","Round","intersection_1","_closedPath","arcTo","rx","ry","fA","fS","hdx","hdy","sinPhi","cosPhi","xp","yp","ratX","ratY","lambda","cpx","cpy","theta1","atan2","deltaTheta","arcToAlt","x1p","y1p","rx_y1p","ry_x1p","rootSign","cxp","phi","theta2","anticlockwise","temp","f90","sinTheta1","cosTheta1","rightAngle","lastX","sinPhi2","cosPhi2","C2x","C2y","deCasteljau","newPoints","approximateCurve","xy_1","quadraticCurveTo","cubicCurveTo","cx1","cy1","cx2","cy2","cn","px","py","intersectionCount","ci","pi","parseSvgPath","splitCommandsRe","part","strParams","matchParamsRe","command","prettifySvgPath","lastCommand","checkQuadraticCP","quadraticCommandRe","checkCubicCP","cubicCommandRe","out","toPrettyString","toSvg","xmlDeclaration","toDebugSvg","toCubicPaths","paths","cubicPathToString","initMarkers","shouldHideEnabledCheckbox","seriesMarkersGroup","seriesMarkerMinSizeSlider","seriesMarkerSizeSlider","seriesMarkerStrokeWidthSlider","clamper","constant","ContinuousScale","unknown","_clamp","untransform","_interpolate","piecewise","polymap","bimap","output","normalize","interpolate","xt","y0","dt","from","tr","constant_1","date_1","timeScale_1","_active","clip","rangeSelectionModule_1","isNodeOrElement","isEnableBrowserTooltips","tooltipManager","registerTooltip","eShortcut","ePopupPointer","eName","onOptionSelected","cssClasses","getTooltipText","getComponentHolder","all_modules_1","clipboard_1","column_tool_panel_1","excel_export_1","filter_tool_panel_1","charts_1","master_detail_1","menu_1","rich_select_1","server_side_row_model_1","set_filter_1","status_bar_1","viewport_row_model_1","AllEnterpriseModules","AllModules","AllCommunityModules"],"mappings":"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","file":"npm.ag-grid-enterprise.e8172ee95354a3a64264.chunk.js","sourcesContent":["\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar MD5 = /** @class */ (function () {\n function MD5() {\n this.ieCompatibility = false;\n }\n MD5.prototype.init = function () {\n this.ieCompatibility = (this.md5('hello') != '5d41402abc4b2a76b9719d911017c592');\n };\n MD5.prototype.md5cycle = function (x, k) {\n var a = x[0], b = x[1], c = x[2], d = x[3];\n a = this.ff(a, b, c, d, k[0], 7, -680876936);\n d = this.ff(d, a, b, c, k[1], 12, -389564586);\n c = this.ff(c, d, a, b, k[2], 17, 606105819);\n b = this.ff(b, c, d, a, k[3], 22, -1044525330);\n a = this.ff(a, b, c, d, k[4], 7, -176418897);\n d = this.ff(d, a, b, c, k[5], 12, 1200080426);\n c = this.ff(c, d, a, b, k[6], 17, -1473231341);\n b = this.ff(b, c, d, a, k[7], 22, -45705983);\n a = this.ff(a, b, c, d, k[8], 7, 1770035416);\n d = this.ff(d, a, b, c, k[9], 12, -1958414417);\n c = this.ff(c, d, a, b, k[10], 17, -42063);\n b = this.ff(b, c, d, a, k[11], 22, -1990404162);\n a = this.ff(a, b, c, d, k[12], 7, 1804603682);\n d = this.ff(d, a, b, c, k[13], 12, -40341101);\n c = this.ff(c, d, a, b, k[14], 17, -1502002290);\n b = this.ff(b, c, d, a, k[15], 22, 1236535329);\n a = this.gg(a, b, c, d, k[1], 5, -165796510);\n d = this.gg(d, a, b, c, k[6], 9, -1069501632);\n c = this.gg(c, d, a, b, k[11], 14, 643717713);\n b = this.gg(b, c, d, a, k[0], 20, -373897302);\n a = this.gg(a, b, c, d, k[5], 5, -701558691);\n d = this.gg(d, a, b, c, k[10], 9, 38016083);\n c = this.gg(c, d, a, b, k[15], 14, -660478335);\n b = this.gg(b, c, d, a, k[4], 20, -405537848);\n a = this.gg(a, b, c, d, k[9], 5, 568446438);\n d = this.gg(d, a, b, c, k[14], 9, -1019803690);\n c = this.gg(c, d, a, b, k[3], 14, -187363961);\n b = this.gg(b, c, d, a, k[8], 20, 1163531501);\n a = this.gg(a, b, c, d, k[13], 5, -1444681467);\n d = this.gg(d, a, b, c, k[2], 9, -51403784);\n c = this.gg(c, d, a, b, k[7], 14, 1735328473);\n b = this.gg(b, c, d, a, k[12], 20, -1926607734);\n a = this.hh(a, b, c, d, k[5], 4, -378558);\n d = this.hh(d, a, b, c, k[8], 11, -2022574463);\n c = this.hh(c, d, a, b, k[11], 16, 1839030562);\n b = this.hh(b, c, d, a, k[14], 23, -35309556);\n a = this.hh(a, b, c, d, k[1], 4, -1530992060);\n d = this.hh(d, a, b, c, k[4], 11, 1272893353);\n c = this.hh(c, d, a, b, k[7], 16, -155497632);\n b = this.hh(b, c, d, a, k[10], 23, -1094730640);\n a = this.hh(a, b, c, d, k[13], 4, 681279174);\n d = this.hh(d, a, b, c, k[0], 11, -358537222);\n c = this.hh(c, d, a, b, k[3], 16, -722521979);\n b = this.hh(b, c, d, a, k[6], 23, 76029189);\n a = this.hh(a, b, c, d, k[9], 4, -640364487);\n d = this.hh(d, a, b, c, k[12], 11, -421815835);\n c = this.hh(c, d, a, b, k[15], 16, 530742520);\n b = this.hh(b, c, d, a, k[2], 23, -995338651);\n a = this.ii(a, b, c, d, k[0], 6, -198630844);\n d = this.ii(d, a, b, c, k[7], 10, 1126891415);\n c = this.ii(c, d, a, b, k[14], 15, -1416354905);\n b = this.ii(b, c, d, a, k[5], 21, -57434055);\n a = this.ii(a, b, c, d, k[12], 6, 1700485571);\n d = this.ii(d, a, b, c, k[3], 10, -1894986606);\n c = this.ii(c, d, a, b, k[10], 15, -1051523);\n b = this.ii(b, c, d, a, k[1], 21, -2054922799);\n a = this.ii(a, b, c, d, k[8], 6, 1873313359);\n d = this.ii(d, a, b, c, k[15], 10, -30611744);\n c = this.ii(c, d, a, b, k[6], 15, -1560198380);\n b = this.ii(b, c, d, a, k[13], 21, 1309151649);\n a = this.ii(a, b, c, d, k[4], 6, -145523070);\n d = this.ii(d, a, b, c, k[11], 10, -1120210379);\n c = this.ii(c, d, a, b, k[2], 15, 718787259);\n b = this.ii(b, c, d, a, k[9], 21, -343485551);\n x[0] = this.add32(a, x[0]);\n x[1] = this.add32(b, x[1]);\n x[2] = this.add32(c, x[2]);\n x[3] = this.add32(d, x[3]);\n };\n MD5.prototype.cmn = function (q, a, b, x, s, t) {\n a = this.add32(this.add32(a, q), this.add32(x, t));\n return this.add32((a << s) | (a >>> (32 - s)), b);\n };\n MD5.prototype.ff = function (a, b, c, d, x, s, t) {\n return this.cmn((b & c) | ((~b) & d), a, b, x, s, t);\n };\n MD5.prototype.gg = function (a, b, c, d, x, s, t) {\n return this.cmn((b & d) | (c & (~d)), a, b, x, s, t);\n };\n MD5.prototype.hh = function (a, b, c, d, x, s, t) {\n return this.cmn(b ^ c ^ d, a, b, x, s, t);\n };\n MD5.prototype.ii = function (a, b, c, d, x, s, t) {\n return this.cmn(c ^ (b | (~d)), a, b, x, s, t);\n };\n MD5.prototype.md51 = function (s) {\n var n = s.length;\n var state = [1732584193, -271733879, -1732584194, 271733878];\n var i;\n for (i = 64; i <= s.length; i += 64) {\n this.md5cycle(state, this.md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n var tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < s.length; i++) {\n tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n }\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n this.md5cycle(state, tail);\n for (i = 0; i < 16; i++) {\n tail[i] = 0;\n }\n }\n tail[14] = n * 8;\n this.md5cycle(state, tail);\n return state;\n };\n /* there needs to be support for Unicode here, * unless we pretend that we can redefine the MD-5\n * algorithm for multi-byte characters (perhaps by adding every four 16-bit characters and\n * shortening the sum to 32 bits). Otherwise I suthis.ggest performing MD-5 as if every character\n * was two bytes--e.g., 0040 0025 = @%--but then how will an ordinary MD-5 sum be matched?\n * There is no way to standardize text to something like UTF-8 before transformation; speed cost is\n * utterly prohibitive. The JavaScript standard itself needs to look at this: it should start\n * providing access to strings as preformed UTF-8 8-bit unsigned value arrays.\n */\n MD5.prototype.md5blk = function (s) {\n var md5blks = [];\n /* Andy King said do it this way. */\n for (var i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i)\n + (s.charCodeAt(i + 1) << 8)\n + (s.charCodeAt(i + 2) << 16)\n + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n };\n MD5.prototype.rhex = function (n) {\n var hex_chr = '0123456789abcdef'.split('');\n var s = '', j = 0;\n for (; j < 4; j++) {\n s += hex_chr[(n >> (j * 8 + 4)) & 0x0F]\n + hex_chr[(n >> (j * 8)) & 0x0F];\n }\n return s;\n };\n MD5.prototype.hex = function (x) {\n for (var i = 0; i < x.length; i++) {\n x[i] = this.rhex(x[i]);\n }\n return x.join('');\n };\n MD5.prototype.md5 = function (s) {\n return this.hex(this.md51(s));\n };\n MD5.prototype.add32 = function (a, b) {\n return this.ieCompatibility ? this.add32Compat(a, b) : this.add32Std(a, b);\n };\n /* this function is much faster, so if possible we use it. Some IEs are the only ones I know of that\n need the idiotic second function, generated by an if clause. */\n MD5.prototype.add32Std = function (a, b) {\n return (a + b) & 0xFFFFFFFF;\n };\n MD5.prototype.add32Compat = function (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF), msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n };\n __decorate([\n core_1.PostConstruct\n ], MD5.prototype, \"init\", null);\n MD5 = __decorate([\n core_1.Bean('md5')\n ], MD5);\n return MD5;\n}());\nexports.MD5 = MD5;\n//# sourceMappingURL=md5.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar WatermarkComp = /** @class */ (function (_super) {\n __extends(WatermarkComp, _super);\n function WatermarkComp() {\n return _super.call(this, \"
\\n
\\n
\") || this;\n }\n WatermarkComp.prototype.postConstruct = function () {\n var _this = this;\n var show = this.shouldDisplayWatermark();\n core_1._.addOrRemoveCssClass(this.getGui(), 'ag-hidden', !show);\n if (show) {\n this.eLicenseTextRef.innerText = this.licenseManager.getWatermarkMessage();\n window.setTimeout(function () { return _this.addCssClass('ag-opacity-zero'); }, 0);\n window.setTimeout(function () { return _this.addCssClass('ag-hidden'); }, 5000);\n }\n };\n WatermarkComp.prototype.shouldDisplayWatermark = function () {\n var isDisplayWatermark = this.licenseManager.isDisplayWatermark();\n var isWhiteListURL = location.hostname.match('^127\\.0\\.0\\.1|localhost|www\\.ag-grid\\.com$') != null;\n var isForceWatermark = location.search.indexOf('forceWatermark') !== -1;\n return isForceWatermark || (isDisplayWatermark && !isWhiteListURL);\n };\n __decorate([\n core_1.Autowired('licenseManager')\n ], WatermarkComp.prototype, \"licenseManager\", void 0);\n __decorate([\n core_1.RefSelector('eLicenseTextRef')\n ], WatermarkComp.prototype, \"eLicenseTextRef\", void 0);\n __decorate([\n core_1.PostConstruct\n ], WatermarkComp.prototype, \"postConstruct\", null);\n return WatermarkComp;\n}(core_1.Component));\nexports.WatermarkComp = WatermarkComp;\n//# sourceMappingURL=watermark.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar clipboardModule_1 = require(\"./clipboardModule\");\nexports.ClipboardModule = clipboardModule_1.ClipboardModule;\n//# sourceMappingURL=main.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar columnsToolPanelModule_1 = require(\"./columnsToolPanelModule\");\nexports.ColumnsToolPanelModule = columnsToolPanelModule_1.ColumnsToolPanelModule;\n//# sourceMappingURL=main.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar EXPAND_STATE;\n(function (EXPAND_STATE) {\n EXPAND_STATE[EXPAND_STATE[\"EXPANDED\"] = 0] = \"EXPANDED\";\n EXPAND_STATE[EXPAND_STATE[\"COLLAPSED\"] = 1] = \"COLLAPSED\";\n EXPAND_STATE[EXPAND_STATE[\"INDETERMINATE\"] = 2] = \"INDETERMINATE\";\n})(EXPAND_STATE = exports.EXPAND_STATE || (exports.EXPAND_STATE = {}));\nvar SELECTED_STATE;\n(function (SELECTED_STATE) {\n SELECTED_STATE[SELECTED_STATE[\"CHECKED\"] = 0] = \"CHECKED\";\n SELECTED_STATE[SELECTED_STATE[\"UNCHECKED\"] = 1] = \"UNCHECKED\";\n SELECTED_STATE[SELECTED_STATE[\"INDETERMINATE\"] = 2] = \"INDETERMINATE\";\n})(SELECTED_STATE = exports.SELECTED_STATE || (exports.SELECTED_STATE = {}));\nvar PrimaryColsHeaderPanel = /** @class */ (function (_super) {\n __extends(PrimaryColsHeaderPanel, _super);\n function PrimaryColsHeaderPanel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PrimaryColsHeaderPanel.prototype.preConstruct = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.setTemplate(\"
\\n
\\n
\\n
\\n \\n
\\n
\");\n };\n PrimaryColsHeaderPanel.prototype.postConstruct = function () {\n this.createExpandIcons();\n if (this.gridOptionsWrapper.useNativeCheckboxes()) {\n this.eSelectCheckbox = document.createElement(\"input\");\n this.eSelectCheckbox.type = \"checkbox\";\n this.eSelectCheckbox.className = \"ag-checkbox\";\n this.eSelect.appendChild(this.eSelectCheckbox);\n }\n else {\n this.createCheckIcons();\n }\n this.addDestroyableEventListener(this.eExpand, \"click\", this.onExpandClicked.bind(this));\n this.addDestroyableEventListener(this.eSelect, \"click\", this.onSelectClicked.bind(this));\n this.addDestroyableEventListener(this.eFilterTextField, \"input\", this.onFilterTextChanged.bind(this));\n this.addDestroyableEventListener(this.eFilterTextField, \"keypress\", this.onMiniFilterKeyPress.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_NEW_COLUMNS_LOADED, this.showOrHideOptions.bind(this));\n };\n PrimaryColsHeaderPanel.prototype.init = function (params) {\n this.params = params;\n if (this.columnController.isReady()) {\n this.showOrHideOptions();\n }\n };\n PrimaryColsHeaderPanel.prototype.createExpandIcons = function () {\n this.eExpand.appendChild((this.eExpandChecked = core_1._.createIconNoSpan(\"columnSelectOpen\", this.gridOptionsWrapper)));\n this.eExpand.appendChild((this.eExpandUnchecked = core_1._.createIconNoSpan(\"columnSelectClosed\", this.gridOptionsWrapper)));\n this.eExpand.appendChild((this.eExpandIndeterminate = core_1._.createIconNoSpan(\"columnSelectIndeterminate\", this.gridOptionsWrapper)));\n };\n PrimaryColsHeaderPanel.prototype.createCheckIcons = function () {\n this.eSelect.appendChild((this.eSelectChecked = core_1._.createIconNoSpan(\"checkboxChecked\", this.gridOptionsWrapper)));\n this.eSelect.appendChild((this.eSelectUnchecked = core_1._.createIconNoSpan(\"checkboxUnchecked\", this.gridOptionsWrapper)));\n this.eSelect.appendChild((this.eSelectIndeterminate = core_1._.createIconNoSpan(\"checkboxIndeterminate\", this.gridOptionsWrapper)));\n };\n // we only show expand / collapse if we are showing columns\n PrimaryColsHeaderPanel.prototype.showOrHideOptions = function () {\n var showFilter = !this.params.suppressColumnFilter;\n var showSelect = !this.params.suppressColumnSelectAll;\n var showExpand = !this.params.suppressColumnExpandAll;\n var groupsPresent = this.columnController.isPrimaryColumnGroupsPresent();\n core_1._.setDisplayed(this.eFilterWrapper, showFilter);\n core_1._.setDisplayed(this.eSelect, showSelect);\n core_1._.setDisplayed(this.eExpand, showExpand && groupsPresent);\n };\n PrimaryColsHeaderPanel.prototype.onFilterTextChanged = function () {\n var _this = this;\n if (!this.onFilterTextChangedDebounced) {\n this.onFilterTextChangedDebounced = core_1._.debounce(function () {\n var filterText = _this.eFilterTextField.value;\n _this.dispatchEvent({ type: \"filterChanged\", filterText: filterText });\n }, 300);\n }\n this.onFilterTextChangedDebounced();\n };\n PrimaryColsHeaderPanel.prototype.onMiniFilterKeyPress = function (e) {\n if (core_1._.isKeyPressed(e, core_1.Constants.KEY_ENTER)) {\n this.dispatchEvent({ type: \"selectAll\" });\n }\n };\n PrimaryColsHeaderPanel.prototype.onSelectClicked = function () {\n var eventType = this.selectState === SELECTED_STATE.CHECKED ? \"unselectAll\" : \"selectAll\";\n this.dispatchEvent({ type: eventType });\n };\n PrimaryColsHeaderPanel.prototype.onExpandClicked = function () {\n var eventType = this.expandState === EXPAND_STATE.EXPANDED ? \"collapseAll\" : \"expandAll\";\n this.dispatchEvent({ type: eventType });\n };\n PrimaryColsHeaderPanel.prototype.setExpandState = function (state) {\n this.expandState = state;\n core_1._.setDisplayed(this.eExpandChecked, this.expandState === EXPAND_STATE.EXPANDED);\n core_1._.setDisplayed(this.eExpandUnchecked, this.expandState === EXPAND_STATE.COLLAPSED);\n core_1._.setDisplayed(this.eExpandIndeterminate, this.expandState === EXPAND_STATE.INDETERMINATE);\n };\n PrimaryColsHeaderPanel.prototype.setSelectionState = function (state) {\n this.selectState = state;\n if (this.gridOptionsWrapper.useNativeCheckboxes()) {\n this.eSelectCheckbox.checked = this.selectState === SELECTED_STATE.CHECKED;\n this.eSelectCheckbox.indeterminate = this.selectState === SELECTED_STATE.INDETERMINATE;\n }\n else {\n core_1._.setDisplayed(this.eSelectChecked, this.selectState === SELECTED_STATE.CHECKED);\n core_1._.setDisplayed(this.eSelectUnchecked, this.selectState === SELECTED_STATE.UNCHECKED);\n core_1._.setDisplayed(this.eSelectIndeterminate, this.selectState === SELECTED_STATE.INDETERMINATE);\n }\n };\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], PrimaryColsHeaderPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], PrimaryColsHeaderPanel.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], PrimaryColsHeaderPanel.prototype, \"eventService\", void 0);\n __decorate([\n core_1.RefSelector('eExpand')\n ], PrimaryColsHeaderPanel.prototype, \"eExpand\", void 0);\n __decorate([\n core_1.RefSelector('eSelect')\n ], PrimaryColsHeaderPanel.prototype, \"eSelect\", void 0);\n __decorate([\n core_1.RefSelector('eFilterWrapper')\n ], PrimaryColsHeaderPanel.prototype, \"eFilterWrapper\", void 0);\n __decorate([\n core_1.RefSelector('eFilterTextField')\n ], PrimaryColsHeaderPanel.prototype, \"eFilterTextField\", void 0);\n __decorate([\n core_1.PreConstruct\n ], PrimaryColsHeaderPanel.prototype, \"preConstruct\", null);\n __decorate([\n core_1.PostConstruct\n ], PrimaryColsHeaderPanel.prototype, \"postConstruct\", null);\n return PrimaryColsHeaderPanel;\n}(core_1.Component));\nexports.PrimaryColsHeaderPanel = PrimaryColsHeaderPanel;\n//# sourceMappingURL=primaryColsHeaderPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar baseDropZonePanel_1 = require(\"./baseDropZonePanel\");\nvar RowGroupDropZonePanel = /** @class */ (function (_super) {\n __extends(RowGroupDropZonePanel, _super);\n function RowGroupDropZonePanel(horizontal) {\n return _super.call(this, horizontal, false, 'row-group') || this;\n }\n RowGroupDropZonePanel.prototype.passBeansUp = function () {\n _super.prototype.setBeans.call(this, {\n gridOptionsWrapper: this.gridOptionsWrapper,\n eventService: this.eventService,\n context: this.getContext(),\n loggerFactory: this.loggerFactory,\n dragAndDropService: this.dragAndDropService\n });\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var emptyMessage = localeTextFunc('rowGroupColumnsEmptyMessage', 'Drag here to set row groups');\n var title = localeTextFunc('groups', 'Row Groups');\n _super.prototype.init.call(this, {\n dragAndDropIcon: core_1.DragAndDropService.ICON_GROUP,\n icon: core_1._.createIconNoSpan('rowGroupPanel', this.gridOptionsWrapper, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.refreshGui.bind(this));\n };\n RowGroupDropZonePanel.prototype.isColumnDroppable = function (column) {\n // we never allow grouping of secondary columns\n if (this.gridOptionsWrapper.isFunctionsReadOnly() || !column.isPrimary()) {\n return false;\n }\n return column.isAllowRowGroup() && !column.isRowGroupActive();\n };\n RowGroupDropZonePanel.prototype.updateColumns = function (columns) {\n if (this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: core_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST,\n columns: columns,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n else {\n this.columnController.setRowGroupColumns(columns, \"toolPanelUi\");\n }\n };\n RowGroupDropZonePanel.prototype.getIconName = function () {\n return this.isPotentialDndColumns() ? core_1.DragAndDropService.ICON_GROUP : core_1.DragAndDropService.ICON_NOT_ALLOWED;\n };\n RowGroupDropZonePanel.prototype.getExistingColumns = function () {\n return this.columnController.getRowGroupColumns();\n };\n __decorate([\n core_1.Autowired('columnController')\n ], RowGroupDropZonePanel.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], RowGroupDropZonePanel.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], RowGroupDropZonePanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('loggerFactory')\n ], RowGroupDropZonePanel.prototype, \"loggerFactory\", void 0);\n __decorate([\n core_1.Autowired('dragAndDropService')\n ], RowGroupDropZonePanel.prototype, \"dragAndDropService\", void 0);\n __decorate([\n core_1.Autowired('columnApi')\n ], RowGroupDropZonePanel.prototype, \"columnApi\", void 0);\n __decorate([\n core_1.Autowired('gridApi')\n ], RowGroupDropZonePanel.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.PostConstruct\n ], RowGroupDropZonePanel.prototype, \"passBeansUp\", null);\n return RowGroupDropZonePanel;\n}(baseDropZonePanel_1.BaseDropZonePanel));\nexports.RowGroupDropZonePanel = RowGroupDropZonePanel;\n//# sourceMappingURL=rowGroupDropZonePanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar baseDropZonePanel_1 = require(\"./baseDropZonePanel\");\nvar PivotDropZonePanel = /** @class */ (function (_super) {\n __extends(PivotDropZonePanel, _super);\n function PivotDropZonePanel(horizontal) {\n return _super.call(this, horizontal, false, 'pivot') || this;\n }\n PivotDropZonePanel.prototype.passBeansUp = function () {\n _super.prototype.setBeans.call(this, {\n gridOptionsWrapper: this.gridOptionsWrapper,\n eventService: this.eventService,\n context: this.getContext(),\n loggerFactory: this.loggerFactory,\n dragAndDropService: this.dragAndDropService\n });\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var emptyMessage = localeTextFunc('pivotColumnsEmptyMessage', 'Drag here to set column labels');\n var title = localeTextFunc('pivots', 'Column Labels');\n _super.prototype.init.call(this, {\n dragAndDropIcon: core_1.DragAndDropService.ICON_GROUP,\n icon: core_1._.createIconNoSpan('pivotPanel', this.gridOptionsWrapper, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.refresh.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_PIVOT_CHANGED, this.refresh.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.checkVisibility.bind(this));\n this.refresh();\n };\n PivotDropZonePanel.prototype.refresh = function () {\n this.checkVisibility();\n this.refreshGui();\n };\n PivotDropZonePanel.prototype.checkVisibility = function () {\n var pivotMode = this.columnController.isPivotMode();\n if (this.isHorizontal()) {\n // what we do for horizontal (ie the pivot panel at the top) depends\n // on the user property as well as pivotMode.\n switch (this.gridOptionsWrapper.getPivotPanelShow()) {\n case 'always':\n this.setDisplayed(pivotMode);\n break;\n case 'onlyWhenPivoting':\n var pivotActive = this.columnController.isPivotActive();\n this.setDisplayed(pivotMode && pivotActive);\n break;\n default:\n // never show it\n this.setDisplayed(false);\n break;\n }\n }\n else {\n // in toolPanel, the pivot panel is always shown when pivot mode is on\n this.setDisplayed(pivotMode);\n }\n };\n PivotDropZonePanel.prototype.isColumnDroppable = function (column) {\n // we never allow grouping of secondary columns\n if (this.gridOptionsWrapper.isFunctionsReadOnly() || !column.isPrimary()) {\n return false;\n }\n return column.isAllowPivot() && !column.isPivotActive();\n };\n PivotDropZonePanel.prototype.updateColumns = function (columns) {\n if (this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: core_1.Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST,\n columns: columns,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n else {\n this.columnController.setPivotColumns(columns, \"toolPanelUi\");\n }\n };\n PivotDropZonePanel.prototype.getIconName = function () {\n return this.isPotentialDndColumns() ? core_1.DragAndDropService.ICON_PIVOT : core_1.DragAndDropService.ICON_NOT_ALLOWED;\n };\n PivotDropZonePanel.prototype.getExistingColumns = function () {\n return this.columnController.getPivotColumns();\n };\n __decorate([\n core_1.Autowired('columnController')\n ], PivotDropZonePanel.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], PivotDropZonePanel.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], PivotDropZonePanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('loggerFactory')\n ], PivotDropZonePanel.prototype, \"loggerFactory\", void 0);\n __decorate([\n core_1.Autowired('dragAndDropService')\n ], PivotDropZonePanel.prototype, \"dragAndDropService\", void 0);\n __decorate([\n core_1.Autowired('columnApi')\n ], PivotDropZonePanel.prototype, \"columnApi\", void 0);\n __decorate([\n core_1.Autowired('gridApi')\n ], PivotDropZonePanel.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.PostConstruct\n ], PivotDropZonePanel.prototype, \"passBeansUp\", null);\n return PivotDropZonePanel;\n}(baseDropZonePanel_1.BaseDropZonePanel));\nexports.PivotDropZonePanel = PivotDropZonePanel;\n//# sourceMappingURL=pivotDropZonePanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar HorizontalResizeComp = /** @class */ (function (_super) {\n __extends(HorizontalResizeComp, _super);\n function HorizontalResizeComp() {\n return _super.call(this, \"
\") || this;\n }\n HorizontalResizeComp.prototype.setElementToResize = function (elementToResize) {\n this.elementToResize = elementToResize;\n };\n HorizontalResizeComp.prototype.postConstruct = function () {\n var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({\n eResizeBar: this.getGui(),\n dragStartPixels: 1,\n onResizeStart: this.onResizeStart.bind(this),\n onResizing: this.onResizing.bind(this),\n onResizeEnd: this.onResizing.bind(this)\n });\n this.addDestroyFunc(finishedWithResizeFunc);\n this.setInverted(this.gridOptionsWrapper.isEnableRtl());\n };\n HorizontalResizeComp.prototype.onResizeStart = function () {\n this.startingWidth = this.elementToResize.offsetWidth;\n };\n HorizontalResizeComp.prototype.onResizing = function (delta) {\n var direction = this.inverted ? -1 : 1;\n var newWidth = Math.max(100, Math.floor(this.startingWidth - (delta * direction)));\n this.elementToResize.style.width = newWidth + \"px\";\n };\n HorizontalResizeComp.prototype.setInverted = function (inverted) {\n this.inverted = inverted;\n };\n __decorate([\n core_1.Autowired('horizontalResizeService')\n ], HorizontalResizeComp.prototype, \"horizontalResizeService\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], HorizontalResizeComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], HorizontalResizeComp.prototype, \"eventService\", void 0);\n __decorate([\n core_1.PostConstruct\n ], HorizontalResizeComp.prototype, \"postConstruct\", null);\n return HorizontalResizeComp;\n}(core_1.Component));\nexports.HorizontalResizeComp = HorizontalResizeComp;\n//# sourceMappingURL=horizontalResizeComp.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar SideBarButtonsComp = /** @class */ (function (_super) {\n __extends(SideBarButtonsComp, _super);\n function SideBarButtonsComp() {\n var _this = _super.call(this, SideBarButtonsComp.TEMPLATE) || this;\n _this.buttonComps = [];\n return _this;\n }\n SideBarButtonsComp.prototype.setToolPanelDefs = function (toolPanelDefs) {\n toolPanelDefs.forEach(this.addButtonComp.bind(this));\n };\n SideBarButtonsComp.prototype.setActiveButton = function (id) {\n this.buttonComps.forEach(function (comp) {\n comp.setSelected(id === comp.getToolPanelId());\n });\n };\n SideBarButtonsComp.prototype.addButtonComp = function (def) {\n var _this = this;\n var buttonComp = new SideBarButtonComp(def);\n this.getContext().wireBean(buttonComp);\n this.buttonComps.push(buttonComp);\n this.getGui().appendChild(buttonComp.getGui());\n buttonComp.addEventListener(SideBarButtonComp.EVENT_TOGGLE_BUTTON_CLICKED, function () {\n _this.dispatchEvent({\n type: SideBarButtonsComp.EVENT_SIDE_BAR_BUTTON_CLICKED,\n toolPanelId: def.id\n });\n });\n };\n SideBarButtonsComp.prototype.clearButtons = function () {\n if (this.buttonComps) {\n this.buttonComps.forEach(function (comp) { return comp.destroy(); });\n }\n core_1._.clearElement(this.getGui());\n this.buttonComps.length = 0;\n };\n SideBarButtonsComp.prototype.destroy = function () {\n this.clearButtons();\n _super.prototype.destroy.call(this);\n };\n SideBarButtonsComp.EVENT_SIDE_BAR_BUTTON_CLICKED = 'sideBarButtonClicked';\n SideBarButtonsComp.TEMPLATE = \"
\";\n __decorate([\n core_1.Autowired(\"gridOptionsWrapper\")\n ], SideBarButtonsComp.prototype, \"gridOptionsWrapper\", void 0);\n return SideBarButtonsComp;\n}(core_1.Component));\nexports.SideBarButtonsComp = SideBarButtonsComp;\nvar SideBarButtonComp = /** @class */ (function (_super) {\n __extends(SideBarButtonComp, _super);\n function SideBarButtonComp(toolPanelDef) {\n var _this = _super.call(this) || this;\n _this.toolPanelDef = toolPanelDef;\n return _this;\n }\n SideBarButtonComp.prototype.getToolPanelId = function () {\n return this.toolPanelDef.id;\n };\n SideBarButtonComp.prototype.postConstruct = function () {\n var template = this.createTemplate();\n this.setTemplate(template);\n var toggleButton = this.eToggleButton;\n var iconDiv = toggleButton.querySelector('div');\n iconDiv.insertAdjacentElement('afterbegin', core_1._.createIconNoSpan(this.toolPanelDef.iconKey, this.gridOptionsWrapper));\n this.addDestroyableEventListener(this.eToggleButton, 'click', this.onButtonPressed.bind(this));\n };\n SideBarButtonComp.prototype.createTemplate = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var def = this.toolPanelDef;\n var label = translate(def.labelKey, def.labelDefault);\n var res = \"
\\n \\n
\";\n return res;\n };\n SideBarButtonComp.prototype.onButtonPressed = function () {\n this.dispatchEvent({ type: SideBarButtonComp.EVENT_TOGGLE_BUTTON_CLICKED });\n };\n SideBarButtonComp.prototype.setSelected = function (selected) {\n this.addOrRemoveCssClass('ag-selected', selected);\n };\n SideBarButtonComp.EVENT_TOGGLE_BUTTON_CLICKED = 'toggleButtonClicked';\n __decorate([\n core_1.Autowired(\"gridOptionsWrapper\")\n ], SideBarButtonComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.RefSelector('eToggleButton')\n ], SideBarButtonComp.prototype, \"eToggleButton\", void 0);\n __decorate([\n core_1.PostConstruct\n ], SideBarButtonComp.prototype, \"postConstruct\", null);\n return SideBarButtonComp;\n}(core_1.Component));\n//# sourceMappingURL=sideBarButtonsComp.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar ToolPanelColDefService = /** @class */ (function () {\n function ToolPanelColDefService() {\n var _this = this;\n this.isColGroupDef = function (colDef) { return colDef && typeof colDef.children !== 'undefined'; };\n this.getId = function (colDef) {\n return _this.isColGroupDef(colDef) ? colDef.groupId : colDef.colId;\n };\n }\n ToolPanelColDefService.prototype.createColumnTree = function (colDefs) {\n var _this = this;\n var invalidColIds = [];\n var createDummyColGroup = function (abstractColDef, depth) {\n if (_this.isColGroupDef(abstractColDef)) {\n // creating 'dummy' group which is not associated with grid column group\n var groupDef = abstractColDef;\n var groupId = (typeof groupDef.groupId !== 'undefined') ? groupDef.groupId : groupDef.headerName;\n var group = new core_1.OriginalColumnGroup(groupDef, groupId, false, depth);\n var children_1 = [];\n groupDef.children.forEach(function (def) {\n var child = createDummyColGroup(def, depth + 1);\n // check column exists in case invalid colDef is supplied for primary column\n if (child) {\n children_1.push(child);\n }\n });\n group.setChildren(children_1);\n return group;\n }\n else {\n var colDef = abstractColDef;\n var key = colDef.colId ? colDef.colId : colDef.field;\n var column = _this.columnController.getPrimaryColumn(key);\n if (!column) {\n invalidColIds.push(colDef);\n }\n return column;\n }\n };\n var mappedResults = [];\n colDefs.forEach(function (colDef) {\n var result = createDummyColGroup(colDef, 0);\n if (result) {\n // only return correctly mapped colDef results\n mappedResults.push(result);\n }\n });\n if (invalidColIds.length > 0) {\n console.warn('ag-Grid: unable to find grid columns for the supplied colDef(s):', invalidColIds);\n }\n return mappedResults;\n };\n ToolPanelColDefService.prototype.syncLayoutWithGrid = function (syncLayoutCallback) {\n // extract ordered list of leaf path trees (column group hierarchy for each individual leaf column)\n var leafPathTrees = this.getLeafPathTrees();\n // merge leaf path tree taking split column groups into account\n var mergedColumnTrees = this.mergeLeafPathTrees(leafPathTrees);\n // sync layout with merged column trees\n syncLayoutCallback(mergedColumnTrees);\n };\n ToolPanelColDefService.prototype.getLeafPathTrees = function () {\n // leaf tree paths are obtained by walking up the tree starting at a column until we reach the top level group.\n var getLeafPathTree = function (node, childDef) {\n var leafPathTree;\n // build up tree in reverse order\n if (node instanceof core_1.OriginalColumnGroup) {\n if (node.isPadding()) {\n // skip over padding groups\n leafPathTree = childDef;\n }\n else {\n var groupDef = core_1._.assign({}, node.getColGroupDef());\n // ensure group contains groupId\n groupDef.groupId = node.getGroupId();\n groupDef.children = [childDef];\n leafPathTree = groupDef;\n }\n }\n else {\n var colDef = core_1._.assign({}, node.getColDef());\n // ensure col contains colId\n colDef.colId = node.getColId();\n leafPathTree = colDef;\n }\n // walk tree\n var parent = node.getOriginalParent();\n if (parent) {\n // keep walking up the tree until we reach the root\n return getLeafPathTree(parent, leafPathTree);\n }\n else {\n // we have reached the root - exit with resulting leaf path tree\n return leafPathTree;\n }\n };\n // obtain a sorted list of all grid columns\n var allGridColumns = this.columnController.getAllGridColumns();\n // only primary columns and non row group columns should appear in the tool panel\n var allPrimaryGridColumns = allGridColumns.filter(function (column) {\n var colDef = column.getColDef();\n return column.isPrimary() && !colDef.showRowGroup;\n });\n // construct a leaf path tree for each column\n return allPrimaryGridColumns.map(function (col) { return getLeafPathTree(col, col.getColDef()); });\n };\n ToolPanelColDefService.prototype.mergeLeafPathTrees = function (leafPathTrees) {\n var _this = this;\n var getLeafPathString = function (leafPath) {\n var group = leafPath;\n return group.children ? group.groupId + getLeafPathString(group.children[0]) : '';\n };\n var matchingRootGroupIds = function (pathA, pathB) {\n var bothPathsAreGroups = _this.isColGroupDef(pathA) && _this.isColGroupDef(pathB);\n return bothPathsAreGroups && _this.getId(pathA) === _this.getId(pathB);\n };\n var mergeTrees = function (treeA, treeB) {\n if (!_this.isColGroupDef(treeB))\n return treeA;\n var mergeResult = treeA;\n var groupToMerge = treeB;\n if (groupToMerge.children && groupToMerge.groupId) {\n var added = _this.addChildrenToGroup(mergeResult, groupToMerge.groupId, groupToMerge.children[0]);\n if (added)\n return mergeResult;\n }\n groupToMerge.children.forEach(function (child) { return mergeTrees(mergeResult, child); });\n return mergeResult;\n };\n // we can't just merge the leaf path trees as groups can be split apart - instead only merge if leaf\n // path groups with the same root group id are contiguous.\n var mergeColDefs = [];\n for (var i = 1; i <= leafPathTrees.length; i++) {\n var first = leafPathTrees[i - 1];\n var second = leafPathTrees[i];\n if (matchingRootGroupIds(first, second)) {\n leafPathTrees[i] = mergeTrees(first, second);\n }\n else {\n mergeColDefs.push(first);\n }\n }\n return mergeColDefs;\n };\n ToolPanelColDefService.prototype.addChildrenToGroup = function (tree, groupId, colDef) {\n var _this = this;\n var subGroupIsSplit = function (currentGroup, groupToAdd) {\n var existingChildIds = currentGroup.children.map(_this.getId);\n var childGroupAlreadyExists = core_1._.includes(existingChildIds, _this.getId(groupToAdd));\n var lastChild = core_1._.last(currentGroup.children);\n var lastChildIsDifferent = lastChild && _this.getId(lastChild) !== _this.getId(groupToAdd);\n return childGroupAlreadyExists && lastChildIsDifferent;\n };\n if (!this.isColGroupDef(tree))\n return true;\n var currentGroup = tree;\n var groupToAdd = colDef;\n if (subGroupIsSplit(currentGroup, groupToAdd)) {\n currentGroup.children.push(groupToAdd);\n return true;\n }\n if (currentGroup.groupId === groupId) {\n // add children that don't already exist to group\n var existingChildIds = currentGroup.children.map(this.getId);\n var colDefAlreadyPresent = core_1._.includes(existingChildIds, this.getId(groupToAdd));\n if (!colDefAlreadyPresent) {\n currentGroup.children.push(groupToAdd);\n return true;\n }\n }\n // recurse until correct group is found to add children\n currentGroup.children.forEach(function (subGroup) { return _this.addChildrenToGroup(subGroup, groupId, colDef); });\n return false;\n };\n __decorate([\n core_1.Autowired('columnController')\n ], ToolPanelColDefService.prototype, \"columnController\", void 0);\n ToolPanelColDefService = __decorate([\n core_1.Bean('toolPanelColDefService')\n ], ToolPanelColDefService);\n return ToolPanelColDefService;\n}());\nexports.ToolPanelColDefService = ToolPanelColDefService;\n//# sourceMappingURL=toolPanelColDefService.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar excelExportModule_1 = require(\"./excelExportModule\");\nexports.ExcelExportModule = excelExportModule_1.ExcelExportModule;\n//# sourceMappingURL=main.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar numberFormatFactory = {\n getTemplate: function (numberFormat) {\n var formatCode = numberFormat.formatCode, numFmtId = numberFormat.numFmtId;\n return {\n name: \"numFmt\",\n properties: {\n rawMap: {\n formatCode: formatCode,\n numFmtId: numFmtId\n }\n }\n };\n }\n};\nexports.default = numberFormatFactory;\nexports.numberFormatMap = {\n '0': 1,\n '0.00': 2,\n '#,##0': 3,\n '#,##0.00': 4,\n '0%': 9,\n '0.00%': 10,\n '0.00E+00': 11,\n '# ?/?': 12,\n '# ??/??': 13,\n 'mm-dd-yy': 14,\n 'd-mmm-yy': 15,\n 'd-mmm': 16,\n 'mmm-yy': 17,\n 'h:mm AM/PM': 18,\n 'h:mm:ss AM/PM': 19,\n 'h:mm': 20,\n 'h:mm:ss': 21,\n 'm/d/yy h:mm': 22,\n '#,##0 ;(#,##0)': 37,\n '#,##0 ;[Red](#,##0)': 38,\n '#,##0.00;(#,##0.00)': 39,\n '#,##0.00;[Red](#,##0.00)': 40,\n 'mm:ss': 45,\n '[h]:mm:ss': 46,\n 'mmss.0': 47,\n '##0.0E+0': 48,\n '@': 49\n};\n//# sourceMappingURL=numberFormat.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar fontFactory = {\n getTemplate: function (font) {\n var _a = font.size, size = _a === void 0 ? 14 : _a, colorTheme = font.colorTheme, _b = font.color, color = _b === void 0 ? '00000000' : _b, _c = font.name, name = _c === void 0 ? 'Calibri' : _c, family = font.family, scheme = font.scheme, italic = font.italic, bold = font.bold, strike = font.strike, outline = font.outline, shadow = font.shadow, underline = font.underline;\n var children = [\n { name: 'sz', properties: { rawMap: { val: size } } },\n { name: 'color', properties: { rawMap: { theme: colorTheme, rgb: color } } },\n { name: 'name', properties: { rawMap: { val: name } } }\n ];\n if (family) {\n children.push({ name: 'family', properties: { rawMap: { val: family } } });\n }\n if (scheme) {\n children.push({ name: 'scheme', properties: { rawMap: { val: scheme } } });\n }\n if (italic) {\n children.push({ name: 'i' });\n }\n if (bold) {\n children.push({ name: 'b' });\n }\n if (strike) {\n children.push({ name: 'strike' });\n }\n if (outline) {\n children.push({ name: 'outline' });\n }\n if (shadow) {\n children.push({ name: 'shadow' });\n }\n if (underline) {\n var lUnder = underline.toLocaleLowerCase();\n children.push({ name: 'u', properties: { rawMap: { val: lUnder === 'double' ? 'double' : 'single' } } });\n }\n return {\n name: \"font\",\n children: children\n };\n }\n};\nexports.default = fontFactory;\nexports.getFamilyId = function (name) {\n var families = ['Automatic', 'Roman', 'Swiss', 'Modern', 'Script', 'Decorative'];\n var pos = families.indexOf(name || 'Automatic');\n return Math.max(pos, 0);\n};\n//# sourceMappingURL=font.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar stylesheet_1 = require(\"./stylesheet\");\nvar getBorderColor = function (color) {\n return {\n name: 'color',\n properties: {\n rawMap: {\n rgb: stylesheet_1.convertLegacyColor(color || '#000000')\n }\n }\n };\n};\nvar borderFactory = {\n getTemplate: function (border) {\n var left = border.left, right = border.right, top = border.top, bottom = border.bottom, diagonal = border.diagonal;\n var leftChildren = left ? [getBorderColor(left.color)] : undefined;\n var rightChildren = right ? [getBorderColor(right.color)] : undefined;\n var topChildren = top ? [getBorderColor(top.color)] : undefined;\n var bottomChildren = bottom ? [getBorderColor(bottom.color)] : undefined;\n var diagonalChildren = diagonal ? [getBorderColor(diagonal.color)] : undefined;\n return {\n name: 'border',\n children: [{\n name: 'left',\n properties: { rawMap: { style: left && left.style } },\n children: leftChildren\n }, {\n name: 'right',\n properties: { rawMap: { style: right && right.style } },\n children: rightChildren\n }, {\n name: 'top',\n properties: { rawMap: { style: top && top.style } },\n children: topChildren\n }, {\n name: 'bottom',\n properties: { rawMap: { style: bottom && bottom.style } },\n children: bottomChildren\n }, {\n name: 'diagonal',\n properties: { rawMap: { style: diagonal && diagonal.style } },\n children: diagonalChildren\n }]\n };\n }\n};\nexports.default = borderFactory;\nvar getWeightName = function (value) {\n if (value === 1) {\n return 'thin';\n }\n if (value === 2) {\n return 'medium';\n }\n if (value === 3) {\n return 'thick';\n }\n return 'hair';\n};\nvar mappedNames = {\n None: 'None',\n Dot: 'Dotted',\n Dash: 'Dashed',\n Double: 'Double',\n DashDot: 'DashDot',\n DashDotDot: 'DashDotDot',\n SlantDashDot: 'SlantDashDot'\n};\nvar mediumBorders = ['Dashed', 'DashDot', 'DashDotDot'];\nexports.convertLegacyBorder = function (type, weight) {\n // Legacy Types are: None, Continuous, Dash, Dot, DashDot, DashDotDot, SlantDashDot, and Double\n // Weight represents: 0—Hairline, 1—Thin , 2—Medium, 3—Thick\n // New types: none, thin, medium, dashed, dotted, thick, double, hair, mediumDashed, dashDot, mediumDashDot,\n // dashDotDot, mediumDashDotDot, slantDashDot\n var namedWeight = getWeightName(weight);\n var mappedName = mappedNames[type];\n if (!type) {\n return 'thin';\n }\n if (type === 'Continuous') {\n return namedWeight;\n }\n if (namedWeight === 'medium' && mediumBorders.indexOf(mappedName) > 0) {\n return \"medium\" + mappedName;\n }\n return mappedName.charAt(0).toLowerCase() + mappedName.substr(1);\n};\n//# sourceMappingURL=border.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar alignment_1 = require(\"./alignment\");\nvar protection_1 = require(\"./protection\");\nvar xfFactory = {\n getTemplate: function (xf) {\n var alignment = xf.alignment, borderId = xf.borderId, fillId = xf.fillId, fontId = xf.fontId, numFmtId = xf.numFmtId, protection = xf.protection, xfId = xf.xfId;\n var children = [];\n if (alignment) {\n children.push(alignment_1.default.getTemplate(alignment));\n }\n if (protection) {\n children.push(protection_1.default.getTemplate(protection));\n }\n return {\n name: \"xf\",\n properties: {\n rawMap: {\n applyAlignment: alignment ? 1 : undefined,\n applyProtection: protection ? 1 : undefined,\n applyBorder: borderId ? 1 : undefined,\n borderId: borderId,\n fillId: fillId,\n applyFont: fontId ? 1 : undefined,\n fontId: fontId,\n applyNumberFormat: numFmtId ? 1 : undefined,\n numFmtId: numFmtId,\n xfId: xfId\n }\n },\n children: children.length ? children : undefined\n };\n }\n};\nexports.default = xfFactory;\n//# sourceMappingURL=xf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar column_1 = require(\"./column\");\nvar row_1 = require(\"./row\");\nvar mergeCell_1 = require(\"./mergeCell\");\nvar updateColMinMax = function (col, min, range, prevCol) {\n if (!col.min) {\n col.min = min;\n col.max = min + range;\n return;\n }\n var currentMin = min;\n if (prevCol) {\n currentMin = Math.max(currentMin, prevCol.min);\n }\n col.min = Math.max(col.min, currentMin);\n col.max = Math.max(col.max, currentMin + range);\n};\nvar getMergedCells = function (rows, cols) {\n var mergedCells = [];\n rows.forEach(function (currentRow, rowIdx) {\n var cells = currentRow.cells;\n var merges = 0;\n currentRow.index = rowIdx + 1;\n var lastCol;\n cells.forEach(function (currentCell, cellIdx) {\n var min = cellIdx + merges + 1;\n var start = exports.getExcelColumnName(min);\n var outputRow = rowIdx + 1;\n if (currentCell.mergeAcross) {\n merges += currentCell.mergeAcross;\n var end = exports.getExcelColumnName(cellIdx + merges + 1);\n mergedCells.push(\"\" + start + outputRow + \":\" + end + outputRow);\n }\n if (!cols[min - 1]) {\n cols[min - 1] = {};\n }\n updateColMinMax(cols[min - 1], min, merges, lastCol);\n lastCol = cols[min - 1];\n currentCell.ref = \"\" + start + outputRow;\n });\n });\n return mergedCells;\n};\nexports.getExcelColumnName = function (colIdx) {\n var startCode = 65;\n var tableWidth = 26;\n var fromCharCode = String.fromCharCode;\n var pos = Math.floor(colIdx / tableWidth);\n var tableIdx = colIdx % tableWidth;\n if (!pos || colIdx === tableWidth) {\n return fromCharCode(startCode + colIdx - 1);\n }\n if (!tableIdx) {\n return exports.getExcelColumnName(pos - 1) + 'Z';\n }\n if (pos < tableWidth) {\n return fromCharCode(startCode + pos - 1) + fromCharCode(startCode + tableIdx - 1);\n }\n return exports.getExcelColumnName(pos) + fromCharCode(startCode + tableIdx - 1);\n};\nvar worksheetFactory = {\n getTemplate: function (config) {\n var table = config.table;\n var rows = table.rows, columns = table.columns;\n var mergedCells = (columns && columns.length) ? getMergedCells(rows, columns) : [];\n var children = [];\n if (columns.length) {\n children.push({\n name: 'cols',\n children: columns.map(column_1.default.getTemplate)\n });\n }\n if (rows.length) {\n children.push({\n name: 'sheetData',\n children: rows.map(row_1.default.getTemplate)\n });\n }\n if (mergedCells.length) {\n children.push({\n name: 'mergeCells',\n properties: {\n rawMap: {\n count: mergedCells.length\n }\n },\n children: mergedCells.map(mergeCell_1.default.getTemplate)\n });\n }\n return {\n name: \"worksheet\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n r: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"\n }\n }],\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"\n }\n },\n children: children\n };\n }\n};\nexports.default = worksheetFactory;\n//# sourceMappingURL=worksheet.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar csv_export_1 = require(\"@ag-grid-community/csv-export\");\nvar ExcelXmlSerializingSession = /** @class */ (function (_super) {\n __extends(ExcelXmlSerializingSession, _super);\n function ExcelXmlSerializingSession(config) {\n var _this = _super.call(this, config) || this;\n _this.mixedStyles = {};\n _this.mixedStyleCounter = 0;\n _this.rows = [];\n _this.config = core_1._.assign({}, config);\n _this.stylesByIds = {};\n _this.config.baseExcelStyles.forEach(function (style) {\n _this.stylesByIds[style.id] = style;\n });\n _this.excelStyles = __spreadArrays(_this.config.baseExcelStyles);\n return _this;\n }\n ExcelXmlSerializingSession.prototype.addCustomContent = function (customContent) {\n var _this = this;\n customContent.forEach(function (cells) { return _this.rows.push({ cells: cells }); });\n };\n ExcelXmlSerializingSession.prototype.prepare = function (columnsToExport) {\n var _this = this;\n _super.prototype.prepare.call(this, columnsToExport);\n this.cols = columnsToExport.map(function (col, i) { return _this.convertColumnToExcel(col, i); });\n };\n ExcelXmlSerializingSession.prototype.onNewHeaderGroupingRow = function () {\n var _this = this;\n var currentCells = [];\n this.rows.push({\n cells: currentCells,\n height: this.config.headerRowHeight\n });\n return {\n onColumn: function (header, index, span) {\n var styleIds = _this.config.styleLinker(csv_export_1.RowType.HEADER_GROUPING, 1, index, \"grouping-\" + header, undefined, undefined);\n currentCells.push(_this.createMergedCell((styleIds && styleIds.length > 0) ? styleIds[0] : undefined, \"String\", header, span));\n }\n };\n };\n ExcelXmlSerializingSession.prototype.onNewHeaderRow = function () {\n return this.onNewRow(this.onNewHeaderColumn, this.config.headerRowHeight);\n };\n ExcelXmlSerializingSession.prototype.onNewBodyRow = function () {\n return this.onNewRow(this.onNewBodyColumn, this.config.rowHeight);\n };\n ExcelXmlSerializingSession.prototype.onNewRow = function (onNewColumnAccumulator, height) {\n var currentCells = [];\n this.rows.push({\n cells: currentCells,\n height: height\n });\n return {\n onColumn: onNewColumnAccumulator.bind(this, this.rows.length, currentCells)()\n };\n };\n ExcelXmlSerializingSession.prototype.onNewHeaderColumn = function (rowIndex, currentCells) {\n var _this = this;\n return function (column, index) {\n var nameForCol = _this.extractHeaderValue(column);\n var styleIds = _this.config.styleLinker(csv_export_1.RowType.HEADER, rowIndex, index, nameForCol, column, undefined);\n currentCells.push(_this.createCell((styleIds && styleIds.length > 0) ? styleIds[0] : undefined, 'String', nameForCol));\n };\n };\n ExcelXmlSerializingSession.prototype.parse = function () {\n // adding custom content might have made some rows wider than the grid, so add new columns\n var longestRow = this.rows.reduce(function (a, b) { return Math.max(a, b.cells.length); }, 0);\n while (this.cols.length < longestRow) {\n this.cols.push(this.convertColumnToExcel(null, this.cols.length + 1));\n }\n var data = [{\n name: this.config.sheetName,\n table: {\n columns: this.cols,\n rows: this.rows\n }\n }];\n return this.createExcel(data);\n };\n ExcelXmlSerializingSession.prototype.createExcel = function (data) {\n return this.config.excelFactory.createExcel(this.excelStyles, data, []);\n };\n ExcelXmlSerializingSession.prototype.onNewBodyColumn = function (rowIndex, currentCells) {\n var _this = this;\n return function (column, index, node) {\n var valueForCell = _this.extractRowCellValue(column, index, core_1.Constants.EXPORT_TYPE_EXCEL, node);\n var styleIds = _this.config.styleLinker(csv_export_1.RowType.BODY, rowIndex, index, valueForCell, column, node);\n var excelStyleId;\n if (styleIds && styleIds.length == 1) {\n excelStyleId = styleIds[0];\n }\n else if (styleIds && styleIds.length > 1) {\n var key = styleIds.join(\"-\");\n if (!_this.mixedStyles[key]) {\n _this.addNewMixedStyle(styleIds);\n }\n excelStyleId = _this.mixedStyles[key].excelID;\n }\n currentCells.push(_this.createCell(excelStyleId, _this.getDataTypeForValue(valueForCell), valueForCell));\n };\n };\n ExcelXmlSerializingSession.prototype.getDataTypeForValue = function (valueForCell) {\n return core_1._.isNumeric(valueForCell) ? 'Number' : 'String';\n };\n ExcelXmlSerializingSession.prototype.addNewMixedStyle = function (styleIds) {\n var _this = this;\n this.mixedStyleCounter += 1;\n var excelId = 'mixedStyle' + this.mixedStyleCounter;\n var resultantStyle = {};\n styleIds.forEach(function (styleId) {\n _this.excelStyles.forEach(function (excelStyle) {\n if (excelStyle.id === styleId) {\n core_1._.mergeDeep(resultantStyle, core_1._.deepCloneObject(excelStyle));\n }\n });\n });\n resultantStyle.id = excelId;\n resultantStyle.name = excelId;\n var key = styleIds.join(\"-\");\n this.mixedStyles[key] = {\n excelID: excelId,\n key: key,\n result: resultantStyle\n };\n this.excelStyles.push(resultantStyle);\n this.stylesByIds[excelId] = resultantStyle;\n };\n ExcelXmlSerializingSession.prototype.styleExists = function (styleId) {\n if (styleId == null) {\n return false;\n }\n return this.stylesByIds[styleId];\n };\n ExcelXmlSerializingSession.prototype.createCell = function (styleId, type, value) {\n var _this = this;\n var actualStyle = styleId && this.stylesByIds[styleId];\n var styleExists = actualStyle !== undefined;\n function getType() {\n if (styleExists &&\n actualStyle.dataType) {\n switch (actualStyle.dataType) {\n case 'string':\n return 'String';\n case 'number':\n return 'Number';\n case 'dateTime':\n return 'DateTime';\n case 'error':\n return 'Error';\n case 'boolean':\n return 'Boolean';\n default:\n console.warn(\"ag-grid: Unrecognized data type for excel export [\" + actualStyle.id + \".dataType=\" + actualStyle.dataType + \"]\");\n }\n }\n return type;\n }\n var typeTransformed = getType();\n var massageText = function (val) {\n if (_this.config.suppressTextAsCDATA) {\n return core_1._.escape(val);\n }\n var cdataStart = '';\n var cdataEndRegex = new RegExp(cdataEnd, \"g\");\n return cdataStart\n // CDATA sections are closed by the character sequence ']]>' and there is no\n // way of escaping this, so if the text contains the offending sequence, emit\n // multiple CDATA sections and split the characters between them.\n + String(val).replace(cdataEndRegex, ']]' + cdataEnd + cdataStart + '>')\n + cdataEnd;\n };\n var convertBoolean = function (val) {\n if (!val || val === '0' || val === 'false') {\n return '0';\n }\n return '1';\n };\n return {\n styleId: styleExists ? styleId : undefined,\n data: {\n type: typeTransformed,\n value: typeTransformed === 'String' ? massageText(value) :\n typeTransformed === 'Number' ? Number(value).valueOf() + '' :\n typeTransformed === 'Boolean' ? convertBoolean(value) :\n value\n }\n };\n };\n ExcelXmlSerializingSession.prototype.createMergedCell = function (styleId, type, value, numOfCells) {\n return {\n styleId: this.styleExists(styleId) ? styleId : undefined,\n data: {\n type: type,\n value: value\n },\n mergeAcross: numOfCells\n };\n };\n ExcelXmlSerializingSession.prototype.convertColumnToExcel = function (column, index) {\n var columnWidth = this.config.columnWidth;\n if (columnWidth) {\n if (typeof columnWidth === 'number') {\n return { width: columnWidth };\n }\n else {\n return { width: columnWidth({ column: column, index: index }) };\n }\n }\n if (column) {\n var smallestUsefulWidth = 75;\n return { width: Math.max(column.getActualWidth(), smallestUsefulWidth) };\n }\n return {};\n };\n return ExcelXmlSerializingSession;\n}(csv_export_1.BaseGridSerializingSession));\nexports.ExcelXmlSerializingSession = ExcelXmlSerializingSession;\n//# sourceMappingURL=excelXmlSerializingSession.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar filtersToolPanelModule_1 = require(\"./filtersToolPanelModule\");\nexports.FiltersToolPanelModule = filtersToolPanelModule_1.FiltersToolPanelModule;\n//# sourceMappingURL=main.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar EXPAND_STATE;\n(function (EXPAND_STATE) {\n EXPAND_STATE[EXPAND_STATE[\"EXPANDED\"] = 0] = \"EXPANDED\";\n EXPAND_STATE[EXPAND_STATE[\"COLLAPSED\"] = 1] = \"COLLAPSED\";\n EXPAND_STATE[EXPAND_STATE[\"INDETERMINATE\"] = 2] = \"INDETERMINATE\";\n})(EXPAND_STATE = exports.EXPAND_STATE || (exports.EXPAND_STATE = {}));\nvar FiltersToolPanelHeaderPanel = /** @class */ (function (_super) {\n __extends(FiltersToolPanelHeaderPanel, _super);\n function FiltersToolPanelHeaderPanel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FiltersToolPanelHeaderPanel.prototype.preConstruct = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.setTemplate(\"
\\n
\\n
\\n \\n
\\n
\");\n };\n FiltersToolPanelHeaderPanel.prototype.postConstruct = function () {\n this.createExpandIcons();\n this.setExpandState(EXPAND_STATE.EXPANDED);\n this.addDestroyableEventListener(this.eExpand, 'click', this.onExpandClicked.bind(this));\n this.addDestroyableEventListener(this.eSearchTextField, 'input', this.onSearchTextChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_NEW_COLUMNS_LOADED, this.showOrHideOptions.bind(this));\n };\n FiltersToolPanelHeaderPanel.prototype.init = function (params) {\n this.params = params;\n if (this.columnController.isReady()) {\n this.showOrHideOptions();\n }\n };\n FiltersToolPanelHeaderPanel.prototype.createExpandIcons = function () {\n this.eExpand.appendChild(this.eExpandChecked = core_1._.createIconNoSpan('columnSelectOpen', this.gridOptionsWrapper));\n this.eExpand.appendChild(this.eExpandUnchecked = core_1._.createIconNoSpan('columnSelectClosed', this.gridOptionsWrapper));\n this.eExpand.appendChild(this.eExpandIndeterminate = core_1._.createIconNoSpan('columnSelectIndeterminate', this.gridOptionsWrapper));\n };\n // we only show expand / collapse if we are showing filters\n FiltersToolPanelHeaderPanel.prototype.showOrHideOptions = function () {\n var showFilterSearch = !this.params.suppressFilterSearch;\n var showExpand = !this.params.suppressExpandAll;\n var isFilterGroupPresent = function (col) { return col.getOriginalParent() && col.isFilterAllowed(); };\n var filterGroupsPresent = this.columnController.getAllGridColumns().some(isFilterGroupPresent);\n core_1._.setDisplayed(this.eFilterWrapper, showFilterSearch);\n core_1._.setDisplayed(this.eExpand, showExpand && filterGroupsPresent);\n };\n FiltersToolPanelHeaderPanel.prototype.onSearchTextChanged = function () {\n var _this = this;\n if (!this.onSearchTextChangedDebounced) {\n this.onSearchTextChangedDebounced = core_1._.debounce(function () {\n _this.dispatchEvent({ type: 'searchChanged', searchText: _this.eSearchTextField.value });\n }, 300);\n }\n this.onSearchTextChangedDebounced();\n };\n FiltersToolPanelHeaderPanel.prototype.onExpandClicked = function () {\n var event = this.currentExpandState === EXPAND_STATE.EXPANDED ? { type: 'collapseAll' } : { type: 'expandAll' };\n this.dispatchEvent(event);\n };\n FiltersToolPanelHeaderPanel.prototype.setExpandState = function (state) {\n this.currentExpandState = state;\n core_1._.setDisplayed(this.eExpandChecked, this.currentExpandState === EXPAND_STATE.EXPANDED);\n core_1._.setDisplayed(this.eExpandUnchecked, this.currentExpandState === EXPAND_STATE.COLLAPSED);\n core_1._.setDisplayed(this.eExpandIndeterminate, this.currentExpandState === EXPAND_STATE.INDETERMINATE);\n };\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], FiltersToolPanelHeaderPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], FiltersToolPanelHeaderPanel.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], FiltersToolPanelHeaderPanel.prototype, \"eventService\", void 0);\n __decorate([\n core_1.RefSelector('eExpand')\n ], FiltersToolPanelHeaderPanel.prototype, \"eExpand\", void 0);\n __decorate([\n core_1.RefSelector('eFilterWrapper')\n ], FiltersToolPanelHeaderPanel.prototype, \"eFilterWrapper\", void 0);\n __decorate([\n core_1.RefSelector('eFilterTextField')\n ], FiltersToolPanelHeaderPanel.prototype, \"eSearchTextField\", void 0);\n __decorate([\n core_1.PreConstruct\n ], FiltersToolPanelHeaderPanel.prototype, \"preConstruct\", null);\n __decorate([\n core_1.PostConstruct\n ], FiltersToolPanelHeaderPanel.prototype, \"postConstruct\", null);\n return FiltersToolPanelHeaderPanel;\n}(core_1.Component));\nexports.FiltersToolPanelHeaderPanel = FiltersToolPanelHeaderPanel;\n//# sourceMappingURL=filtersToolPanelHeaderPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar ToolPanelFilterComp = /** @class */ (function (_super) {\n __extends(ToolPanelFilterComp, _super);\n function ToolPanelFilterComp(hideHeader) {\n if (hideHeader === void 0) { hideHeader = false; }\n var _this = _super.call(this, ToolPanelFilterComp.TEMPLATE) || this;\n _this.expanded = false;\n _this.hideHeader = hideHeader;\n return _this;\n }\n ToolPanelFilterComp.prototype.postConstruct = function () {\n this.eExpandChecked = core_1._.createIconNoSpan('columnSelectOpen', this.gridOptionsWrapper);\n this.eExpandUnchecked = core_1._.createIconNoSpan('columnSelectClosed', this.gridOptionsWrapper);\n this.eExpand.appendChild(this.eExpandChecked);\n this.eExpand.appendChild(this.eExpandUnchecked);\n };\n ToolPanelFilterComp.prototype.setColumn = function (column) {\n this.column = column;\n this.eFilterName.innerText = this.columnController.getDisplayNameForColumn(this.column, 'header', false);\n this.addDestroyableEventListener(this.eFilterToolPanelHeader, 'click', this.toggleExpanded.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_FILTER_OPENED, this.onFilterOpened.bind(this));\n this.addInIcon('filter', this.eFilterIcon, this.column);\n core_1._.addOrRemoveCssClass(this.eFilterIcon, 'ag-hidden', !this.isFilterActive());\n core_1._.addCssClass(this.eExpandChecked, 'ag-hidden');\n if (this.hideHeader) {\n core_1._.addOrRemoveCssClass(this.eFilterToolPanelHeader, 'ag-hidden', true);\n }\n this.addDestroyableEventListener(this.column, core_1.Column.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n };\n ToolPanelFilterComp.prototype.getColumn = function () {\n return this.column;\n };\n ToolPanelFilterComp.prototype.getColumnFilterName = function () {\n return this.columnController.getDisplayNameForColumn(this.column, 'header', false);\n };\n ToolPanelFilterComp.prototype.addInIcon = function (iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n var eIcon = core_1._.createIconNoSpan(iconName, this.gridOptionsWrapper, column);\n eParent.appendChild(eIcon);\n };\n ToolPanelFilterComp.prototype.isFilterActive = function () {\n return this.filterManager.isFilterActive(this.column);\n };\n ToolPanelFilterComp.prototype.onFilterChanged = function () {\n core_1._.addOrRemoveCssClass(this.eFilterIcon, 'ag-hidden', !this.isFilterActive());\n this.dispatchEvent({ type: core_1.Column.EVENT_FILTER_CHANGED });\n };\n ToolPanelFilterComp.prototype.toggleExpanded = function () {\n this.expanded ? this.collapse() : this.expand();\n };\n ToolPanelFilterComp.prototype.expand = function () {\n var _this = this;\n if (this.expanded)\n return;\n this.expanded = true;\n var container = core_1._.loadTemplate(\"
\");\n var filterPromise = this.filterManager.getOrCreateFilterWrapper(this.column, 'TOOLBAR').filterPromise;\n if (filterPromise) {\n filterPromise.then(function (filter) {\n _this.underlyingFilter = filter;\n container.appendChild(filter.getGui());\n _this.agFilterToolPanelBody.appendChild(container);\n if (filter.afterGuiAttached) {\n filter.afterGuiAttached({});\n }\n });\n }\n core_1._.setDisplayed(this.eExpandChecked, true);\n core_1._.setDisplayed(this.eExpandUnchecked, false);\n };\n ToolPanelFilterComp.prototype.collapse = function () {\n if (!this.expanded)\n return;\n this.expanded = false;\n this.agFilterToolPanelBody.removeChild(this.agFilterToolPanelBody.children[0]);\n core_1._.setDisplayed(this.eExpandChecked, false);\n core_1._.setDisplayed(this.eExpandUnchecked, true);\n };\n ToolPanelFilterComp.prototype.refreshFilter = function () {\n var filter = this.underlyingFilter;\n if (!filter)\n return;\n // set filters should be updated when the filter has been changed elsewhere, i.e. via api. Note that we can't\n // use 'afterGuiAttached' to refresh the virtual list as it also focuses on the mini filter which changes the\n // scroll position in the filter list panel\n var isSetFilter = filter.refreshVirtualList;\n if (isSetFilter) {\n filter.refreshVirtualList();\n }\n };\n ToolPanelFilterComp.prototype.onFilterOpened = function (event) {\n if (event.source !== 'COLUMN_MENU') {\n return;\n }\n if (event.column !== this.column) {\n return;\n }\n if (!this.expanded) {\n return;\n }\n this.collapse();\n };\n ToolPanelFilterComp.TEMPLATE = \"
\\n
\\n
\\n \\n \\n
\\n
\";\n __decorate([\n core_1.RefSelector('eFilterToolPanelHeader')\n ], ToolPanelFilterComp.prototype, \"eFilterToolPanelHeader\", void 0);\n __decorate([\n core_1.RefSelector('eFilterName')\n ], ToolPanelFilterComp.prototype, \"eFilterName\", void 0);\n __decorate([\n core_1.RefSelector('agFilterToolPanelBody')\n ], ToolPanelFilterComp.prototype, \"agFilterToolPanelBody\", void 0);\n __decorate([\n core_1.RefSelector('eFilterIcon')\n ], ToolPanelFilterComp.prototype, \"eFilterIcon\", void 0);\n __decorate([\n core_1.RefSelector('eExpand')\n ], ToolPanelFilterComp.prototype, \"eExpand\", void 0);\n __decorate([\n core_1.Autowired('gridApi')\n ], ToolPanelFilterComp.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.Autowired('filterManager')\n ], ToolPanelFilterComp.prototype, \"filterManager\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], ToolPanelFilterComp.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], ToolPanelFilterComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], ToolPanelFilterComp.prototype, \"columnController\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ToolPanelFilterComp.prototype, \"postConstruct\", null);\n return ToolPanelFilterComp;\n}(core_1.Component));\nexports.ToolPanelFilterComp = ToolPanelFilterComp;\n//# sourceMappingURL=toolPanelFilterComp.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridChartsModule_1 = require(\"./gridChartsModule\");\nexports.GridChartsModule = gridChartsModule_1.GridChartsModule;\n//# sourceMappingURL=main.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar group_1 = require(\"./scene/group\");\nvar selection_1 = require(\"./scene/selection\");\nvar line_1 = require(\"./scene/shape/line\");\nvar ticks_1 = require(\"./util/ticks\");\nvar angle_1 = require(\"./util/angle\");\nvar text_1 = require(\"./scene/shape/text\");\nvar arc_1 = require(\"./scene/shape/arc\");\nvar bbox_1 = require(\"./scene/bbox\");\nvar matrix_1 = require(\"./scene/matrix\");\n// import { Rect } from \"./scene/shape/rect\"; // debug (bbox)\nvar Tags;\n(function (Tags) {\n Tags[Tags[\"Tick\"] = 0] = \"Tick\";\n Tags[Tags[\"GridLine\"] = 1] = \"GridLine\";\n})(Tags || (Tags = {}));\nvar AxisTick = /** @class */ (function () {\n function AxisTick() {\n /**\n * The line width to be used by axis ticks.\n */\n this.width = 1;\n /**\n * The line length to be used by axis ticks.\n */\n this.size = 6;\n /**\n * The color of the axis ticks.\n * Use `null` rather than `rgba(0, 0, 0, 0)` to make the ticks invisible.\n */\n this.color = 'rgba(195, 195, 195, 1)';\n /**\n * A hint of how many ticks to use (the exact number of ticks might differ),\n * a `TimeInterval` or a `CountableTimeInterval`.\n * For example:\n *\n * axis.tick.count = 5;\n * axis.tick.count = year;\n * axis.tick.count = month.every(6);\n */\n this.count = 10;\n }\n return AxisTick;\n}());\nexports.AxisTick = AxisTick;\nvar AxisLabel = /** @class */ (function () {\n function AxisLabel() {\n this.fontSize = 12;\n this.fontFamily = 'Verdana, sans-serif';\n /**\n * The padding between the labels and the ticks.\n */\n this.padding = 5;\n /**\n * The color of the labels.\n * Use `null` rather than `rgba(0, 0, 0, 0)` to make labels invisible.\n */\n this.color = 'rgba(87, 87, 87, 1)';\n /**\n * Custom label rotation in degrees.\n * Labels are rendered perpendicular to the axis line by default.\n * Or parallel to the axis line, if the {@link parallelLabels} is set to `true`.\n * The value of this config is used as the angular offset/deflection\n * from the default rotation.\n */\n this.rotation = 0;\n /**\n * By default labels and ticks are positioned to the left of the axis line.\n * `true` positions the labels to the right of the axis line.\n * However, if the axis is rotated, its easier to think in terms\n * of this side or the opposite side, rather than left and right.\n * We use the term `mirror` for conciseness, although it's not\n * true mirroring - for example, when a label is rotated, so that\n * it is inclined at the 45 degree angle, text flowing from north-west\n * to south-east, ending at the tick to the left of the axis line,\n * and then we set this config to `true`, the text will still be flowing\n * from north-west to south-east, _starting_ at the tick to the right\n * of the axis line.\n */\n this.mirrored = false;\n /**\n * Labels are rendered perpendicular to the axis line by default.\n * Setting this config to `true` makes labels render parallel to the axis line\n * and center aligns labels' text at the ticks.\n */\n this.parallel = false;\n }\n Object.defineProperty(AxisLabel.prototype, \"format\", {\n get: function () {\n return this._format;\n },\n set: function (value) {\n // See `TimeLocaleObject` docs for the list of supported format directives.\n if (this._format !== value) {\n this._format = value;\n if (this.onFormatChange) {\n this.onFormatChange(value);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n return AxisLabel;\n}());\nexports.AxisLabel = AxisLabel;\n/**\n * A general purpose linear axis with no notion of orientation.\n * The axis is always rendered vertically, with horizontal labels positioned to the left\n * of the axis line by default. The axis can be {@link rotation | rotated} by an arbitrary angle,\n * so that it can be used as a top, right, bottom, left, radial or any other kind\n * of linear axis.\n * The generic `D` parameter is the type of the domain of the axis' scale.\n * The output range of the axis' scale is always numeric (screen coordinates).\n */\nvar Axis = /** @class */ (function () {\n function Axis(scale) {\n this.lineNode = new line_1.Line();\n this.group = new group_1.Group();\n this.line = {\n width: 1,\n color: 'rgba(195, 195, 195, 1)'\n };\n this.tick = new AxisTick();\n this.label = new AxisLabel();\n this.translation = { x: 0, y: 0 };\n this.rotation = 0; // axis rotation angle in degrees\n this._title = undefined;\n /**\n * The length of the grid. The grid is only visible in case of a non-zero value.\n * In case {@link radialGrid} is `true`, the value is interpreted as an angle\n * (in degrees).\n */\n this._gridLength = 0;\n /**\n * The array of styles to cycle through when rendering grid lines.\n * For example, use two {@link GridStyle} objects for alternating styles.\n * Contains only one {@link GridStyle} object by default, meaning all grid lines\n * have the same style.\n */\n this.gridStyle = [{\n stroke: 'rgba(219, 219, 219, 1)',\n lineDash: [4, 2]\n }];\n /**\n * `false` - render grid as lines of {@link gridLength} that extend the ticks\n * on the opposite side of the axis\n * `true` - render grid as concentric circles that go through the ticks\n */\n this._radialGrid = false;\n this.scale = scale;\n this.groupSelection = selection_1.Selection.select(this.group).selectAll();\n this.label.onFormatChange = this.onTickFormatChange.bind(this);\n this.group.append(this.lineNode);\n this.onTickFormatChange();\n // this.group.append(this.bboxRect); // debug (bbox)\n }\n Object.defineProperty(Axis.prototype, \"range\", {\n get: function () {\n return this.scale.range;\n },\n set: function (value) {\n this.scale.range = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"domain\", {\n get: function () {\n return this.scale.domain;\n },\n set: function (value) {\n this.scale.domain = value;\n },\n enumerable: true,\n configurable: true\n });\n Axis.prototype.onTickFormatChange = function (format) {\n if (format) {\n if (this.scale.tickFormat) {\n this.tickFormatter = this.scale.tickFormat(10, format);\n }\n }\n else {\n if (this.scale.tickFormat) {\n this.tickFormatter = this.scale.tickFormat(10, undefined);\n }\n else {\n this.tickFormatter = undefined;\n }\n }\n };\n Object.defineProperty(Axis.prototype, \"title\", {\n get: function () {\n return this._title;\n },\n set: function (value) {\n var oldTitle = this._title;\n if (oldTitle !== value) {\n if (oldTitle) {\n this.group.removeChild(oldTitle.node);\n }\n if (value) {\n value.node.rotation = -Math.PI / 2;\n this.group.appendChild(value.node);\n }\n this._title = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"gridLength\", {\n get: function () {\n return this._gridLength;\n },\n set: function (value) {\n // Was visible and now invisible, or was invisible and now visible.\n if (this._gridLength && !value || !this._gridLength && value) {\n this.groupSelection = this.groupSelection.remove().setData([]);\n }\n this._gridLength = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"radialGrid\", {\n get: function () {\n return this._radialGrid;\n },\n set: function (value) {\n if (this._radialGrid !== value) {\n this._radialGrid = value;\n this.groupSelection = this.groupSelection.remove().setData([]);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Creates/removes/updates the scene graph nodes that constitute the axis.\n * Supposed to be called _manually_ after changing _any_ of the axis properties.\n * This allows to bulk set axis properties before updating the nodes.\n * The node changes made by this method are rendered on the next animation frame.\n * We could schedule this method call automatically on the next animation frame\n * when any of the axis properties change (the way we do when properties of scene graph's\n * nodes change), but this will mean that we first wait for the next animation\n * frame to make changes to the nodes of the axis, then wait for another animation\n * frame to render those changes. It's nice to have everything update automatically,\n * but this extra level of async indirection will not just introduce an unwanted delay,\n * it will also make it harder to reason about the program.\n */\n Axis.prototype.update = function () {\n var _this = this;\n var _a = this, group = _a.group, scale = _a.scale, tick = _a.tick, label = _a.label, gridStyle = _a.gridStyle;\n var rotation = angle_1.toRadians(this.rotation);\n var parallelLabels = label.parallel;\n var labelRotation = angle_1.normalizeAngle360(angle_1.toRadians(label.rotation));\n group.translationX = this.translation.x;\n group.translationY = this.translation.y;\n group.rotation = rotation;\n var bandwidth = (scale.bandwidth || 0) / 2;\n // The side of the axis line to position the labels on.\n // -1 = left (default)\n // 1 = right\n var sideFlag = label.mirrored ? 1 : -1;\n // When labels are parallel to the axis line, the `parallelFlipFlag` is used to\n // flip the labels to avoid upside-down text, when the axis is rotated\n // such that it is in the right hemisphere, i.e. the angle of rotation\n // is in the [0, π] interval.\n // The rotation angle is normalized, so that we have an easier time checking\n // if it's in the said interval. Since the axis is always rendered vertically\n // and then rotated, zero rotation means 12 (not 3) o-clock.\n // -1 = flip\n // 1 = don't flip (default)\n var parallelFlipRotation = angle_1.normalizeAngle360(rotation);\n var parallelFlipFlag = !labelRotation && parallelFlipRotation >= 0 && parallelFlipRotation <= Math.PI ? -1 : 1;\n var regularFlipRotation = angle_1.normalizeAngle360(rotation - Math.PI / 2);\n // Flip if the axis rotation angle is in the top hemisphere.\n var regularFlipFlag = !labelRotation && regularFlipRotation >= 0 && regularFlipRotation <= Math.PI ? -1 : 1;\n var alignFlag = labelRotation >= 0 && labelRotation <= Math.PI ? -1 : 1;\n var ticks = scale.ticks(this.tick.count);\n var update = this.groupSelection.setData(ticks);\n update.exit.remove();\n var enter = update.enter.append(group_1.Group);\n // Line auto-snaps to pixel grid if vertical or horizontal.\n enter.append(line_1.Line).each(function (node) { return node.tag = Tags.Tick; });\n if (this.gridLength) {\n if (this.radialGrid) {\n enter.append(arc_1.Arc).each(function (node) { return node.tag = Tags.GridLine; });\n }\n else {\n enter.append(line_1.Line).each(function (node) { return node.tag = Tags.GridLine; });\n }\n }\n enter.append(text_1.Text);\n var groupSelection = update.merge(enter);\n groupSelection\n .attrFn('translationY', function (_, datum) { return Math.round(scale.convert(datum) + bandwidth); });\n groupSelection.selectByTag(Tags.Tick)\n .each(function (line) {\n line.strokeWidth = tick.width;\n line.stroke = tick.color;\n })\n .attr('x1', sideFlag * tick.size)\n .attr('x2', 0)\n .attr('y1', 0)\n .attr('y2', 0);\n if (this.gridLength && gridStyle.length) {\n var styleCount_1 = gridStyle.length;\n var gridLines = void 0;\n if (this.radialGrid) {\n var angularGridLength_1 = angle_1.normalizeAngle360Inclusive(angle_1.toRadians(this.gridLength));\n gridLines = groupSelection.selectByTag(Tags.GridLine)\n .each(function (arc, datum) {\n var radius = Math.round(scale.convert(datum) + bandwidth);\n arc.centerX = 0;\n arc.centerY = scale.range[0] - radius;\n arc.endAngle = angularGridLength_1;\n arc.radiusX = radius;\n arc.radiusY = radius;\n });\n }\n else {\n gridLines = groupSelection.selectByTag(Tags.GridLine)\n .each(function (line) {\n line.x1 = 0;\n line.x2 = -sideFlag * _this.gridLength;\n line.y1 = 0;\n line.y2 = 0;\n line.visible = Math.abs(line.parent.translationY - scale.range[0]) > 1;\n });\n }\n gridLines.each(function (gridLine, _, index) {\n var style = gridStyle[index % styleCount_1];\n gridLine.stroke = style.stroke;\n gridLine.strokeWidth = tick.width;\n gridLine.lineDash = style.lineDash;\n gridLine.fill = undefined;\n });\n }\n var tickFormatter = this.tickFormatter;\n var fractionDigits = ticks instanceof ticks_1.NumericTicks ? ticks.fractionDigits : 0;\n var labelSelection = groupSelection.selectByClass(text_1.Text)\n .each(function (node, datum, index) {\n node.fontStyle = label.fontStyle;\n node.fontWeight = label.fontWeight;\n node.fontSize = label.fontSize;\n node.fontFamily = label.fontFamily;\n node.fill = label.color;\n node.textBaseline = parallelLabels && !labelRotation\n ? (sideFlag * parallelFlipFlag === -1 ? 'hanging' : 'bottom')\n : 'middle';\n node.text = label.formatter\n ? label.formatter({\n value: fractionDigits >= 0 ? datum : String(datum),\n index: index,\n fractionDigits: fractionDigits,\n formatter: tickFormatter\n })\n : fractionDigits\n // the `datum` is a floating point number\n ? datum.toFixed(fractionDigits)\n // the `datum` is an integer, a string or an object\n : tickFormatter\n ? tickFormatter(datum)\n : String(datum);\n node.textAlign = parallelLabels\n ? labelRotation ? (sideFlag * alignFlag === -1 ? 'end' : 'start') : 'center'\n : sideFlag * regularFlipFlag === -1 ? 'end' : 'start';\n });\n var labelX = sideFlag * (tick.size + label.padding);\n var autoRotation = parallelLabels\n ? parallelFlipFlag * Math.PI / 2\n : (regularFlipFlag === -1 ? Math.PI : 0);\n labelSelection.each(function (label) {\n label.x = labelX;\n label.rotationCenterX = labelX;\n label.rotation = autoRotation + labelRotation;\n });\n this.groupSelection = groupSelection;\n // Render axis line.\n var lineNode = this.lineNode;\n lineNode.x1 = 0;\n lineNode.x2 = 0;\n lineNode.y1 = scale.range[0];\n lineNode.y2 = scale.range[scale.range.length - 1];\n lineNode.strokeWidth = this.line.width;\n lineNode.stroke = this.line.color;\n lineNode.visible = ticks.length > 0;\n var title = this.title;\n if (title) {\n var padding = title.padding.bottom;\n var titleNode = title.node;\n var bbox = this.computeBBox({ excludeTitle: true });\n var titleRotationFlag = sideFlag === -1 && parallelFlipRotation > Math.PI && parallelFlipRotation < Math.PI * 2 ? -1 : 1;\n titleNode.rotation = titleRotationFlag * sideFlag * Math.PI / 2;\n titleNode.x = titleRotationFlag * sideFlag * (lineNode.y1 + lineNode.y2) / 2;\n if (sideFlag === -1) {\n titleNode.y = titleRotationFlag * (-padding - bbox.width + Math.max(bbox.x + bbox.width, 0));\n }\n else {\n titleNode.y = -padding - bbox.width - Math.min(bbox.x, 0);\n }\n // title.text = `Axis Title: ${sideFlag} ${toDegrees(parallelFlipRotation).toFixed(0)} ${titleRotationFlag}`;\n titleNode.textBaseline = titleRotationFlag === 1 ? 'bottom' : 'top';\n }\n // debug (bbox)\n // const bbox = this.computeBBox();\n // const bboxRect = this.bboxRect;\n // bboxRect.x = bbox.x;\n // bboxRect.y = bbox.y;\n // bboxRect.width = bbox.width;\n // bboxRect.height = bbox.height;\n };\n Axis.prototype.computeBBox = function (options) {\n var lineNode = this.lineNode;\n var labels = this.groupSelection.selectByClass(text_1.Text);\n var left = Infinity;\n var right = -Infinity;\n var top = Infinity;\n var bottom = -Infinity;\n labels.each(function (label) {\n // The label itself is rotated, but not translated, the group that\n // contains it is. So to capture the group transform in the label bbox\n // calculation we combine the transform matrices of the label and the group.\n // Depending on the timing of the `axis.computeBBox()` method call, we may\n // not have the group's and the label's transform matrices updated yet (because\n // the transform matrix is not recalculated whenever a node's transform attributes\n // change, instead it's marked for recalculation on the next frame by setting\n // the node's `dirtyTransform` flag to `true`), so we force them to update\n // right here by calling `computeTransformMatrix`.\n label.computeTransformMatrix();\n var matrix = matrix_1.Matrix.flyweight(label.matrix);\n var group = label.parent;\n group.computeTransformMatrix();\n matrix.preMultiplySelf(group.matrix);\n var labelBBox = label.computeBBox();\n if (labelBBox) {\n var bbox = matrix.transformBBox(labelBBox);\n left = Math.min(left, bbox.x);\n right = Math.max(right, bbox.x + bbox.width);\n top = Math.min(top, bbox.y);\n bottom = Math.max(bottom, bbox.y + bbox.height);\n }\n });\n if (this.title && (!options || !options.excludeTitle)) {\n var label = this.title.node;\n label.computeTransformMatrix();\n var matrix = matrix_1.Matrix.flyweight(label.matrix);\n var labelBBox = label.computeBBox();\n if (labelBBox) {\n var bbox = matrix.transformBBox(labelBBox);\n left = Math.min(left, bbox.x);\n right = Math.max(right, bbox.x + bbox.width);\n top = Math.min(top, bbox.y);\n bottom = Math.max(bottom, bbox.y + bbox.height);\n }\n }\n left = Math.min(left, 0);\n right = Math.max(right, 0);\n top = Math.min(top, lineNode.y1, lineNode.y2);\n bottom = Math.max(bottom, lineNode.y1, lineNode.y2);\n return new bbox_1.BBox(left, top, right - left, bottom - top);\n };\n return Axis;\n}());\nexports.Axis = Axis;\n//# sourceMappingURL=axis.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar chartBuilder_1 = require(\"../../../../charts/chartBuilder\");\nvar chartDataModel_1 = require(\"../../chartDataModel\");\nvar cartesianChartProxy_1 = require(\"./cartesianChartProxy\");\nvar timeAxis_1 = require(\"../../../../charts/chart/axis/timeAxis\");\nvar numberAxis_1 = require(\"../../../../charts/chart/axis/numberAxis\");\nvar typeChecker_1 = require(\"../../typeChecker\");\nvar ScatterChartProxy = /** @class */ (function (_super) {\n __extends(ScatterChartProxy, _super);\n function ScatterChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.getMarkersEnabled = function () { return true; }; // markers are always enabled on scatter charts\n _this.initChartOptions();\n _this.recreateChart();\n return _this;\n }\n ScatterChartProxy.prototype.createChart = function (options) {\n return chartBuilder_1.ChartBuilder.createScatterChart(this.chartProxyParams.parentElement, options);\n };\n ScatterChartProxy.prototype.update = function (params) {\n if (params.fields.length < 2) {\n this.chart.removeAllSeries();\n return;\n }\n var fields = params.fields;\n var seriesDefaults = this.chartOptions.seriesDefaults;\n var seriesDefinitions = this.getSeriesDefinitions(fields, seriesDefaults.paired);\n this.updateAxes(params.data[0], seriesDefinitions.map(function (d) { return d.xField.colId; }));\n var chart = this.chart;\n var _a = this.getPalette(), fills = _a.fills, strokes = _a.strokes;\n var seriesOptions = __assign({ type: \"scatter\" }, seriesDefaults);\n var labelFieldDefinition = params.category.id === chartDataModel_1.ChartDataModel.DEFAULT_CATEGORY ? undefined : params.category;\n var existingSeriesById = chart.series.reduceRight(function (map, series, i) {\n var matchingIndex = core_1._.findIndex(seriesDefinitions, function (s) {\n return s.xField.colId === series.xKey &&\n s.yField.colId === series.yKey &&\n ((!s.sizeField && !series.sizeKey) || (s.sizeField && s.sizeField.colId === series.sizeKey));\n });\n if (matchingIndex === i) {\n map.set(series.yKey, series);\n }\n else {\n chart.removeSeries(series);\n }\n return map;\n }, new Map());\n var previousSeries = undefined;\n seriesDefinitions.forEach(function (seriesDefinition, index) {\n var existingSeries = existingSeriesById.get(seriesDefinition.yField.colId);\n var series = existingSeries || chartBuilder_1.ChartBuilder.createSeries(seriesOptions);\n if (!series) {\n return;\n }\n var xFieldDefinition = seriesDefinition.xField, yFieldDefinition = seriesDefinition.yField, sizeFieldDefinition = seriesDefinition.sizeField;\n series.title = yFieldDefinition.displayName + \" vs \" + xFieldDefinition.displayName;\n series.xKey = xFieldDefinition.colId;\n series.xName = xFieldDefinition.displayName;\n series.yKey = yFieldDefinition.colId;\n series.yName = yFieldDefinition.displayName;\n series.data = params.data;\n series.fill = fills[index % fills.length];\n series.stroke = strokes[index % strokes.length];\n if (sizeFieldDefinition) {\n series.sizeKey = sizeFieldDefinition.colId;\n series.sizeName = sizeFieldDefinition.displayName;\n }\n else {\n series.sizeKey = series.sizeName = undefined;\n }\n if (labelFieldDefinition) {\n series.labelKey = labelFieldDefinition.id;\n series.labelName = labelFieldDefinition.name;\n }\n else {\n series.labelKey = series.labelName = undefined;\n }\n if (!existingSeries) {\n chart.addSeriesAfter(series, previousSeries);\n }\n previousSeries = series;\n });\n };\n ScatterChartProxy.prototype.updateAxes = function (testDatum, xKeys) {\n var chartOptions = this.chartOptions;\n if (chartOptions.xAxis.type) {\n return;\n }\n var xAxis = this.chart.axes.filter(function (a) { return a.position === 'bottom'; })[0];\n if (!xAxis) {\n return;\n }\n var xValuesAreDates = xKeys.map(function (xKey) { return testDatum && testDatum[xKey]; }).every(function (test) { return typeChecker_1.isDate(test); });\n if (xValuesAreDates && !(xAxis instanceof timeAxis_1.TimeAxis)) {\n var options = __assign(__assign({}, this.chartOptions), { xAxis: __assign(__assign({}, this.chartOptions.xAxis), { type: 'time' }) });\n this.recreateChart(options);\n }\n else if (!xValuesAreDates && !(xAxis instanceof numberAxis_1.NumberAxis)) {\n this.recreateChart();\n }\n };\n ScatterChartProxy.prototype.getTooltipsEnabled = function () {\n return this.chartOptions.seriesDefaults.tooltip != null && !!this.chartOptions.seriesDefaults.tooltip.enabled;\n };\n ScatterChartProxy.prototype.getDefaultOptions = function () {\n var isBubble = this.chartType === core_1.ChartType.Bubble;\n var options = this.getDefaultCartesianChartOptions();\n options.seriesDefaults = __assign(__assign({}, options.seriesDefaults), { fill: __assign(__assign({}, options.seriesDefaults.fill), { opacity: isBubble ? 0.7 : 1 }), stroke: __assign(__assign({}, options.seriesDefaults.stroke), { width: 3 }), marker: {\n type: 'circle',\n enabled: true,\n size: isBubble ? 30 : 6,\n minSize: isBubble ? 6 : undefined,\n strokeWidth: 1,\n }, tooltip: {\n enabled: true,\n }, paired: false });\n return options;\n };\n ScatterChartProxy.prototype.getSeriesDefinitions = function (fields, paired) {\n if (fields.length < 2) {\n return [];\n }\n var isBubbleChart = this.chartType === core_1.ChartType.Bubble;\n if (paired) {\n if (isBubbleChart) {\n return fields.map(function (xField, i) { return i % 3 === 0 ? ({\n xField: xField,\n yField: fields[i + 1],\n sizeField: fields[i + 2],\n }) : null; }).filter(function (x) { return x && x.yField && x.sizeField; });\n }\n else {\n return fields.map(function (xField, i) { return i % 2 === 0 ? ({\n xField: xField,\n yField: fields[i + 1],\n }) : null; }).filter(function (x) { return x && x.yField; });\n }\n }\n else {\n var xField_1 = fields[0];\n if (isBubbleChart) {\n return fields\n .map(function (yField, i) { return i % 2 === 1 ? ({\n xField: xField_1,\n yField: yField,\n sizeField: fields[i + 1],\n }) : null; })\n .filter(function (x) { return x && x.sizeField; });\n }\n else {\n return fields.filter(function (_, i) { return i > 0; }).map(function (yField) { return ({ xField: xField_1, yField: yField }); });\n }\n }\n };\n return ScatterChartProxy;\n}(cartesianChartProxy_1.CartesianChartProxy));\nexports.ScatterChartProxy = ScatterChartProxy;\n//# sourceMappingURL=scatterChartProxy.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar chart_1 = require(\"./chart\");\nvar array_1 = require(\"../util/array\");\nvar padding_1 = require(\"../util/padding\");\nvar group_1 = require(\"../scene/group\");\nvar categoryAxis_1 = require(\"./axis/categoryAxis\");\nvar groupedCategoryAxis_1 = require(\"./axis/groupedCategoryAxis\");\nvar observable_1 = require(\"../util/observable\");\nvar chartAxis_1 = require(\"./chartAxis\");\n/** Defines the orientation used when rendering data series */\nvar CartesianChartLayout;\n(function (CartesianChartLayout) {\n CartesianChartLayout[CartesianChartLayout[\"Vertical\"] = 0] = \"Vertical\";\n CartesianChartLayout[CartesianChartLayout[\"Horizontal\"] = 1] = \"Horizontal\";\n})(CartesianChartLayout = exports.CartesianChartLayout || (exports.CartesianChartLayout = {}));\nvar CartesianChart = /** @class */ (function (_super) {\n __extends(CartesianChart, _super);\n function CartesianChart(document) {\n if (document === void 0) { document = window.document; }\n var _this = _super.call(this, document) || this;\n _this.axisAutoPadding = new padding_1.Padding();\n _this.flipXY = false;\n _this._seriesRoot = new group_1.Group();\n _this._layout = CartesianChartLayout.Vertical;\n _this._updateAxes = _this.updateAxes.bind(_this);\n // Prevent the scene from rendering chart components in an invalid state\n // (before first layout is performed).\n _this.scene.root.visible = false;\n var root = _this.scene.root;\n root.append(_this._seriesRoot);\n root.append(_this.legend.group);\n return _this;\n }\n Object.defineProperty(CartesianChart.prototype, \"seriesRoot\", {\n get: function () {\n return this._seriesRoot;\n },\n enumerable: true,\n configurable: true\n });\n CartesianChart.prototype.performLayout = function () {\n if (this.dataPending) {\n return;\n }\n this.scene.root.visible = true;\n var _a = this, width = _a.width, height = _a.height, axes = _a.axes, legend = _a.legend;\n var shrinkRect = {\n x: 0,\n y: 0,\n width: width,\n height: height\n };\n this.positionCaptions();\n this.positionLegend();\n if (legend.enabled && legend.data.length) {\n var legendAutoPadding = this.legendAutoPadding;\n var legendPadding = this.legend.padding;\n shrinkRect.x += legendAutoPadding.left;\n shrinkRect.y += legendAutoPadding.top;\n shrinkRect.width -= legendAutoPadding.left + legendAutoPadding.right;\n shrinkRect.height -= legendAutoPadding.top + legendAutoPadding.bottom;\n switch (this.legend.position) {\n case 'right':\n shrinkRect.width -= legendPadding;\n break;\n case 'bottom':\n shrinkRect.height -= legendPadding;\n break;\n case 'left':\n shrinkRect.x += legendPadding;\n shrinkRect.width -= legendPadding;\n break;\n case 'top':\n shrinkRect.y += legendPadding;\n shrinkRect.height -= legendPadding;\n break;\n }\n }\n var _b = this, captionAutoPadding = _b.captionAutoPadding, padding = _b.padding, axisAutoPadding = _b.axisAutoPadding;\n this.updateAxes();\n shrinkRect.x += padding.left + axisAutoPadding.left;\n shrinkRect.y += padding.top + axisAutoPadding.top + captionAutoPadding;\n shrinkRect.width -= padding.left + padding.right + axisAutoPadding.left + axisAutoPadding.right;\n shrinkRect.height -= padding.top + padding.bottom + axisAutoPadding.top + axisAutoPadding.bottom + captionAutoPadding;\n axes.forEach(function (axis) {\n axis.group.visible = true;\n switch (axis.position) {\n case chartAxis_1.ChartAxisPosition.Top:\n axis.range = [0, shrinkRect.width];\n axis.translation.x = Math.floor(shrinkRect.x);\n axis.translation.y = Math.floor(shrinkRect.y + 1);\n axis.label.mirrored = true;\n axis.gridLength = shrinkRect.height;\n break;\n case chartAxis_1.ChartAxisPosition.Right:\n if (axis instanceof categoryAxis_1.CategoryAxis || axis instanceof groupedCategoryAxis_1.GroupedCategoryAxis) {\n axis.range = [0, shrinkRect.height];\n }\n else {\n axis.range = [shrinkRect.height, 0];\n }\n axis.translation.x = Math.floor(shrinkRect.x + shrinkRect.width + 1);\n axis.translation.y = Math.floor(shrinkRect.y);\n axis.label.mirrored = true;\n axis.gridLength = shrinkRect.width;\n break;\n case chartAxis_1.ChartAxisPosition.Bottom:\n axis.range = [0, shrinkRect.width];\n axis.translation.x = Math.floor(shrinkRect.x);\n axis.translation.y = Math.floor(shrinkRect.y + shrinkRect.height + 1);\n axis.gridLength = shrinkRect.height;\n break;\n case chartAxis_1.ChartAxisPosition.Left:\n if (axis instanceof categoryAxis_1.CategoryAxis || axis instanceof groupedCategoryAxis_1.GroupedCategoryAxis) {\n axis.range = [0, shrinkRect.height];\n }\n else {\n axis.range = [shrinkRect.height, 0];\n }\n axis.translation.x = Math.floor(shrinkRect.x);\n axis.translation.y = Math.floor(shrinkRect.y);\n axis.gridLength = shrinkRect.width;\n break;\n }\n });\n this.series.forEach(function (series) {\n series.group.translationX = Math.floor(shrinkRect.x);\n series.group.translationY = Math.floor(shrinkRect.y);\n series.update(); // this has to happen after the `updateAxes` call\n });\n this.axes.forEach(function (axis) { return axis.update(); });\n };\n Object.defineProperty(CartesianChart.prototype, \"layout\", {\n get: function () {\n return this._layout;\n },\n set: function (value) {\n if (this._layout !== value) {\n this._layout = value;\n this.layoutPending = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n CartesianChart.prototype.initSeries = function (series) {\n _super.prototype.initSeries.call(this, series);\n series.addEventListener('dataProcessed', this._updateAxes);\n };\n CartesianChart.prototype.freeSeries = function (series) {\n _super.prototype.freeSeries.call(this, series);\n series.removeEventListener('dataProcessed', this._updateAxes);\n };\n CartesianChart.prototype.updateAxes = function () {\n var _this = this;\n var axes = this.axes.filter(function (a) { return !a.linkedTo; });\n var linkedAxes = this.axes.filter(function (a) { return a.linkedTo; });\n axes.concat(linkedAxes).forEach(function (axis) {\n var _a;\n var direction = axis.direction, position = axis.position, boundSeries = axis.boundSeries;\n if (axis.linkedTo) {\n axis.domain = axis.linkedTo.domain;\n }\n else {\n var domains_1 = [];\n boundSeries.filter(function (s) { return s.visible; }).forEach(function (series) {\n domains_1.push(series.getDomain(direction));\n });\n var domain = (_a = new Array()).concat.apply(_a, domains_1);\n axis.domain = array_1.numericExtent(domain) || domain; // if numeric extent can't be found, it's categories\n }\n axis.update();\n var axisThickness = Math.floor(axis.computeBBox().width);\n switch (position) {\n case chartAxis_1.ChartAxisPosition.Left:\n _this.axisAutoPadding.left = axisThickness;\n break;\n case chartAxis_1.ChartAxisPosition.Right:\n _this.axisAutoPadding.right = axisThickness;\n break;\n case chartAxis_1.ChartAxisPosition.Bottom:\n _this.axisAutoPadding.bottom = axisThickness;\n break;\n case chartAxis_1.ChartAxisPosition.Top:\n _this.axisAutoPadding.top = axisThickness;\n break;\n }\n });\n };\n CartesianChart.className = 'CartesianChart';\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], CartesianChart.prototype, \"flipXY\", void 0);\n return CartesianChart;\n}(chart_1.Chart));\nexports.CartesianChart = CartesianChart;\n//# sourceMappingURL=cartesianChart.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar scene_1 = require(\"../scene/scene\");\nvar group_1 = require(\"../scene/group\");\nvar padding_1 = require(\"../util/padding\");\nvar shape_1 = require(\"../scene/shape/shape\");\nvar rect_1 = require(\"../scene/shape/rect\");\nvar legend_1 = require(\"./legend\");\nvar array_1 = require(\"../util/array\");\nvar observable_1 = require(\"../util/observable\");\nvar cartesianSeries_1 = require(\"./series/cartesian/cartesianSeries\");\nvar Chart = /** @class */ (function (_super) {\n __extends(Chart, _super);\n function Chart(document) {\n if (document === void 0) { document = window.document; }\n var _this = _super.call(this) || this;\n _this.id = _this.createId();\n _this.background = new rect_1.Rect();\n _this.legendAutoPadding = new padding_1.Padding();\n _this.captionAutoPadding = 0; // top padding only\n _this.defaultTooltipClass = 'ag-chart-tooltip';\n _this.legend = new legend_1.Legend();\n _this.tooltipOffset = [20, 20];\n _this.padding = new padding_1.Padding(20);\n _this.onLayoutChange = function () {\n _this.layoutPending = true;\n };\n _this.onLegendPositionChange = function () {\n _this.legendAutoPadding.clear();\n _this.layoutPending = true;\n };\n _this._axes = [];\n _this._series = [];\n _this.scheduleLayout = function () {\n _this.layoutPending = true;\n };\n _this.scheduleData = function () {\n _this.dataPending = true;\n };\n _this._data = [];\n _this._axesChanged = false;\n _this._seriesChanged = false;\n _this.layoutCallbackId = 0;\n _this._performLayout = function () {\n _this.layoutCallbackId = 0;\n _this.background.width = _this.width;\n _this.background.height = _this.height;\n _this.performLayout();\n if (!_this.layoutPending) {\n _this.fireEvent({ type: 'layoutDone' });\n }\n };\n _this.dataCallbackId = 0;\n _this.updateLegend = function () {\n var legendData = [];\n _this.series.filter(function (s) { return s.showInLegend; }).forEach(function (series) { return series.listSeriesItems(legendData); });\n _this.legend.data = legendData;\n };\n _this.onMouseMove = function (event) {\n var x = event.offsetX, y = event.offsetY;\n var pick = _this.pickSeriesNode(x, y);\n if (pick) {\n var node = pick.node;\n if (node instanceof shape_1.Shape) {\n if (!_this.lastPick || // cursor moved from empty space to a node\n _this.lastPick.node !== node) { // cursor moved from one node to another\n _this.onSeriesNodePick(event, pick.series, node);\n }\n else if (pick.series.tooltipEnabled) { // cursor moved within the same node\n _this.showTooltip(event);\n }\n }\n }\n else if (_this.lastPick) { // cursor moved from a node to empty space\n _this.lastPick.series.dehighlightNode();\n _this.hideTooltip();\n _this.lastPick = undefined;\n }\n };\n _this.onMouseOut = function (_) {\n _this.toggleTooltip(false);\n };\n _this.onClick = function (event) {\n var x = event.offsetX, y = event.offsetY;\n var datum = _this.legend.datumForPoint(x, y);\n if (datum) {\n var id_1 = datum.id, itemId = datum.itemId, enabled = datum.enabled;\n var series = array_1.find(_this.series, function (series) { return series.id === id_1; });\n if (series) {\n series.toggleSeriesItem(itemId, !enabled);\n }\n }\n };\n _this._tooltipClass = _this.defaultTooltipClass;\n var root = new group_1.Group();\n var background = _this.background;\n background.fill = 'white';\n root.appendChild(background);\n var scene = new scene_1.Scene(document);\n _this.scene = scene;\n scene.root = root;\n var legend = _this.legend;\n legend.addEventListener('layoutChange', _this.onLayoutChange);\n legend.addPropertyListener('position', _this.onLegendPositionChange);\n _this.tooltipElement = document.createElement('div');\n _this.tooltipClass = '';\n document.body.appendChild(_this.tooltipElement);\n _this.setupListeners(scene.canvas.element);\n var captionListener = (function (event) {\n var chart = event.source, caption = event.value, oldCaption = event.oldValue;\n if (oldCaption) {\n oldCaption.removeEventListener('change', chart.onLayoutChange);\n chart.scene.root.removeChild(oldCaption.node);\n }\n if (caption) {\n caption.addEventListener('change', chart.onLayoutChange);\n chart.scene.root.appendChild(caption.node);\n }\n });\n _this.addPropertyListener('title', captionListener);\n _this.addPropertyListener('subtitle', captionListener);\n _this.addEventListener('layoutChange', function () { return _this.layoutPending = true; });\n return _this;\n }\n Chart.prototype.createId = function () {\n var constructor = this.constructor;\n var className = constructor.className;\n if (!className) {\n throw new Error(\"The \" + constructor + \" is missing the 'className' property.\");\n }\n return className + '-' + (constructor.id = (constructor.id || 0) + 1);\n };\n Chart.prototype.destroy = function () {\n var tooltipParent = this.tooltipElement.parentNode;\n if (tooltipParent) {\n tooltipParent.removeChild(this.tooltipElement);\n }\n this.legend.removeEventListener('layoutChange', this.onLayoutChange);\n this.cleanupListeners(this.scene.canvas.element);\n this.scene.parent = undefined;\n };\n Object.defineProperty(Chart.prototype, \"element\", {\n get: function () {\n return this.scene.canvas.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"axes\", {\n get: function () {\n return this._axes;\n },\n set: function (values) {\n var _this = this;\n var root = this.scene.root;\n this._axes.forEach(function (axis) { return root.removeChild(axis.group); });\n this._axes = values;\n this._axes.forEach(function (axis) { return root.insertBefore(axis.group, _this.seriesRoot); });\n this.axesChanged = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"series\", {\n get: function () {\n return this._series;\n },\n set: function (values) {\n var _this = this;\n this.removeAllSeries();\n values.forEach(function (series) { return _this.addSeries(series); });\n },\n enumerable: true,\n configurable: true\n });\n Chart.prototype.addSeries = function (series, before) {\n var _a = this, allSeries = _a.series, seriesRoot = _a.seriesRoot;\n var canAdd = allSeries.indexOf(series) < 0;\n if (canAdd) {\n var beforeIndex = before ? allSeries.indexOf(before) : -1;\n if (beforeIndex >= 0) {\n allSeries.splice(beforeIndex, 0, series);\n seriesRoot.insertBefore(series.group, before.group);\n }\n else {\n allSeries.push(series);\n seriesRoot.append(series.group);\n }\n this.initSeries(series);\n this.seriesChanged = true;\n this.axesChanged = true;\n return true;\n }\n return false;\n };\n Chart.prototype.initSeries = function (series) {\n series.chart = this;\n series.addEventListener('layoutChange', this.scheduleLayout);\n series.addEventListener('dataChange', this.scheduleData);\n series.addEventListener('legendChange', this.updateLegend);\n };\n Chart.prototype.freeSeries = function (series) {\n series.chart = undefined;\n series.removeEventListener('layoutChange', this.scheduleLayout);\n series.removeEventListener('dataChange', this.scheduleData);\n series.removeEventListener('legendChange', this.updateLegend);\n };\n Chart.prototype.addSeriesAfter = function (series, after) {\n var _a = this, allSeries = _a.series, seriesRoot = _a.seriesRoot;\n var canAdd = allSeries.indexOf(series) < 0;\n if (canAdd) {\n var afterIndex = after ? this.series.indexOf(after) : -1;\n if (afterIndex >= 0) {\n if (afterIndex + 1 < allSeries.length) {\n seriesRoot.insertBefore(series.group, allSeries[afterIndex + 1].group);\n }\n else {\n seriesRoot.append(series.group);\n }\n this.initSeries(series);\n allSeries.splice(afterIndex + 1, 0, series);\n }\n else {\n if (allSeries.length > 0) {\n seriesRoot.insertBefore(series.group, allSeries[0].group);\n }\n else {\n seriesRoot.append(series.group);\n }\n this.initSeries(series);\n allSeries.unshift(series);\n }\n this.seriesChanged = true;\n this.axesChanged = true;\n }\n return false;\n };\n Chart.prototype.removeSeries = function (series) {\n var index = this.series.indexOf(series);\n if (index >= 0) {\n this.series.splice(index, 1);\n this.freeSeries(series);\n this.seriesRoot.removeChild(series.group);\n this.seriesChanged = true;\n return true;\n }\n return false;\n };\n Chart.prototype.removeAllSeries = function () {\n var _this = this;\n this.series.forEach(function (series) {\n _this.freeSeries(series);\n _this.seriesRoot.removeChild(series.group);\n });\n this._series = []; // using `_series` instead of `series` to prevent infinite recursion\n this.seriesChanged = true;\n };\n /**\n * Finds all the series that use any given axis.\n */\n Chart.prototype.onSeriesChange = function () {\n var _this = this;\n this.axes.forEach(function (axis) {\n var axisName = axis.direction + 'Axis';\n var boundSeries = [];\n _this.series.forEach(function (series) {\n if (series[axisName] === axis) {\n boundSeries.push(series);\n }\n });\n axis.boundSeries = boundSeries;\n });\n this.seriesChanged = false;\n };\n // Has to run before onSeriesChange\n Chart.prototype.onAxesChange = function (force) {\n var _this = this;\n if (force === void 0) { force = false; }\n var directionToAxesMap = {};\n this.axes.forEach(function (axis) {\n var direction = axis.direction;\n var directionAxes = directionToAxesMap[direction] || (directionToAxesMap[direction] = []);\n directionAxes.push(axis);\n });\n this.series.forEach(function (series) {\n series.directions.forEach(function (direction) {\n var axisName = direction + 'Axis';\n if (!series[axisName] || force) {\n var directionAxes = directionToAxesMap[direction];\n if (directionAxes) {\n var axis = _this.findMatchingAxis(directionAxes, series.getKeys(direction));\n if (axis) {\n series[axisName] = axis;\n }\n }\n }\n });\n if (series instanceof cartesianSeries_1.CartesianSeries) {\n if (!series.xAxis) {\n console.warn(\"Could not find a matching xAxis for the \" + series.id + \" series.\");\n return;\n }\n if (!series.yAxis) {\n console.warn(\"Could not find a matching yAxis for the \" + series.id + \" series.\");\n return;\n }\n }\n });\n this.axesChanged = false;\n };\n Chart.prototype.findMatchingAxis = function (directionAxes, directionKeys) {\n for (var i = 0; i < directionAxes.length; i++) {\n var axis = directionAxes[i];\n var axisKeys = axis.keys;\n if (!axisKeys.length) {\n return axis;\n }\n else if (directionKeys) {\n for (var j = 0; j < directionKeys.length; j++) {\n if (axisKeys.indexOf(directionKeys[j]) >= 0) {\n return axis;\n }\n }\n }\n }\n };\n Object.defineProperty(Chart.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n set: function (data) {\n this._data = data;\n this.series.forEach(function (series) { return series.data = data; });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"axesChanged\", {\n get: function () {\n return this._axesChanged;\n },\n set: function (value) {\n this._axesChanged = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"seriesChanged\", {\n get: function () {\n return this._seriesChanged;\n },\n set: function (value) {\n this._seriesChanged = value;\n if (value) {\n this.dataPending = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"layoutPending\", {\n /**\n * Only `true` while we are waiting for the layout to start.\n * This will be `false` if the layout has already started and is ongoing.\n */\n get: function () {\n return !!this.layoutCallbackId;\n },\n set: function (value) {\n if (value) {\n if (!(this.layoutCallbackId || this.dataPending)) {\n this.layoutCallbackId = requestAnimationFrame(this._performLayout);\n }\n }\n else if (this.layoutCallbackId) {\n cancelAnimationFrame(this.layoutCallbackId);\n this.layoutCallbackId = 0;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"dataPending\", {\n get: function () {\n return !!this.dataCallbackId;\n },\n set: function (value) {\n var _this = this;\n if (this.dataCallbackId) {\n clearTimeout(this.dataCallbackId);\n this.dataCallbackId = 0;\n }\n if (value) {\n this.dataCallbackId = window.setTimeout(function () {\n _this.dataPending = false;\n _this.processData();\n }, 0);\n }\n },\n enumerable: true,\n configurable: true\n });\n Chart.prototype.processData = function () {\n this.layoutPending = false;\n if (this.axesChanged) {\n this.onAxesChange();\n }\n if (this.seriesChanged) {\n this.onSeriesChange();\n }\n this.series.filter(function (s) { return s.visible; }).forEach(function (series) { return series.processData(); });\n this.updateLegend();\n this.layoutPending = true;\n };\n Chart.prototype.positionCaptions = function () {\n var _a = this, title = _a.title, subtitle = _a.subtitle;\n var titleVisible = false;\n var subtitleVisible = false;\n var spacing = 10;\n var paddingTop = spacing;\n if (title && title.enabled) {\n title.node.x = this.width / 2;\n title.node.y = paddingTop;\n titleVisible = true;\n var titleBBox = title.node.computeBBox(); // make sure to set node's x/y, then computeBBox\n if (titleBBox) {\n paddingTop = titleBBox.y + titleBBox.height;\n }\n if (subtitle && subtitle.enabled) {\n subtitle.node.x = this.width / 2;\n subtitle.node.y = paddingTop + spacing;\n subtitleVisible = true;\n var subtitleBBox = subtitle.node.computeBBox();\n if (subtitleBBox) {\n paddingTop = subtitleBBox.y + subtitleBBox.height;\n }\n }\n }\n if (title) {\n title.node.visible = titleVisible;\n }\n if (subtitle) {\n subtitle.node.visible = subtitleVisible;\n }\n this.captionAutoPadding = paddingTop;\n };\n Chart.prototype.positionLegend = function () {\n if (!this.legend.enabled || !this.legend.data.length) {\n return;\n }\n var _a = this, legend = _a.legend, captionAutoPadding = _a.captionAutoPadding, legendAutoPadding = _a.legendAutoPadding;\n var width = this.width;\n var height = this.height - captionAutoPadding;\n var legendGroup = legend.group;\n var legendPadding = legend.padding;\n legendGroup.translationX = 0;\n legendGroup.translationY = 0;\n var legendBBox;\n switch (legend.position) {\n case 'bottom':\n legend.performLayout(width - legendPadding * 2, 0);\n legendBBox = legendGroup.computeBBox();\n legendGroup.translationX = (width - legendBBox.width) / 2 - legendBBox.x;\n legendGroup.translationY = captionAutoPadding + height - legendBBox.height - legendBBox.y - legendPadding;\n legendAutoPadding.bottom = legendBBox.height;\n break;\n case 'top':\n legend.performLayout(width - legendPadding * 2, 0);\n legendBBox = legendGroup.computeBBox();\n legendGroup.translationX = (width - legendBBox.width) / 2 - legendBBox.x;\n legendGroup.translationY = captionAutoPadding + legendPadding - legendBBox.y;\n legendAutoPadding.top = legendBBox.height;\n break;\n case 'left':\n legend.performLayout(0, height - legendPadding * 2);\n legendBBox = legendGroup.computeBBox();\n legendGroup.translationX = legendPadding - legendBBox.x;\n legendGroup.translationY = captionAutoPadding + (height - legendBBox.height) / 2 - legendBBox.y;\n legendAutoPadding.left = legendBBox.width;\n break;\n default: // case 'right':\n legend.performLayout(0, height - legendPadding * 2);\n legendBBox = legendGroup.computeBBox();\n legendGroup.translationX = width - legendBBox.width - legendBBox.x - legendPadding;\n legendGroup.translationY = captionAutoPadding + (height - legendBBox.height) / 2 - legendBBox.y;\n legendAutoPadding.right = legendBBox.width;\n break;\n }\n // Round off for pixel grid alignment to work properly.\n legendGroup.translationX = Math.floor(legendGroup.translationX);\n legendGroup.translationY = Math.floor(legendGroup.translationY);\n };\n Chart.prototype.setupListeners = function (chartElement) {\n chartElement.addEventListener('mousemove', this.onMouseMove);\n chartElement.addEventListener('mouseout', this.onMouseOut);\n chartElement.addEventListener('click', this.onClick);\n };\n Chart.prototype.cleanupListeners = function (chartElement) {\n chartElement.removeEventListener('mousemove', this.onMouseMove);\n chartElement.removeEventListener('mouseout', this.onMouseMove);\n chartElement.removeEventListener('click', this.onClick);\n };\n Chart.prototype.pickSeriesNode = function (x, y) {\n var allSeries = this.series;\n var node = undefined;\n for (var i = allSeries.length - 1; i >= 0; i--) {\n var series = allSeries[i];\n node = series.group.pickNode(x, y);\n if (node) {\n return {\n series: series,\n node: node\n };\n }\n }\n };\n Chart.prototype.onSeriesNodePick = function (event, series, node) {\n if (this.lastPick) {\n this.lastPick.series.dehighlightNode();\n }\n this.lastPick = {\n series: series,\n node: node\n };\n series.highlightNode(node);\n var html = series.tooltipEnabled && series.getTooltipHtml(node.datum);\n if (html) {\n this.showTooltip(event, html);\n }\n };\n Object.defineProperty(Chart.prototype, \"tooltipClass\", {\n get: function () {\n return this._tooltipClass;\n },\n set: function (value) {\n if (this._tooltipClass !== value) {\n this._tooltipClass = value;\n this.toggleTooltip();\n }\n },\n enumerable: true,\n configurable: true\n });\n Chart.prototype.toggleTooltip = function (visible) {\n var classList = [this.defaultTooltipClass, this._tooltipClass];\n if (visible) {\n classList.push('visible');\n }\n else if (this.lastPick) {\n this.lastPick.series.dehighlightNode();\n this.lastPick = undefined;\n }\n this.tooltipElement.setAttribute('class', classList.join(' '));\n };\n /**\n * Shows tooltip at the given event's coordinates.\n * If the `html` parameter is missing, moves the existing tooltip to the new position.\n */\n Chart.prototype.showTooltip = function (event, html) {\n var el = this.tooltipElement;\n var offset = this.tooltipOffset;\n var parent = el.parentElement;\n if (html !== undefined) {\n el.innerHTML = html;\n }\n else if (!el.innerHTML) {\n return;\n }\n if (html) {\n this.toggleTooltip(true);\n }\n var tooltipRect = el.getBoundingClientRect();\n var top = event.pageY + offset[1];\n var left = event.pageX + offset[0];\n if (tooltipRect &&\n parent &&\n parent.parentElement &&\n (left - pageXOffset + tooltipRect.width > parent.parentElement.offsetWidth)) {\n left -= tooltipRect.width + offset[0];\n }\n el.style.left = left + \"px\";\n el.style.top = top + \"px\";\n };\n Chart.prototype.hideTooltip = function () {\n this.toggleTooltip(false);\n };\n __decorate([\n observable_1.reactive([], 'scene.parent')\n ], Chart.prototype, \"parent\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], Chart.prototype, \"title\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], Chart.prototype, \"subtitle\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], Chart.prototype, \"padding\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'], 'scene.size')\n ], Chart.prototype, \"size\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'], 'scene.height')\n ], Chart.prototype, \"height\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'], 'scene.width')\n ], Chart.prototype, \"width\", void 0);\n return Chart;\n}(observable_1.Observable));\nexports.Chart = Chart;\n//# sourceMappingURL=chart.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar hdpiCanvas_1 = require(\"../canvas/hdpiCanvas\");\nvar Scene = /** @class */ (function () {\n function Scene(document) {\n var _this = this;\n if (document === void 0) { document = window.document; }\n this.id = this.createId();\n this._dirty = false;\n this.animationFrameId = 0;\n this._root = null;\n this._frameIndex = 0;\n this._renderFrameIndex = false;\n this.render = function () {\n var _a = _this, ctx = _a.ctx, root = _a.root;\n if (root && !root.visible) {\n _this.dirty = false;\n return;\n }\n // start with a blank canvas, clear previous drawing\n ctx.clearRect(0, 0, _this.width, _this.height);\n if (root) {\n ctx.save();\n if (root.visible) {\n root.render(ctx);\n }\n ctx.restore();\n }\n _this._frameIndex++;\n if (_this.renderFrameIndex) {\n ctx.fillStyle = 'white';\n ctx.fillRect(0, 0, 40, 15);\n ctx.fillStyle = 'black';\n ctx.fillText(_this.frameIndex.toString(), 0, 10);\n }\n _this.dirty = false;\n };\n this.canvas = new hdpiCanvas_1.HdpiCanvas(document);\n this.ctx = this.canvas.context;\n }\n Scene.prototype.createId = function () {\n return this.constructor.name + '-' + (Scene.id++);\n };\n Object.defineProperty(Scene.prototype, \"parent\", {\n get: function () {\n return this.canvas.parent;\n },\n set: function (value) {\n this.canvas.parent = value;\n },\n enumerable: true,\n configurable: true\n });\n Scene.prototype.download = function (fileName) {\n this.canvas.download(fileName);\n };\n Object.defineProperty(Scene.prototype, \"width\", {\n get: function () {\n return this.canvas.width;\n },\n set: function (value) {\n this.size = [value, this.height];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scene.prototype, \"height\", {\n get: function () {\n return this.canvas.height;\n },\n set: function (value) {\n this.size = [this.width, value];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scene.prototype, \"size\", {\n get: function () {\n return [this.width, this.height];\n },\n set: function (value) {\n var width = value[0], height = value[1];\n if (this.width !== width || this.height !== height) {\n this.canvas.resize(width, height);\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scene.prototype, \"dirty\", {\n get: function () {\n return this._dirty;\n },\n set: function (dirty) {\n if (dirty && !this._dirty) {\n this.animationFrameId = requestAnimationFrame(this.render);\n }\n this._dirty = dirty;\n },\n enumerable: true,\n configurable: true\n });\n Scene.prototype.cancelRender = function () {\n if (this.animationFrameId) {\n cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = 0;\n this._dirty = false;\n }\n };\n Object.defineProperty(Scene.prototype, \"root\", {\n get: function () {\n return this._root;\n },\n set: function (node) {\n if (node === this._root) {\n return;\n }\n if (this._root) {\n this._root._setScene(undefined);\n }\n this._root = node;\n if (node) {\n // If `node` is the root node of another scene ...\n if (node.parent === null && node.scene && node.scene !== this) {\n node.scene.root = null;\n }\n node._setScene(this);\n }\n this.dirty = true;\n },\n enumerable: true,\n configurable: true\n });\n Scene.prototype.appendPath = function (path) {\n var ctx = this.ctx;\n var commands = path.commands;\n var params = path.params;\n var n = commands.length;\n var j = 0;\n ctx.beginPath();\n for (var i = 0; i < n; i++) {\n switch (commands[i]) {\n case 'M':\n ctx.moveTo(params[j++], params[j++]);\n break;\n case 'L':\n ctx.lineTo(params[j++], params[j++]);\n break;\n case 'C':\n ctx.bezierCurveTo(params[j++], params[j++], params[j++], params[j++], params[j++], params[j++]);\n break;\n case 'Z':\n ctx.closePath();\n break;\n }\n }\n };\n Object.defineProperty(Scene.prototype, \"frameIndex\", {\n get: function () {\n return this._frameIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scene.prototype, \"renderFrameIndex\", {\n get: function () {\n return this._renderFrameIndex;\n },\n set: function (value) {\n if (this._renderFrameIndex !== value) {\n this._renderFrameIndex = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Scene.id = 1;\n return Scene;\n}());\nexports.Scene = Scene;\n//# sourceMappingURL=scene.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar group_1 = require(\"../../scene/group\");\nvar observable_1 = require(\"../../util/observable\");\nvar chartAxis_1 = require(\"../chartAxis\");\nvar Series = /** @class */ (function (_super) {\n __extends(Series, _super);\n function Series() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.id = _this.createId();\n /**\n * The group node that contains all the nodes used to render this series.\n */\n _this.group = new group_1.Group();\n _this.directions = [chartAxis_1.ChartAxisDirection.X, chartAxis_1.ChartAxisDirection.Y];\n _this.tooltipEnabled = false;\n _this.data = [];\n _this.visible = true;\n _this.showInLegend = true;\n _this.scheduleLayout = function () {\n _this.fireEvent({ type: 'layoutChange' });\n };\n _this.scheduleData = function () {\n _this.fireEvent({ type: 'dataChange' });\n };\n return _this;\n }\n /**\n * Returns the actual keys used (to fetch the values from `data` items) for the given direction.\n */\n Series.prototype.getKeys = function (direction) {\n var _this = this;\n var directionKeys = this.directionKeys;\n var keys = directionKeys && directionKeys[direction];\n var values = [];\n if (keys) {\n keys.forEach(function (key) {\n var value = _this[key];\n if (value) {\n if (Array.isArray(value)) {\n values.push.apply(values, value);\n }\n else {\n values.push(value);\n }\n }\n });\n }\n return values;\n };\n Series.prototype.createId = function () {\n var constructor = this.constructor;\n var className = constructor.className;\n if (!className) {\n throw new Error(\"The \" + constructor + \" is missing the 'className' property.\");\n }\n return className + '-' + (constructor.id = (constructor.id || 0) + 1);\n };\n Series.prototype.toggleSeriesItem = function (itemId, enabled) {\n this.visible = enabled;\n };\n Series.prototype.fixNumericExtent = function (extent, type) {\n if (!extent) {\n // if (type) {\n // console.warn(`The ${type}-domain could not be found (no valid values), using the default of [0, 1].`);\n // }\n return [0, 1];\n }\n var min = extent[0], max = extent[1];\n if (min === max) {\n min -= 1;\n max += 1;\n // if (type) {\n // console.warn(`The ${type}-domain has zero length and has been automatically expanded`\n // + ` by 1 in each direction (from the single valid ${type}-value: ${min}).`);\n // }\n }\n if (!isFinite(min) || !isFinite(max)) {\n min = 0;\n max = 1;\n // if (type) {\n // console.warn(`The ${type}-domain has infinite length, using the default of [0, 1].`);\n // }\n }\n return [min, max];\n };\n __decorate([\n observable_1.reactive(['dataChange'])\n ], Series.prototype, \"data\", void 0);\n __decorate([\n observable_1.reactive(['dataChange'])\n ], Series.prototype, \"visible\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], Series.prototype, \"showInLegend\", void 0);\n return Series;\n}(observable_1.Observable));\nexports.Series = Series;\n//# sourceMappingURL=series.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar observable_1 = require(\"../../util/observable\");\nvar circle_1 = require(\"../marker/circle\");\nvar SeriesMarker = /** @class */ (function (_super) {\n __extends(SeriesMarker, _super);\n function SeriesMarker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.enabled = true;\n /**\n * Marker constructor function. A series will create one marker instance per data point.\n */\n _this.type = circle_1.Circle;\n _this.size = 8;\n /**\n * In case a series has the `sizeKey` set, the `sizeKey` values along with the `minSize/size` configs\n * will be used to determine the size of the marker. All values will be mapped to a marker size\n * within the `[minSize, size]` range, where the largest values will correspond to the `size`\n * and the lowest to the `minSize`.\n */\n _this.minSize = 12;\n return _this;\n }\n __decorate([\n observable_1.reactive(['change'])\n ], SeriesMarker.prototype, \"enabled\", void 0);\n __decorate([\n observable_1.reactive(['change'])\n ], SeriesMarker.prototype, \"type\", void 0);\n __decorate([\n observable_1.reactive(['change'])\n ], SeriesMarker.prototype, \"size\", void 0);\n __decorate([\n observable_1.reactive(['change'])\n ], SeriesMarker.prototype, \"minSize\", void 0);\n __decorate([\n observable_1.reactive(['change'])\n ], SeriesMarker.prototype, \"fill\", void 0);\n __decorate([\n observable_1.reactive(['change'])\n ], SeriesMarker.prototype, \"stroke\", void 0);\n __decorate([\n observable_1.reactive(['change'])\n ], SeriesMarker.prototype, \"strokeWidth\", void 0);\n return SeriesMarker;\n}(observable_1.Observable));\nexports.SeriesMarker = SeriesMarker;\n//# sourceMappingURL=seriesMarker.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar marker_1 = require(\"./marker\");\nvar Circle = /** @class */ (function (_super) {\n __extends(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype.updatePath = function () {\n var _a = this, x = _a.x, y = _a.y, path = _a.path, size = _a.size;\n var r = size / 2;\n path.clear();\n path.cubicArc(x, y, r, r, 0, 0, Math.PI * 2, 0);\n path.closePath();\n };\n Circle.className = 'Circle';\n return Circle;\n}(marker_1.Marker));\nexports.Circle = Circle;\n//# sourceMappingURL=circle.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar group_1 = require(\"../../scene/group\");\nvar selection_1 = require(\"../../scene/selection\");\nvar line_1 = require(\"../../scene/shape/line\");\nvar angle_1 = require(\"../../util/angle\");\nvar text_1 = require(\"../../scene/shape/text\");\nvar bbox_1 = require(\"../../scene/bbox\");\nvar matrix_1 = require(\"../../scene/matrix\");\n// import { Rect } from \"../../scene/shape/rect\"; debug (bbox)\nvar bandScale_1 = require(\"../../scale/bandScale\");\nvar tree_1 = require(\"../../layout/tree\");\nvar axis_1 = require(\"../../axis\");\nvar chartAxis_1 = require(\"../chartAxis\");\nvar GroupedCategoryAxisLabel = /** @class */ (function (_super) {\n __extends(GroupedCategoryAxisLabel, _super);\n function GroupedCategoryAxisLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.grid = false;\n return _this;\n }\n return GroupedCategoryAxisLabel;\n}(axis_1.AxisLabel));\n/**\n * A general purpose linear axis with no notion of orientation.\n * The axis is always rendered vertically, with horizontal labels positioned to the left\n * of the axis line by default. The axis can be {@link rotation | rotated} by an arbitrary angle,\n * so that it can be used as a top, right, bottom, left, radial or any other kind\n * of linear axis.\n * The generic `D` parameter is the type of the domain of the axis' scale.\n * The output range of the axis' scale is always numeric (screen coordinates).\n */\nvar GroupedCategoryAxis = /** @class */ (function (_super) {\n __extends(GroupedCategoryAxis, _super);\n function GroupedCategoryAxis() {\n var _this = _super.call(this, new bandScale_1.BandScale()) || this;\n _this.id = _this.createId();\n _this.tickScale = new bandScale_1.BandScale();\n _this.group = new group_1.Group();\n _this.translation = {\n x: 0,\n y: 0\n };\n /**\n * Axis rotation angle in degrees.\n */\n _this.rotation = 0;\n _this.line = {\n width: 1,\n color: 'rgba(195, 195, 195, 1)'\n };\n // readonly tick = new AxisTick();\n _this.label = new GroupedCategoryAxisLabel();\n /**\n * The color of the labels.\n * Use `undefined` rather than `rgba(0, 0, 0, 0)` to make labels invisible.\n */\n _this.labelColor = 'rgba(87, 87, 87, 1)';\n var _a = _this, group = _a.group, scale = _a.scale, tickScale = _a.tickScale;\n scale.paddingOuter = 0.1;\n scale.paddingInner = scale.paddingOuter * 2;\n tickScale.paddingInner = 1;\n tickScale.paddingOuter = 0;\n _this.gridLineSelection = selection_1.Selection.select(group).selectAll();\n _this.axisLineSelection = selection_1.Selection.select(group).selectAll();\n _this.separatorSelection = selection_1.Selection.select(group).selectAll();\n _this.labelSelection = selection_1.Selection.select(group).selectAll();\n return _this;\n // this.group.append(this.bboxRect); // debug (bbox)\n }\n GroupedCategoryAxis.prototype.createId = function () {\n var constructor = this.constructor;\n var className = constructor.className;\n if (!className) {\n throw new Error(\"The \" + constructor + \" is missing the 'className' property.\");\n }\n return className + '-' + (constructor.id = (constructor.id || 0) + 1);\n };\n Object.defineProperty(GroupedCategoryAxis.prototype, \"domain\", {\n get: function () {\n return this.scale.domain;\n },\n set: function (value) {\n this.scale.domain = value;\n var tickTree = tree_1.ticksToTree(value);\n this.tickTreeLayout = tree_1.treeLayout(tickTree);\n var domain = value.slice();\n domain.push('');\n this.tickScale.domain = domain;\n this.resizeTickTree();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GroupedCategoryAxis.prototype, \"range\", {\n get: function () {\n return this.scale.range;\n },\n set: function (value) {\n this.scale.range = value;\n this.tickScale.range = value;\n this.resizeTickTree();\n },\n enumerable: true,\n configurable: true\n });\n GroupedCategoryAxis.prototype.resizeTickTree = function () {\n var s = this.scale;\n var range = s.domain.length ? [s.convert(s.domain[0]), s.convert(s.domain[s.domain.length - 1])] : s.range;\n var layout = this.tickTreeLayout;\n var lineHeight = this.lineHeight;\n if (layout) {\n layout.resize(Math.abs(range[1] - range[0]), layout.depth * lineHeight, (Math.min(range[0], range[1]) || 0) + (s.bandwidth || 0) / 2, -layout.depth * lineHeight, (range[1] - range[0]) < 0);\n }\n };\n Object.defineProperty(GroupedCategoryAxis.prototype, \"lineHeight\", {\n get: function () {\n return this.label.fontSize * 1.5;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GroupedCategoryAxis.prototype, \"gridLength\", {\n get: function () {\n return this._gridLength;\n },\n /**\n * The length of the grid. The grid is only visible in case of a non-zero value.\n */\n set: function (value) {\n // Was visible and now invisible, or was invisible and now visible.\n if (this._gridLength && !value || !this._gridLength && value) {\n this.gridLineSelection = this.gridLineSelection.remove().setData([]);\n this.labelSelection = this.labelSelection.remove().setData([]);\n }\n this._gridLength = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Creates/removes/updates the scene graph nodes that constitute the axis.\n * Supposed to be called _manually_ after changing _any_ of the axis properties.\n * This allows to bulk set axis properties before updating the nodes.\n * The node changes made by this method are rendered on the next animation frame.\n * We could schedule this method call automatically on the next animation frame\n * when any of the axis properties change (the way we do when properties of scene graph's\n * nodes change), but this will mean that we first wait for the next animation\n * frame to make changes to the nodes of the axis, then wait for another animation\n * frame to render those changes. It's nice to have everything update automatically,\n * but this extra level of async indirection will not just introduce an unwanted delay,\n * it will also make it harder to reason about the program.\n */\n GroupedCategoryAxis.prototype.update = function () {\n var _this = this;\n var _a = this, group = _a.group, scale = _a.scale, label = _a.label, tickScale = _a.tickScale;\n var rangeStart = scale.range[0];\n var rangeEnd = scale.range[1];\n var rangeLength = Math.abs(rangeEnd - rangeStart);\n var bandwidth = (rangeLength / scale.domain.length) || 0;\n var parallelLabels = label.parallel;\n var rotation = angle_1.toRadians(this.rotation);\n var isHorizontal = Math.abs(Math.cos(rotation)) < 1e-8;\n var labelRotation = angle_1.normalizeAngle360(angle_1.toRadians(this.label.rotation));\n group.translationX = this.translation.x;\n group.translationY = this.translation.y;\n group.rotation = rotation;\n var title = this.title;\n // The Text `node` of the Caption is not used to render the title of the grouped category axis.\n // The phantom root of the tree layout is used instead.\n if (title) {\n title.node.visible = false;\n }\n var lineHeight = this.lineHeight;\n // Render ticks and labels.\n var tickTreeLayout = this.tickTreeLayout;\n var labels = scale.ticks();\n var treeLabels = tickTreeLayout ? tickTreeLayout.nodes : [];\n var isLabelTree = tickTreeLayout ? tickTreeLayout.depth > 1 : false;\n var ticks = tickScale.ticks();\n // The side of the axis line to position the labels on.\n // -1 = left (default)\n // 1 = right\n var sideFlag = label.mirrored ? 1 : -1;\n // When labels are parallel to the axis line, the `parallelFlipFlag` is used to\n // flip the labels to avoid upside-down text, when the axis is rotated\n // such that it is in the right hemisphere, i.e. the angle of rotation\n // is in the [0, π] interval.\n // The rotation angle is normalized, so that we have an easier time checking\n // if it's in the said interval. Since the axis is always rendered vertically\n // and then rotated, zero rotation means 12 (not 3) o-clock.\n // -1 = flip\n // 1 = don't flip (default)\n var parallelFlipRotation = angle_1.normalizeAngle360(rotation);\n var parallelFlipFlag = (!labelRotation && parallelFlipRotation >= 0 && parallelFlipRotation <= Math.PI) ? -1 : 1;\n var regularFlipRotation = angle_1.normalizeAngle360(rotation - Math.PI / 2);\n // Flip if the axis rotation angle is in the top hemisphere.\n var regularFlipFlag = (!labelRotation && regularFlipRotation >= 0 && regularFlipRotation <= Math.PI) ? -1 : 1;\n var updateGridLines = this.gridLineSelection.setData(this.gridLength ? ticks : []);\n updateGridLines.exit.remove();\n var enterGridLines = updateGridLines.enter.append(line_1.Line);\n var gridLineSelection = updateGridLines.merge(enterGridLines);\n var updateLabels = this.labelSelection.setData(treeLabels);\n updateLabels.exit.remove();\n var enterLabels = updateLabels.enter.append(text_1.Text);\n var labelSelection = updateLabels.merge(enterLabels);\n var labelFormatter = label.formatter;\n var maxLeafLabelWidth = 0;\n labelSelection\n .each(function (node, datum, index) {\n node.fontStyle = label.fontStyle;\n node.fontWeight = label.fontWeight;\n node.fontSize = label.fontSize;\n node.fontFamily = label.fontFamily;\n node.fill = label.color;\n node.textBaseline = parallelFlipFlag === -1 ? 'bottom' : 'hanging';\n // label.textBaseline = parallelLabels && !labelRotation\n // ? (sideFlag * parallelFlipFlag === -1 ? 'hanging' : 'bottom')\n // : 'middle';\n if (title && index === 0) { // use the phantom root as the axis title\n node.text = title.text;\n node.fontSize = title.fontSize;\n node.fontStyle = title.fontStyle;\n node.fontWeight = title.fontWeight;\n node.fontFamily = title.fontFamily;\n node.textBaseline = 'hanging';\n node.visible = labels.length > 0;\n }\n else {\n node.text = labelFormatter\n ? labelFormatter({\n value: String(datum.label),\n index: index\n })\n : String(datum.label);\n }\n node.textAlign = 'center';\n node.translationX = datum.screenY - label.fontSize * 0.25;\n node.translationY = datum.screenX;\n var bbox = node.computeBBox();\n if (bbox && bbox.width > maxLeafLabelWidth) {\n maxLeafLabelWidth = bbox.width;\n }\n });\n var labelX = sideFlag * label.padding;\n var autoRotation = parallelLabels\n ? parallelFlipFlag * Math.PI / 2\n : (regularFlipFlag === -1 ? Math.PI : 0);\n var labelGrid = this.label.grid;\n var separatorData = [];\n labelSelection.each(function (label, datum, index) {\n label.x = labelX;\n label.rotationCenterX = labelX;\n if (!datum.children.length) {\n label.rotation = labelRotation;\n label.textAlign = 'end';\n label.textBaseline = 'middle';\n }\n else {\n label.translationX -= maxLeafLabelWidth - lineHeight + _this.label.padding;\n if (isHorizontal) {\n label.rotation = autoRotation;\n }\n else {\n label.rotation = -Math.PI / 2;\n }\n }\n // Calculate positions of label separators for all nodes except the root.\n // Each separator is placed to the top of the current label.\n if (datum.parent && isLabelTree) {\n var y = !datum.children.length\n ? datum.screenX - bandwidth / 2\n : datum.screenX - datum.leafCount * bandwidth / 2;\n if (!datum.children.length) {\n if ((datum.number !== datum.children.length - 1) || labelGrid) {\n separatorData.push({\n y: y,\n x1: 0,\n x2: -maxLeafLabelWidth - _this.label.padding * 2,\n toString: function () { return String(index); }\n });\n }\n }\n else {\n var x = -maxLeafLabelWidth - _this.label.padding * 2 + datum.screenY;\n separatorData.push({\n y: y,\n x1: x + lineHeight,\n x2: x,\n toString: function () { return String(index); }\n });\n }\n }\n });\n // Calculate the position of the long separator on the far bottom of the axis.\n var minX = 0;\n separatorData.forEach(function (d) { return minX = Math.min(minX, d.x2); });\n separatorData.push({\n y: Math.max(rangeStart, rangeEnd),\n x1: 0,\n x2: minX,\n toString: function () { return String(separatorData.length); }\n });\n var updateSeparators = this.separatorSelection.setData(separatorData);\n updateSeparators.exit.remove();\n var enterSeparators = updateSeparators.enter.append(line_1.Line);\n var separatorSelection = updateSeparators.merge(enterSeparators);\n this.separatorSelection = separatorSelection;\n separatorSelection.each(function (line, datum) {\n line.x1 = datum.x1;\n line.x2 = datum.x2;\n line.y1 = datum.y;\n line.y2 = datum.y;\n line.stroke = _this.tick.color;\n line.fill = undefined;\n line.strokeWidth = 1;\n });\n this.gridLineSelection = gridLineSelection;\n this.labelSelection = labelSelection;\n // Render axis lines.\n var lineCount = tickTreeLayout ? tickTreeLayout.depth + 1 : 1;\n var lines = [];\n for (var i = 0; i < lineCount; i++) {\n lines.push(i);\n }\n var updateAxisLines = this.axisLineSelection.setData(lines);\n updateAxisLines.exit.remove();\n var enterAxisLines = updateAxisLines.enter.append(line_1.Line);\n var axisLineSelection = updateAxisLines.merge(enterAxisLines);\n this.axisLineSelection = axisLineSelection;\n axisLineSelection.each(function (line, _, index) {\n var x = index > 0 ? -maxLeafLabelWidth - _this.label.padding * 2 - (index - 1) * lineHeight : 0;\n line.x1 = x;\n line.x2 = x;\n line.y1 = rangeStart;\n line.y2 = rangeEnd;\n line.strokeWidth = _this.line.width;\n line.stroke = _this.line.color;\n line.visible = labels.length > 0 && (index === 0 || (labelGrid && isLabelTree));\n });\n if (this.gridLength) {\n var styles_1 = this.gridStyle;\n var styleCount_1 = styles_1.length;\n gridLineSelection\n .each(function (line, datum, index) {\n var y = Math.round(tickScale.convert(datum));\n line.x1 = 0;\n line.x2 = -sideFlag * _this.gridLength;\n line.y1 = y;\n line.y2 = y;\n line.visible = Math.abs(line.parent.translationY - rangeStart) > 1;\n var style = styles_1[index % styleCount_1];\n line.stroke = style.stroke;\n line.strokeWidth = _this.tick.width;\n line.lineDash = style.lineDash;\n line.fill = undefined;\n });\n }\n // debug (bbox)\n // const bbox = this.computeBBox();\n // const bboxRect = this.bboxRect;\n // bboxRect.x = bbox.x;\n // bboxRect.y = bbox.y;\n // bboxRect.width = bbox.width;\n // bboxRect.height = bbox.height;\n };\n GroupedCategoryAxis.prototype.computeBBox = function (options) {\n var includeTitle = !options || !options.excludeTitle;\n var left = Infinity;\n var right = -Infinity;\n var top = Infinity;\n var bottom = -Infinity;\n this.labelSelection.each(function (label, _, index) {\n // The label itself is rotated, but not translated, the group that\n // contains it is. So to capture the group transform in the label bbox\n // calculation we combine the transform matrices of the label and the group.\n // Depending on the timing of the `axis.computeBBox()` method call, we may\n // not have the group's and the label's transform matrices updated yet (because\n // the transform matrix is not recalculated whenever a node's transform attributes\n // change, instead it's marked for recalculation on the next frame by setting\n // the node's `dirtyTransform` flag to `true`), so we force them to update\n // right here by calling `computeTransformMatrix`.\n if (index > 0 || includeTitle) { // first node is the root (title)\n label.computeTransformMatrix();\n var matrix = matrix_1.Matrix.flyweight(label.matrix);\n var labelBBox = label.computeBBox();\n if (labelBBox) {\n var bbox = matrix.transformBBox(labelBBox);\n left = Math.min(left, bbox.x);\n right = Math.max(right, bbox.x + bbox.width);\n top = Math.min(top, bbox.y);\n bottom = Math.max(bottom, bbox.y + bbox.height);\n }\n }\n });\n return new bbox_1.BBox(left, top, right - left, bottom - top);\n };\n // debug (bbox)\n // private bboxRect = (() => {\n // const rect = new Rect();\n // rect.fill = undefined;\n // rect.stroke = 'red';\n // rect.strokeWidth = 1;\n // rect.strokeOpacity = 0.7;\n // return rect;\n // })();\n GroupedCategoryAxis.className = 'GroupedCategoryAxis';\n return GroupedCategoryAxis;\n}(chartAxis_1.ChartAxis));\nexports.GroupedCategoryAxis = GroupedCategoryAxis;\n//# sourceMappingURL=groupedCategoryAxis.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar series_1 = require(\"../series\");\nvar chartAxis_1 = require(\"../../chartAxis\");\nvar seriesMarker_1 = require(\"../seriesMarker\");\nvar PolarSeries = /** @class */ (function (_super) {\n __extends(PolarSeries, _super);\n function PolarSeries() {\n var _a;\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.directionKeys = (_a = {},\n _a[chartAxis_1.ChartAxisDirection.X] = ['angleKey'],\n _a[chartAxis_1.ChartAxisDirection.Y] = ['radiusKey'],\n _a);\n /**\n * The center of the polar series (for example, the center of a pie).\n * If the polar chart has multiple series, all of them will have their\n * center set to the same value as a result of the polar chart layout.\n * The center coordinates are not supposed to be set by the user.\n */\n _this.centerX = 0;\n _this.centerY = 0;\n /**\n * The maximum radius the series can use.\n * This value is set automatically as a result of the polar chart layout\n * and is not supposed to be set by the user.\n */\n _this.radius = 0;\n return _this;\n }\n return PolarSeries;\n}(series_1.Series));\nexports.PolarSeries = PolarSeries;\nvar PolarSeriesMarker = /** @class */ (function (_super) {\n __extends(PolarSeriesMarker, _super);\n function PolarSeriesMarker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return PolarSeriesMarker;\n}(seriesMarker_1.SeriesMarker));\nexports.PolarSeriesMarker = PolarSeriesMarker;\n//# sourceMappingURL=polarSeries.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\nexports.ascending = ascending;\n//# sourceMappingURL=compare.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction default_1(a, b) {\n a = +a;\n b -= a;\n return function (t) { return a + b * t; };\n}\nexports.default = default_1;\n//# sourceMappingURL=number.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar compare_1 = require(\"./compare\");\n/**\n * Returns the insertion point for `x` in array to maintain sorted order.\n * The arguments `lo` and `hi` may be used to specify a subset of the array which should be considered;\n * by default the entire array is used. If `x` is already present in array, the insertion point will be before\n * (to the left of) any existing entries. The return value is suitable for use as the first argument to `splice`\n * assuming that array is already sorted. The returned insertion point `i` partitions the array into two halves\n * so that all `v < x` for `v` in `array.slice(lo, i)` for the left side and all `v >= x` for `v` in `array.slice(i, hi)`\n * for the right side.\n * @param list\n * @param x\n * @param comparator\n * @param lo\n * @param hi\n */\nfunction bisectLeft(list, x, comparator, lo, hi) {\n if (lo === void 0) { lo = 0; }\n if (hi === void 0) { hi = list.length; }\n while (lo < hi) {\n var mid = (lo + hi) >>> 1;\n if (comparator(list[mid], x) < 0) { // list[mid] < x\n lo = mid + 1;\n }\n else {\n hi = mid;\n }\n }\n return lo;\n}\nexports.bisectLeft = bisectLeft;\nfunction bisectRight(list, x, comparator, lo, hi) {\n if (lo === void 0) { lo = 0; }\n if (hi === void 0) { hi = list.length; }\n while (lo < hi) {\n var mid = (lo + hi) >>> 1;\n if (comparator(list[mid], x) > 0) { // list[mid] > x\n hi = mid;\n }\n else {\n lo = mid + 1;\n }\n }\n return lo;\n}\nexports.bisectRight = bisectRight;\n/**\n * A specialized version of `bisectLeft` that works with the arrays whose elements cannot be compared directly.\n * The map function is used instead to produce a comparable value for a given array element, then the values\n * returned by the map are compared using the `ascendingComparator`.\n * @param list\n * @param x\n * @param map\n * @param lo\n * @param hi\n */\nfunction complexBisectLeft(list, x, map, lo, hi) {\n if (lo === void 0) { lo = 0; }\n if (hi === void 0) { hi = list.length; }\n var comparator = ascendingComparator(map);\n while (lo < hi) {\n var mid = (lo + hi) >>> 1;\n if (comparator(list[mid], x) < 0) {\n lo = mid + 1;\n }\n else {\n hi = mid;\n }\n }\n return lo;\n}\nexports.complexBisectLeft = complexBisectLeft;\nfunction complexBisectRight(list, x, map, lo, hi) {\n if (lo === void 0) { lo = 0; }\n if (hi === void 0) { hi = list.length; }\n var comparator = ascendingComparator(map);\n while (lo < hi) {\n var mid = (lo + hi) >>> 1;\n if (comparator(list[mid], x) < 0) {\n lo = mid + 1;\n }\n else {\n hi = mid;\n }\n }\n return lo;\n}\nexports.complexBisectRight = complexBisectRight;\nfunction ascendingComparator(map) {\n return function (item, x) {\n return compare_1.ascending(map(item), x);\n };\n}\n//# sourceMappingURL=bisect.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar observable_1 = require(\"../util/observable\");\nvar Label = /** @class */ (function (_super) {\n __extends(Label, _super);\n function Label() {\n var _this = _super.call(this) || this;\n _this.enabled = true;\n _this.fontSize = 12;\n _this.fontFamily = 'Verdana, sans-serif';\n _this.color = 'black';\n return _this;\n }\n __decorate([\n observable_1.reactive(['change', 'dataChange'])\n ], Label.prototype, \"enabled\", void 0);\n __decorate([\n observable_1.reactive(['change'])\n ], Label.prototype, \"fontStyle\", void 0);\n __decorate([\n observable_1.reactive(['change'])\n ], Label.prototype, \"fontWeight\", void 0);\n __decorate([\n observable_1.reactive(['change'])\n ], Label.prototype, \"fontSize\", void 0);\n __decorate([\n observable_1.reactive(['change'])\n ], Label.prototype, \"fontFamily\", void 0);\n __decorate([\n observable_1.reactive(['change'])\n ], Label.prototype, \"color\", void 0);\n return Label;\n}(observable_1.Observable));\nexports.Label = Label;\n//# sourceMappingURL=label.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shape_1 = require(\"./shape\");\nvar path2D_1 = require(\"../path2D\");\nvar angle_1 = require(\"../../util/angle\");\nvar number_1 = require(\"../../util/number\");\nvar bbox_1 = require(\"../bbox\");\nvar Sector = /** @class */ (function (_super) {\n __extends(Sector, _super);\n function Sector() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.path = new path2D_1.Path2D();\n _this._dirtyPath = true;\n _this._centerX = 0;\n _this._centerY = 0;\n _this._centerOffset = 0;\n _this._innerRadius = 10;\n _this._outerRadius = 20;\n _this._startAngle = 0;\n _this._endAngle = Math.PI * 2;\n _this._angleOffset = 0;\n return _this;\n }\n Object.defineProperty(Sector.prototype, \"dirtyPath\", {\n get: function () {\n return this._dirtyPath;\n },\n set: function (value) {\n if (this._dirtyPath !== value) {\n this._dirtyPath = value;\n if (value) {\n this.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sector.prototype, \"centerX\", {\n get: function () {\n return this._centerX;\n },\n set: function (value) {\n if (this._centerX !== value) {\n this._centerX = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sector.prototype, \"centerY\", {\n get: function () {\n return this._centerY;\n },\n set: function (value) {\n if (this._centerY !== value) {\n this._centerY = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sector.prototype, \"centerOffset\", {\n get: function () {\n return this._centerOffset;\n },\n set: function (value) {\n if (this._centerOffset !== value) {\n this._centerOffset = Math.max(0, value);\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sector.prototype, \"innerRadius\", {\n get: function () {\n return this._innerRadius;\n },\n set: function (value) {\n if (this._innerRadius !== value) {\n this._innerRadius = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sector.prototype, \"outerRadius\", {\n get: function () {\n return this._outerRadius;\n },\n set: function (value) {\n if (this._outerRadius !== value) {\n this._outerRadius = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sector.prototype, \"startAngle\", {\n get: function () {\n return this._startAngle;\n },\n set: function (value) {\n if (this._startAngle !== value) {\n this._startAngle = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sector.prototype, \"endAngle\", {\n get: function () {\n return this._endAngle;\n },\n set: function (value) {\n if (this._endAngle !== value) {\n this._endAngle = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sector.prototype, \"angleOffset\", {\n get: function () {\n return this._angleOffset;\n },\n set: function (value) {\n if (this._angleOffset !== value) {\n this._angleOffset = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Sector.prototype.computeBBox = function () {\n var radius = this.outerRadius;\n return new bbox_1.BBox(this.centerX - radius, this.centerY - radius, radius * 2, radius * 2);\n };\n Sector.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n return this.path.isPointInPath(point.x, point.y);\n };\n Sector.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Object.defineProperty(Sector.prototype, \"fullPie\", {\n get: function () {\n return number_1.isEqual(angle_1.normalizeAngle360(this.startAngle), angle_1.normalizeAngle360(this.endAngle));\n },\n enumerable: true,\n configurable: true\n });\n Sector.prototype.updatePath = function () {\n if (!this.dirtyPath) {\n return;\n }\n var path = this.path;\n var angleOffset = this.angleOffset;\n var startAngle = Math.min(this.startAngle, this.endAngle) + angleOffset;\n var endAngle = Math.max(this.startAngle, this.endAngle) + angleOffset;\n var midAngle = (startAngle + endAngle) * 0.5;\n var innerRadius = Math.min(this.innerRadius, this.outerRadius);\n var outerRadius = Math.max(this.innerRadius, this.outerRadius);\n var centerOffset = this.centerOffset;\n var fullPie = this.fullPie;\n var radiiGap = outerRadius - innerRadius;\n // const tipOffset = radiiGap / 3;\n // const showTip = radiiGap < outerRadius / 2;\n var centerX = this.centerX;\n var centerY = this.centerY;\n path.clear();\n if (centerOffset) {\n centerX += centerOffset * Math.cos(midAngle);\n centerY += centerOffset * Math.sin(midAngle);\n }\n if (!fullPie) {\n path.moveTo(centerX + innerRadius * Math.cos(startAngle), centerY + innerRadius * Math.sin(startAngle));\n // if (showTip) {\n // path.lineTo(\n // centerX + 0.5 * (innerRadius + outerRadius) * Math.cos(startAngle) + tipOffset * Math.cos(startAngle + Math.PI / 2),\n // centerY + 0.5 * (innerRadius + outerRadius) * Math.sin(startAngle) + tipOffset * Math.sin(startAngle + Math.PI / 2)\n // );\n // }\n path.lineTo(centerX + outerRadius * Math.cos(startAngle), centerY + outerRadius * Math.sin(startAngle));\n }\n path.cubicArc(centerX, centerY, outerRadius, outerRadius, 0, startAngle, endAngle, 0);\n // path[fullPie ? 'moveTo' : 'lineTo'](\n // centerX + innerRadius * Math.cos(endAngle),\n // centerY + innerRadius * Math.sin(endAngle)\n // );\n if (fullPie) {\n path.moveTo(centerX + innerRadius * Math.cos(endAngle), centerY + innerRadius * Math.sin(endAngle));\n }\n else {\n // if (showTip) {\n // path.lineTo(\n // centerX + 0.5 * (innerRadius + outerRadius) * Math.cos(endAngle) + tipOffset * Math.cos(endAngle + Math.PI / 2),\n // centerY + 0.5 * (innerRadius + outerRadius) * Math.sin(endAngle) + tipOffset * Math.sin(endAngle + Math.PI / 2)\n // );\n // }\n // Temp workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=993330\n // Revert this commit when fixed ^^.\n var x = centerX + innerRadius * Math.cos(endAngle);\n path.lineTo(Math.abs(x) < 1e-8 ? 0 : x, centerY + innerRadius * Math.sin(endAngle));\n }\n path.cubicArc(centerX, centerY, innerRadius, innerRadius, 0, endAngle, startAngle, 1);\n path.closePath();\n this.dirtyPath = false;\n };\n Sector.prototype.render = function (ctx) {\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.matrix.toContext(ctx);\n this.updatePath();\n this.scene.appendPath(this.path);\n this.fillStroke(ctx);\n this.dirty = false;\n };\n Sector.className = 'Sector';\n return Sector;\n}(shape_1.Shape));\nexports.Sector = Sector;\n//# sourceMappingURL=sector.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar observable_1 = require(\"../util/observable\");\nvar DropShadow = /** @class */ (function (_super) {\n __extends(DropShadow, _super);\n function DropShadow() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.enabled = true;\n _this.color = 'rgba(0, 0, 0, 0.5)';\n _this.xOffset = 0;\n _this.yOffset = 0;\n _this.blur = 5;\n return _this;\n }\n __decorate([\n observable_1.reactive(['change'])\n ], DropShadow.prototype, \"enabled\", void 0);\n __decorate([\n observable_1.reactive(['change'])\n ], DropShadow.prototype, \"color\", void 0);\n __decorate([\n observable_1.reactive(['change'])\n ], DropShadow.prototype, \"xOffset\", void 0);\n __decorate([\n observable_1.reactive(['change'])\n ], DropShadow.prototype, \"yOffset\", void 0);\n __decorate([\n observable_1.reactive(['change'])\n ], DropShadow.prototype, \"blur\", void 0);\n return DropShadow;\n}(observable_1.Observable));\nexports.DropShadow = DropShadow;\n//# sourceMappingURL=dropShadow.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linearScale_1 = require(\"../../scale/linearScale\");\nvar chartAxis_1 = require(\"../chartAxis\");\nvar NumberAxis = /** @class */ (function (_super) {\n __extends(NumberAxis, _super);\n function NumberAxis() {\n var _this = _super.call(this, new linearScale_1.LinearScale()) || this;\n _this._nice = true;\n _this.scale.clamp = true;\n return _this;\n }\n Object.defineProperty(NumberAxis.prototype, \"nice\", {\n get: function () {\n return this._nice;\n },\n set: function (value) {\n if (this._nice !== value) {\n this._nice = value;\n if (value && this.scale.nice) {\n this.scale.nice(10);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumberAxis.prototype, \"domain\", {\n get: function () {\n return this.scale.domain;\n },\n set: function (value) {\n this.scale.domain = value;\n if (this.nice && this.scale.nice) {\n this.scale.nice(10);\n }\n },\n enumerable: true,\n configurable: true\n });\n return NumberAxis;\n}(chartAxis_1.ChartAxis));\nexports.NumberAxis = NumberAxis;\n//# sourceMappingURL=numberAxis.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar interval_1 = require(\"./interval\");\nvar duration_1 = require(\"./duration\");\nfunction floor(date) {\n date.setHours(0, 0, 0, 0);\n}\nfunction offset(date, days) {\n date.setDate(date.getDate() + days);\n}\nfunction count(start, end) {\n var tzMinuteDelta = end.getTimezoneOffset() - start.getTimezoneOffset();\n return (end.getTime() - start.getTime() - tzMinuteDelta * duration_1.durationMinute) / duration_1.durationDay;\n}\nfunction field(date) {\n return date.getDate() - 1;\n}\nvar day = new interval_1.CountableTimeInterval(floor, offset, count, field);\nexports.default = day;\n//# sourceMappingURL=day.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar duration_1 = require(\"./duration\");\nvar interval_1 = require(\"./interval\");\n// Set date to n-th day of the week.\nfunction weekday(n) {\n // Sets the `date` to the start of the `n`-th day of the current week.\n // n == 0 is Sunday.\n function floor(date) {\n // 1..31 1..7\n date.setDate(date.getDate() - (date.getDay() + 7 - n) % 7);\n date.setHours(0, 0, 0, 0); // h, m, s, ms\n }\n // Offset the date by the given number of weeks.\n function offset(date, weeks) {\n date.setDate(date.getDate() + weeks * 7);\n }\n // Count the number of weeks between teh start and end dates.\n function count(start, end) {\n var msDelta = end.getTime() - start.getTime();\n var tzMinuteDelta = end.getTimezoneOffset() - start.getTimezoneOffset();\n return (msDelta - tzMinuteDelta * duration_1.durationMinute) / duration_1.durationWeek;\n }\n return new interval_1.CountableTimeInterval(floor, offset, count);\n}\nexports.sunday = weekday(0);\nexports.monday = weekday(1);\nexports.tuesday = weekday(2);\nexports.wednesday = weekday(3);\nexports.thursday = weekday(4);\nexports.friday = weekday(5);\nexports.saturday = weekday(6);\nexports.default = exports.sunday;\n//# sourceMappingURL=week.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar interval_1 = require(\"./interval\");\nfunction floor(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}\nfunction offset(date, years) {\n date.setFullYear(date.getFullYear() + years);\n}\nfunction count(start, end) {\n return end.getFullYear() - start.getFullYear();\n}\nfunction field(date) {\n return date.getFullYear();\n}\nvar year = new interval_1.CountableTimeInterval(floor, offset, count, field);\nexports.default = year;\n//# sourceMappingURL=year.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar palettes_1 = require(\"../../../charts/chart/palettes\");\nvar dropShadow_1 = require(\"../../../charts/scene/dropShadow\");\nvar padding_1 = require(\"../../../charts/util/padding\");\nvar categoryAxis_1 = require(\"../../../charts/chart/axis/categoryAxis\");\nvar ChartProxy = /** @class */ (function () {\n function ChartProxy(chartProxyParams) {\n var _this = this;\n this.getChart = function () { return _this.chart; };\n this.isDarkTheme = function () { return _this.chartProxyParams.isDarkTheme(); };\n this.getFontColor = function () { return _this.isDarkTheme() ? 'rgb(221, 221, 221)' : 'rgb(87, 87, 87)'; };\n this.getAxisGridColor = function () { return _this.isDarkTheme() ? 'rgb(100, 100, 100)' : 'rgb(219, 219, 219)'; };\n this.getBackgroundColor = function () { return _this.isDarkTheme() ? '#2d3436' : 'white'; };\n this.getChartPaddingOption = function (property) { return _this.chartOptions.padding ? \"\" + _this.chartOptions.padding[property] : ''; };\n this.getShadowEnabled = function () { return !!_this.getShadowProperty('enabled'); };\n this.chartProxyParams = chartProxyParams;\n this.chartType = chartProxyParams.chartType;\n }\n ChartProxy.prototype.recreateChart = function (options) {\n if (this.chart) {\n this.destroyChart();\n }\n this.chart = this.createChart(options || this.chartOptions);\n };\n ChartProxy.prototype.initChartOptions = function () {\n var processChartOptions = this.chartProxyParams.processChartOptions;\n // allow users to override options before they are applied\n if (processChartOptions) {\n var params = { type: this.chartType, options: this.getDefaultOptions() };\n var overriddenOptions = processChartOptions(params);\n var safeOptions = this.getDefaultOptions();\n // ensure we have everything we need, in case the processing removed necessary options\n core_1._.mergeDeep(safeOptions, overriddenOptions, false);\n this.overridePalette(safeOptions);\n this.chartOptions = safeOptions;\n }\n else {\n this.chartOptions = this.getDefaultOptions();\n }\n // we want to preserve the existing width/height if an existing chart is being changed to a different type,\n // so this allows the chart defaults to be overridden\n this.chartOptions.width = this.chartProxyParams.width || this.chartOptions.width;\n this.chartOptions.height = this.chartProxyParams.height || this.chartOptions.height;\n };\n ChartProxy.prototype.overridePalette = function (chartOptions) {\n if (!this.chartProxyParams.allowPaletteOverride) {\n return;\n }\n var _a = this.getPredefinedPalette(), defaultFills = _a.fills, defaultStrokes = _a.strokes;\n var seriesDefaults = chartOptions.seriesDefaults;\n var fills = seriesDefaults.fill.colors, strokes = seriesDefaults.stroke.colors;\n var fillsOverridden = fills && fills.length > 0 && fills !== defaultFills;\n var strokesOverridden = strokes && strokes.length > 0 && strokes !== defaultStrokes;\n if (fillsOverridden || strokesOverridden) {\n this.customPalette = {\n fills: fillsOverridden ? fills : defaultFills,\n strokes: strokesOverridden ? strokes : defaultStrokes\n };\n }\n };\n ChartProxy.prototype.getChartOptions = function () {\n return this.chartOptions;\n };\n ChartProxy.prototype.getCustomPalette = function () {\n return this.customPalette;\n };\n ChartProxy.prototype.getChartOption = function (expression) {\n return core_1._.get(this.chartOptions, expression, undefined);\n };\n ChartProxy.prototype.setChartOption = function (expression, value) {\n core_1._.set(this.chartOptions, expression, value);\n var mappings = {\n 'legend.item.marker.strokeWidth': 'legend.markerStrokeWidth',\n 'legend.item.marker.size': 'legend.markerSize',\n 'legend.item.marker.padding': 'legend.markerPadding',\n 'legend.item.label.fontFamily': 'legend.labelFontFamily',\n 'legend.item.label.fontStyle': 'legend.labelFontStyle',\n 'legend.item.label.fontWeight': 'legend.labelFontWeight',\n 'legend.item.label.fontSize': 'legend.labelFontSize',\n 'legend.item.label.color': 'legend.labelColor',\n 'legend.item.paddingX': 'legend.itemPaddingX',\n 'legend.item.paddingY': 'legend.itemPaddingY',\n };\n core_1._.set(this.chart, mappings[expression] || expression, value);\n this.raiseChartOptionsChangedEvent();\n };\n ChartProxy.prototype.getSeriesOption = function (expression) {\n return core_1._.get(this.chartOptions.seriesDefaults, expression, undefined);\n };\n ChartProxy.prototype.setSeriesOption = function (expression, value) {\n core_1._.set(this.chartOptions.seriesDefaults, expression, value);\n var mappings = {\n 'stroke.width': 'strokeWidth',\n 'stroke.opacity': 'strokeOpacity',\n 'fill.opacity': 'fillOpacity',\n 'tooltip.enabled': 'tooltipEnabled',\n 'callout.colors': 'calloutColors',\n 'callout.strokeWidth': 'calloutStrokeWidth',\n 'callout.length': 'calloutLength',\n };\n var series = this.chart.series;\n series.forEach(function (s) { return core_1._.set(s, mappings[expression] || expression, value); });\n this.raiseChartOptionsChangedEvent();\n };\n ChartProxy.prototype.setTitleOption = function (property, value) {\n this.chartOptions.title[property] = value;\n if (!this.chart.title) {\n this.chart.title = {};\n }\n this.chart.title[property] = value;\n if (property === 'text') {\n this.setTitleOption('enabled', core_1._.exists(value));\n }\n this.raiseChartOptionsChangedEvent();\n };\n ChartProxy.prototype.setChartPaddingOption = function (property, value) {\n var padding = this.chartOptions.padding;\n if (!padding) {\n padding = this.chartOptions.padding = { top: 0, right: 0, bottom: 0, left: 0 };\n this.chart.padding = new padding_1.Padding(0);\n }\n padding[property] = value;\n this.chart.padding[property] = value;\n this.chart.performLayout();\n this.raiseChartOptionsChangedEvent();\n };\n ChartProxy.prototype.getShadowProperty = function (property) {\n var seriesDefaults = this.chartOptions.seriesDefaults;\n return seriesDefaults.shadow ? seriesDefaults.shadow[property] : '';\n };\n ChartProxy.prototype.setShadowProperty = function (property, value) {\n var seriesDefaults = this.chartOptions.seriesDefaults;\n if (!seriesDefaults.shadow) {\n seriesDefaults.shadow = {\n enabled: false,\n blur: 0,\n xOffset: 0,\n yOffset: 0,\n color: 'rgba(0,0,0,0.5)'\n };\n }\n seriesDefaults.shadow[property] = value;\n var series = this.getChart().series;\n series.forEach(function (s) {\n if (!s.shadow) {\n var shadow = new dropShadow_1.DropShadow();\n shadow.enabled = false;\n shadow.blur = 0;\n shadow.xOffset = 0;\n shadow.yOffset = 0;\n shadow.color = 'rgba(0,0,0,0.5)';\n s.shadow = shadow;\n }\n s.shadow[property] = value;\n });\n this.raiseChartOptionsChangedEvent();\n };\n ChartProxy.prototype.raiseChartOptionsChangedEvent = function () {\n var event = Object.freeze({\n type: core_1.Events.EVENT_CHART_OPTIONS_CHANGED,\n chartType: this.chartType,\n chartPalette: this.chartProxyParams.getChartPaletteName(),\n chartOptions: this.chartOptions,\n });\n this.chartProxyParams.eventService.dispatchEvent(event);\n };\n ChartProxy.prototype.getDefaultFontOptions = function () {\n return {\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontSize: 12,\n fontFamily: 'Verdana, sans-serif',\n color: this.getFontColor()\n };\n };\n ChartProxy.prototype.getDefaultDropShadowOptions = function () {\n return {\n enabled: false,\n blur: 5,\n xOffset: 3,\n yOffset: 3,\n color: 'rgba(0, 0, 0, 0.5)',\n };\n };\n ChartProxy.prototype.getPredefinedPalette = function () {\n return palettes_1.palettes.get(this.chartProxyParams.getChartPaletteName());\n };\n ChartProxy.prototype.getPalette = function () {\n return this.customPalette || this.getPredefinedPalette();\n };\n ChartProxy.prototype.getDefaultChartOptions = function () {\n var _a = this.getPredefinedPalette(), fills = _a.fills, strokes = _a.strokes;\n var fontOptions = this.getDefaultFontOptions();\n return {\n background: {\n fill: this.getBackgroundColor(),\n visible: true,\n },\n width: 800,\n height: 400,\n padding: {\n top: 20,\n right: 20,\n bottom: 20,\n left: 20,\n },\n title: __assign(__assign({}, fontOptions), { enabled: false, fontWeight: 'bold', fontSize: 16 }),\n subtitle: __assign(__assign({}, fontOptions), { enabled: false }),\n legend: {\n enabled: true,\n position: 'right',\n padding: 20,\n item: {\n label: __assign({}, fontOptions),\n marker: {\n type: 'square',\n size: 15,\n padding: 8,\n strokeWidth: 1,\n },\n paddingX: 16,\n paddingY: 8,\n },\n },\n seriesDefaults: {\n fill: {\n colors: fills,\n opacity: 1,\n },\n stroke: {\n colors: strokes,\n opacity: 1,\n width: 1,\n },\n highlightStyle: {\n fill: 'yellow',\n }\n }\n };\n };\n ChartProxy.prototype.transformData = function (data, categoryKey) {\n if (this.chart.axes.filter(function (a) { return a instanceof categoryAxis_1.CategoryAxis; }).length < 1) {\n return data;\n }\n // replace the values for the selected category with a complex object to allow for duplicated categories\n return data.map(function (d, index) {\n var value = d[categoryKey];\n var valueString = value && value.toString ? value.toString() : '';\n var datum = __assign({}, d);\n datum[categoryKey] = { id: index, value: value, toString: function () { return valueString; } };\n return datum;\n });\n };\n ChartProxy.prototype.destroy = function () {\n this.destroyChart();\n };\n ChartProxy.prototype.destroyChart = function () {\n var parentElement = this.chartProxyParams.parentElement;\n var canvas = parentElement.querySelector('canvas');\n if (canvas) {\n parentElement.removeChild(canvas);\n }\n // store current width and height so any charts created in the future maintain the size\n if (this.chart) {\n this.chartOptions.width = this.chart.width;\n this.chartOptions.height = this.chart.height;\n this.chart.destroy();\n this.chart = null;\n }\n };\n return ChartProxy;\n}());\nexports.ChartProxy = ChartProxy;\n//# sourceMappingURL=chartProxy.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isDate(value) {\n return value instanceof Date;\n}\nexports.isDate = isDate;\n//# sourceMappingURL=typeChecker.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar group_1 = require(\"../../../../../charts/scene/group\");\nvar scene_1 = require(\"../../../../../charts/scene/scene\");\nvar MiniChart = /** @class */ (function (_super) {\n __extends(MiniChart, _super);\n function MiniChart(parent, tooltipName) {\n var _this = _super.call(this) || this;\n _this.size = 58;\n _this.padding = 5;\n _this.root = new group_1.Group();\n var scene = new scene_1.Scene();\n scene.width = _this.size;\n scene.height = _this.size;\n scene.root = _this.root;\n scene.parent = parent;\n _this.scene = scene;\n _this.tooltipName = tooltipName;\n return _this;\n }\n MiniChart.prototype.init = function () {\n this.scene.canvas.element.title = this.chartTranslator.translate(this.tooltipName);\n };\n __decorate([\n core_1.Autowired('chartTranslator')\n ], MiniChart.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], MiniChart.prototype, \"init\", null);\n return MiniChart;\n}(core_1.Component));\nexports.MiniChart = MiniChart;\n//# sourceMappingURL=miniChart.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar miniChartWithAxes_1 = require(\"./miniChartWithAxes\");\nvar rect_1 = require(\"../../../../../charts/scene/shape/rect\");\nvar bandScale_1 = require(\"../../../../../charts/scale/bandScale\");\nvar linearScale_1 = require(\"../../../../../charts/scale/linearScale\");\nvar MiniStackedColumn = /** @class */ (function (_super) {\n __extends(MiniStackedColumn, _super);\n function MiniStackedColumn(parent, fills, strokes, data, yScaleDomain, tooltipName) {\n if (data === void 0) { data = MiniStackedColumn.data; }\n if (yScaleDomain === void 0) { yScaleDomain = [0, 16]; }\n if (tooltipName === void 0) { tooltipName = \"stackedColumnTooltip\"; }\n var _this = _super.call(this, parent, tooltipName) || this;\n var padding = _this.padding;\n var size = _this.size;\n var xScale = new bandScale_1.BandScale();\n xScale.domain = [0, 1, 2];\n xScale.range = [padding, size - padding];\n xScale.paddingInner = 0.3;\n xScale.paddingOuter = 0.3;\n var yScale = linearScale_1.default();\n yScale.domain = yScaleDomain;\n yScale.range = [size - padding, padding];\n var bottom = yScale.convert(0);\n var width = xScale.bandwidth;\n _this.bars = data.map(function (series) {\n return series.map(function (datum, i) {\n var top = yScale.convert(datum);\n var rect = new rect_1.Rect();\n rect.x = xScale.convert(i);\n rect.y = top;\n rect.width = width;\n rect.height = bottom - top;\n rect.strokeWidth = 1;\n rect.crisp = true;\n return rect;\n });\n });\n _this.updateColors(fills, strokes);\n _this.root.append([].concat.apply([], _this.bars));\n return _this;\n }\n MiniStackedColumn.prototype.updateColors = function (fills, strokes) {\n this.bars.forEach(function (series, i) {\n return series.forEach(function (bar) {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n });\n };\n MiniStackedColumn.chartType = core_1.ChartType.StackedColumn;\n MiniStackedColumn.data = [\n [8, 12, 16],\n [6, 9, 12],\n [2, 3, 4]\n ];\n return MiniStackedColumn;\n}(miniChartWithAxes_1.MiniChartWithAxes));\nexports.MiniStackedColumn = MiniStackedColumn;\n//# sourceMappingURL=miniStackedColumn.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar miniChartWithAxes_1 = require(\"./miniChartWithAxes\");\nvar rect_1 = require(\"../../../../../charts/scene/shape/rect\");\nvar linearScale_1 = require(\"../../../../../charts/scale/linearScale\");\nvar bandScale_1 = require(\"../../../../../charts/scale/bandScale\");\nvar MiniStackedBar = /** @class */ (function (_super) {\n __extends(MiniStackedBar, _super);\n function MiniStackedBar(parent, fills, strokes, data, xScaleDomain, tooltipName) {\n if (data === void 0) { data = MiniStackedBar.data; }\n if (xScaleDomain === void 0) { xScaleDomain = [0, 16]; }\n if (tooltipName === void 0) { tooltipName = \"stackedBarTooltip\"; }\n var _this = _super.call(this, parent, tooltipName) || this;\n var size = _this.size;\n var padding = _this.padding;\n var yScale = new bandScale_1.BandScale();\n yScale.domain = [0, 1, 2];\n yScale.range = [padding, size - padding];\n yScale.paddingInner = 0.3;\n yScale.paddingOuter = 0.3;\n var xScale = linearScale_1.default();\n xScale.domain = xScaleDomain;\n xScale.range = [size - padding, padding];\n var bottom = xScale.convert(0);\n var height = yScale.bandwidth;\n _this.bars = data.map(function (series) {\n return series.map(function (datum, i) {\n var rect = new rect_1.Rect();\n rect.x = padding;\n rect.y = yScale.convert(i);\n rect.width = bottom - xScale.convert(datum);\n rect.height = height;\n rect.strokeWidth = 1;\n rect.crisp = true;\n return rect;\n });\n });\n _this.updateColors(fills, strokes);\n _this.root.append([].concat.apply([], _this.bars));\n return _this;\n }\n MiniStackedBar.prototype.updateColors = function (fills, strokes) {\n this.bars.forEach(function (series, i) {\n return series.forEach(function (bar) {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n });\n };\n MiniStackedBar.chartType = core_1.ChartType.StackedBar;\n MiniStackedBar.data = [\n [8, 12, 16],\n [6, 9, 12],\n [2, 3, 4]\n ];\n return MiniStackedBar;\n}(miniChartWithAxes_1.MiniChartWithAxes));\nexports.MiniStackedBar = MiniStackedBar;\n//# sourceMappingURL=miniStackedBar.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar miniChart_1 = require(\"./miniChart\");\nvar sector_1 = require(\"../../../../../charts/scene/shape/sector\");\nvar angle_1 = require(\"../../../../../charts/util/angle\");\nvar MiniDoughnut = /** @class */ (function (_super) {\n __extends(MiniDoughnut, _super);\n function MiniDoughnut(parent, fills, strokes, centerRadiusScaler, tooltipName) {\n if (centerRadiusScaler === void 0) { centerRadiusScaler = 0.6; }\n if (tooltipName === void 0) { tooltipName = \"doughnutTooltip\"; }\n var _this = _super.call(this, parent, tooltipName) || this;\n var radius = (_this.size - _this.padding * 2) / 2;\n var center = radius + _this.padding;\n var angles = [\n [angle_1.toRadians(-90), angle_1.toRadians(30)],\n [angle_1.toRadians(30), angle_1.toRadians(120)],\n [angle_1.toRadians(120), angle_1.toRadians(180)],\n [angle_1.toRadians(180), angle_1.toRadians(210)],\n [angle_1.toRadians(210), angle_1.toRadians(240)],\n [angle_1.toRadians(240), angle_1.toRadians(270)]\n ];\n _this.sectors = angles.map(function (_a) {\n var startAngle = _a[0], endAngle = _a[1];\n var sector = new sector_1.Sector();\n sector.centerX = center;\n sector.centerY = center;\n sector.innerRadius = radius * centerRadiusScaler;\n sector.outerRadius = radius;\n sector.startAngle = startAngle;\n sector.endAngle = endAngle;\n sector.stroke = undefined;\n return sector;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.sectors);\n return _this;\n }\n MiniDoughnut.prototype.updateColors = function (fills, strokes) {\n this.sectors.forEach(function (sector, i) {\n sector.fill = fills[i % fills.length];\n sector.stroke = strokes[i % strokes.length];\n });\n };\n MiniDoughnut.chartType = core_1.ChartType.Doughnut;\n return MiniDoughnut;\n}(miniChart_1.MiniChart));\nexports.MiniDoughnut = MiniDoughnut;\n//# sourceMappingURL=miniDoughnut.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar miniChartWithAxes_1 = require(\"./miniChartWithAxes\");\nvar path_1 = require(\"../../../../../charts/scene/shape/path\");\nvar linearScale_1 = require(\"../../../../../charts/scale/linearScale\");\nvar bandScale_1 = require(\"../../../../../charts/scale/bandScale\");\nvar MiniStackedArea = /** @class */ (function (_super) {\n __extends(MiniStackedArea, _super);\n function MiniStackedArea(parent, fills, strokes, data, tooltipName) {\n if (data === void 0) { data = MiniStackedArea.data; }\n if (tooltipName === void 0) { tooltipName = \"stackedAreaTooltip\"; }\n var _this = _super.call(this, parent, tooltipName) || this;\n var size = _this.size;\n var padding = _this.padding;\n var xScale = new bandScale_1.BandScale();\n xScale.domain = [0, 1, 2];\n xScale.paddingInner = 1;\n xScale.paddingOuter = 0;\n xScale.range = [padding + 0.5, size - padding - 0.5];\n var yScale = linearScale_1.default();\n yScale.domain = [0, 16];\n yScale.range = [size - padding + 0.5, padding + 0.5];\n var xCount = data.length;\n var last = xCount * 2 - 1;\n var pathData = [];\n data.forEach(function (datum, i) {\n var x = xScale.convert(i);\n var total = 0;\n datum.forEach(function (yDatum, j) {\n var y = yScale.convert(total + yDatum);\n var points = pathData[j] || (pathData[j] = []);\n points[i] = {\n x: x,\n y: y\n };\n points[last - i] = {\n x: x,\n y: yScale.convert(total) // bottom y\n };\n total += yDatum;\n });\n });\n _this.areas = pathData.map(function (points) {\n var area = new path_1.Path();\n area.strokeWidth = 1;\n var path = area.path;\n path.clear();\n points.forEach(function (point, i) { return path[i > 0 ? \"lineTo\" : \"moveTo\"](point.x, point.y); });\n path.closePath();\n return area;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.areas);\n return _this;\n }\n MiniStackedArea.prototype.updateColors = function (fills, strokes) {\n this.areas.forEach(function (area, i) {\n area.fill = fills[i];\n area.stroke = strokes[i];\n });\n };\n MiniStackedArea.chartType = core_1.ChartType.StackedArea;\n MiniStackedArea.data = [\n [2, 3, 2],\n [3, 6, 5],\n [6, 2, 2]\n ];\n return MiniStackedArea;\n}(miniChartWithAxes_1.MiniChartWithAxes));\nexports.MiniStackedArea = MiniStackedArea;\n//# sourceMappingURL=miniStackedArea.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar chartProxy_1 = require(\"../chartProxy\");\nvar PolarChartProxy = /** @class */ (function (_super) {\n __extends(PolarChartProxy, _super);\n function PolarChartProxy(params) {\n return _super.call(this, params) || this;\n }\n return PolarChartProxy;\n}(chartProxy_1.ChartProxy));\nexports.PolarChartProxy = PolarChartProxy;\n//# sourceMappingURL=polarChartProxy.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar AbstractSelectionHandle = /** @class */ (function (_super) {\n __extends(AbstractSelectionHandle, _super);\n function AbstractSelectionHandle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.changedCell = false;\n _this.dragging = false;\n _this.shouldDestroyOnEndDragging = false;\n return _this;\n }\n AbstractSelectionHandle.prototype.init = function () {\n var _this = this;\n this.dragService.addDragSource({\n dragStartPixels: 0,\n eElement: this.getGui(),\n onDragStart: this.onDragStart.bind(this),\n onDragging: function (e) {\n _this.dragging = true;\n _this.rangeController.autoScrollService.check(e);\n if (_this.changedCell) {\n _this.onDrag(e);\n }\n },\n onDragStop: function (e) {\n _this.dragging = false;\n _this.onDragEnd(e);\n _this.clearValues();\n _this.rangeController.autoScrollService.ensureCleared();\n core_1._.removeCssClass(document.body, \"ag-dragging-\" + _this.type + \"-handle\");\n if (_this.shouldDestroyOnEndDragging) {\n _this.destroy();\n }\n }\n });\n this.addDestroyableEventListener(this.getGui(), 'mousedown', this.preventRangeExtension.bind(this));\n };\n AbstractSelectionHandle.prototype.isDragging = function () {\n return this.dragging;\n };\n AbstractSelectionHandle.prototype.getCellComp = function () {\n return this.cellComp;\n };\n AbstractSelectionHandle.prototype.setCellComp = function (cellComp) {\n this.cellComp = cellComp;\n };\n AbstractSelectionHandle.prototype.getCellRange = function () {\n return this.cellRange;\n };\n AbstractSelectionHandle.prototype.setCellRange = function (range) {\n this.cellRange = range;\n };\n AbstractSelectionHandle.prototype.getRangeStartRow = function () {\n return this.rangeStartRow;\n };\n AbstractSelectionHandle.prototype.setRangeStartRow = function (row) {\n this.rangeStartRow = row;\n };\n AbstractSelectionHandle.prototype.getRangeEndRow = function () {\n return this.rangeEndRow;\n };\n AbstractSelectionHandle.prototype.setRangeEndRow = function (row) {\n this.rangeEndRow = row;\n };\n AbstractSelectionHandle.prototype.getLastCellHovered = function () {\n return this.lastCellHovered;\n };\n AbstractSelectionHandle.prototype.preventRangeExtension = function (e) {\n e.preventDefault();\n e.stopPropagation();\n };\n AbstractSelectionHandle.prototype.onDragStart = function (e) {\n this.cellHoverListener = this.addDestroyableEventListener(this.rowRenderer.getGridCore().getRootGui(), 'mousemove', this.updateLastCellPositionHovered.bind(this));\n core_1._.addCssClass(document.body, \"ag-dragging-\" + this.type + \"-handle\");\n };\n AbstractSelectionHandle.prototype.updateLastCellPositionHovered = function (e) {\n var cell = this.mouseEventService.getCellPositionForEvent(e);\n if (cell === this.lastCellHovered) {\n this.changedCell = false;\n return;\n }\n this.lastCellHovered = cell;\n this.changedCell = true;\n };\n AbstractSelectionHandle.prototype.getType = function () {\n return this.type;\n };\n AbstractSelectionHandle.prototype.refresh = function (cellComp) {\n var _this = this;\n var oldCellComp = this.getCellComp();\n var eGui = this.getGui();\n var cellRange = core_1._.last(this.rangeController.getCellRanges());\n var start = cellRange.startRow;\n var end = cellRange.endRow;\n if (start && end) {\n var isBefore = this.rowPositionUtils.before(end, start);\n if (isBefore) {\n this.setRangeStartRow(end);\n this.setRangeEndRow(start);\n }\n else {\n this.setRangeStartRow(start);\n this.setRangeEndRow(end);\n }\n }\n if (oldCellComp !== cellComp || !core_1._.isVisible(eGui)) {\n this.setCellComp(cellComp);\n window.setTimeout(function () {\n if (_this.isAlive()) {\n cellComp.appendChild(eGui);\n }\n }, 1);\n }\n this.setCellRange(cellRange);\n };\n AbstractSelectionHandle.prototype.clearValues = function () {\n this.lastCellHovered = undefined;\n this.removeListeners();\n };\n AbstractSelectionHandle.prototype.removeListeners = function () {\n if (this.cellHoverListener) {\n this.cellHoverListener();\n this.cellHoverListener = undefined;\n }\n };\n AbstractSelectionHandle.prototype.destroy = function () {\n if (!this.shouldDestroyOnEndDragging && this.isDragging()) {\n core_1._.setDisplayed(this.getGui(), false);\n this.shouldDestroyOnEndDragging = true;\n return;\n }\n this.shouldDestroyOnEndDragging = false;\n _super.prototype.destroy.call(this);\n this.removeListeners();\n var eGui = this.getGui();\n if (eGui.parentElement) {\n eGui.parentElement.removeChild(eGui);\n }\n };\n __decorate([\n core_1.Autowired(\"rowRenderer\")\n ], AbstractSelectionHandle.prototype, \"rowRenderer\", void 0);\n __decorate([\n core_1.Autowired(\"dragService\")\n ], AbstractSelectionHandle.prototype, \"dragService\", void 0);\n __decorate([\n core_1.Autowired(\"rangeController\")\n ], AbstractSelectionHandle.prototype, \"rangeController\", void 0);\n __decorate([\n core_1.Autowired(\"mouseEventService\")\n ], AbstractSelectionHandle.prototype, \"mouseEventService\", void 0);\n __decorate([\n core_1.Autowired(\"columnController\")\n ], AbstractSelectionHandle.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired(\"cellNavigationService\")\n ], AbstractSelectionHandle.prototype, \"cellNavigationService\", void 0);\n __decorate([\n core_1.Autowired('rowPositionUtils')\n ], AbstractSelectionHandle.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n core_1.PostConstruct\n ], AbstractSelectionHandle.prototype, \"init\", null);\n return AbstractSelectionHandle;\n}(core_1.Component));\nexports.AbstractSelectionHandle = AbstractSelectionHandle;\n//# sourceMappingURL=abstractSelectionHandle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar masterDetailModule_1 = require(\"./masterDetailModule\");\nexports.MasterDetailModule = masterDetailModule_1.MasterDetailModule;\n//# sourceMappingURL=main.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar menuModule_1 = require(\"./menuModule\");\nexports.MenuModule = menuModule_1.MenuModule;\n//# sourceMappingURL=main.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar menuItemComponent_1 = require(\"./menuItemComponent\");\nvar MenuList = /** @class */ (function (_super) {\n __extends(MenuList, _super);\n function MenuList() {\n var _this = _super.call(this, MenuList.TEMPLATE) || this;\n _this.timerCount = 0;\n _this.removeChildFuncs = [];\n return _this;\n }\n MenuList.prototype.clearActiveItem = function () {\n this.removeActiveItem();\n this.removeChildPopup();\n };\n MenuList.prototype.addMenuItems = function (menuItems) {\n var _this = this;\n if (!menuItems || core_1._.missing(menuItems)) {\n return;\n }\n menuItems.forEach(function (menuItemOrString) {\n if (menuItemOrString === 'separator') {\n _this.addSeparator();\n }\n else if (typeof menuItemOrString === 'string') {\n console.warn(\"ag-Grid: unrecognised menu item \" + menuItemOrString);\n }\n else {\n var menuItem = menuItemOrString;\n _this.addItem(menuItem);\n }\n });\n };\n MenuList.prototype.addItem = function (menuItemDef) {\n var _this = this;\n var cMenuItem = new menuItemComponent_1.MenuItemComponent(menuItemDef);\n this.getContext().wireBean(cMenuItem);\n this.getGui().appendChild(cMenuItem.getGui());\n this.addDestroyFunc(function () { return cMenuItem.destroy(); });\n cMenuItem.addEventListener(menuItemComponent_1.MenuItemComponent.EVENT_ITEM_SELECTED, function (event) {\n if (menuItemDef.subMenu && !menuItemDef.action) {\n _this.showChildMenu(menuItemDef, cMenuItem, event.mouseEvent);\n }\n else {\n _this.dispatchEvent(event);\n }\n });\n cMenuItem.addGuiEventListener('mouseenter', this.mouseEnterItem.bind(this, menuItemDef, cMenuItem));\n cMenuItem.addGuiEventListener('mouseleave', this.mouseLeaveItem.bind(this));\n };\n MenuList.prototype.mouseEnterItem = function (menuItemParams, menuItem) {\n if (menuItemParams.disabled) {\n return;\n }\n if (this.activeMenuItemParams !== menuItemParams) {\n this.removeChildPopup();\n }\n this.removeActiveItem();\n this.activeMenuItemParams = menuItemParams;\n this.activeMenuItem = menuItem;\n core_1._.addCssClass(this.activeMenuItem.getGui(), 'ag-menu-option-active');\n if (menuItemParams.subMenu) {\n this.addHoverForChildPopup(menuItemParams, menuItem);\n }\n };\n MenuList.prototype.mouseLeaveItem = function () {\n this.timerCount++;\n this.removeActiveItem();\n };\n MenuList.prototype.removeActiveItem = function () {\n if (this.activeMenuItem) {\n core_1._.removeCssClass(this.activeMenuItem.getGui(), 'ag-menu-option-active');\n this.activeMenuItem = null;\n this.activeMenuItemParams = null;\n }\n };\n MenuList.prototype.addHoverForChildPopup = function (menuItemDef, menuItemComp) {\n var _this = this;\n var timerCountCopy = this.timerCount;\n window.setTimeout(function () {\n var shouldShow = timerCountCopy === _this.timerCount;\n var showingThisMenu = _this.subMenuParentDef === menuItemDef;\n if (shouldShow && !showingThisMenu) {\n _this.showChildMenu(menuItemDef, menuItemComp, null);\n }\n }, 300);\n };\n MenuList.prototype.addSeparator = function () {\n this.getGui().appendChild(core_1._.loadTemplate(MenuList.SEPARATOR_TEMPLATE));\n };\n MenuList.prototype.showChildMenu = function (menuItemDef, menuItemComp, mouseEvent) {\n var _this = this;\n this.removeChildPopup();\n var childMenu = new MenuList();\n this.getContext().wireBean(childMenu);\n childMenu.addMenuItems(menuItemDef.subMenu);\n var ePopup = core_1._.loadTemplate('
');\n ePopup.appendChild(childMenu.getGui());\n var hidePopupFunc = this.popupService.addAsModalPopup(ePopup, true, undefined, mouseEvent);\n this.popupService.positionPopupForMenu({\n eventSource: menuItemComp.getGui(),\n ePopup: ePopup\n });\n this.subMenuParentDef = menuItemDef;\n var selectedListener = function (event) {\n _this.dispatchEvent(event);\n };\n childMenu.addEventListener(menuItemComponent_1.MenuItemComponent.EVENT_ITEM_SELECTED, selectedListener);\n this.removeChildFuncs.push(function () {\n childMenu.clearActiveItem();\n childMenu.destroy();\n _this.subMenuParentDef = null;\n childMenu.removeEventListener(menuItemComponent_1.MenuItemComponent.EVENT_ITEM_SELECTED, selectedListener);\n hidePopupFunc();\n });\n };\n MenuList.prototype.removeChildPopup = function () {\n this.removeChildFuncs.forEach(function (func) { return func(); });\n this.removeChildFuncs = [];\n };\n MenuList.prototype.destroy = function () {\n this.removeChildPopup();\n _super.prototype.destroy.call(this);\n };\n MenuList.TEMPLATE = '
';\n MenuList.SEPARATOR_TEMPLATE = \"
\\n \\n \\n \\n \\n
\";\n __decorate([\n core_1.Autowired('popupService')\n ], MenuList.prototype, \"popupService\", void 0);\n return MenuList;\n}(core_1.Component));\nexports.MenuList = MenuList;\n//# sourceMappingURL=menuList.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar richSelectModule_1 = require(\"./richSelectModule\");\nexports.RichSelectModule = richSelectModule_1.RichSelectModule;\n//# sourceMappingURL=main.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar serverSideRowModelModule_1 = require(\"./serverSideRowModelModule\");\nexports.ServerSideRowModelModule = serverSideRowModelModule_1.ServerSideRowModelModule;\n//# sourceMappingURL=main.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar ServerSideBlock = /** @class */ (function (_super) {\n __extends(ServerSideBlock, _super);\n function ServerSideBlock(pageNumber, parentRowNode, params, parentCache) {\n var _this = _super.call(this, pageNumber, params) || this;\n _this.params = params;\n _this.parentRowNode = parentRowNode;\n _this.parentCache = parentCache;\n _this.level = parentRowNode.level + 1;\n _this.groupLevel = params.rowGroupCols ? _this.level < params.rowGroupCols.length : undefined;\n _this.leafGroup = params.rowGroupCols ? _this.level === params.rowGroupCols.length - 1 : false;\n return _this;\n }\n ServerSideBlock.prototype.init = function () {\n this.usingTreeData = this.gridOptionsWrapper.isTreeData();\n this.usingMasterDetail = this.gridOptionsWrapper.isMasterDetail();\n if (!this.usingTreeData && this.groupLevel) {\n var groupColVo = this.params.rowGroupCols[this.level];\n this.groupField = groupColVo.field;\n this.rowGroupColumn = this.columnController.getRowGroupColumns()[this.level];\n }\n this.createNodeIdPrefix();\n _super.prototype.init.call(this, {\n context: this.getContext(),\n rowRenderer: this.rowRenderer\n });\n };\n ServerSideBlock.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ServerSideBlock');\n };\n ServerSideBlock.prototype.createNodeIdPrefix = function () {\n var parts = [];\n var rowNode = this.parentRowNode;\n // pull keys from all parent nodes, but do not include the root node\n while (rowNode && rowNode.level >= 0) {\n parts.push(rowNode.key);\n rowNode = rowNode.parent;\n }\n if (parts.length > 0) {\n this.nodeIdPrefix = parts.reverse().join('-') + '-';\n }\n };\n ServerSideBlock.prototype.createIdForIndex = function (index) {\n if (core_1._.exists(this.nodeIdPrefix)) {\n return this.nodeIdPrefix + index.toString();\n }\n else {\n return index.toString();\n }\n };\n ServerSideBlock.prototype.getNodeIdPrefix = function () {\n return this.nodeIdPrefix;\n };\n ServerSideBlock.prototype.getRow = function (displayRowIndex) {\n var bottomPointer = this.getStartRow();\n // the end row depends on whether all this block is used or not. if the virtual row count\n // is before the end, then not all the row is used\n var virtualRowCount = this.parentCache.getVirtualRowCount();\n var endRow = this.getEndRow();\n var actualEnd = (virtualRowCount < endRow) ? virtualRowCount : endRow;\n var topPointer = actualEnd - 1;\n if (core_1._.missing(topPointer) || core_1._.missing(bottomPointer)) {\n console.warn(\"ag-grid: error: topPointer = \" + topPointer + \", bottomPointer = \" + bottomPointer);\n return null;\n }\n while (true) {\n var midPointer = Math.floor((bottomPointer + topPointer) / 2);\n var currentRowNode = _super.prototype.getRowUsingLocalIndex.call(this, midPointer);\n // first check current row for index\n if (currentRowNode.rowIndex === displayRowIndex) {\n return currentRowNode;\n }\n // then check if current row contains a detail row with the index\n var expandedMasterRow = currentRowNode.master && currentRowNode.expanded;\n if (expandedMasterRow && currentRowNode.detailNode.rowIndex === displayRowIndex) {\n return currentRowNode.detailNode;\n }\n // then check if child cache contains index\n var childrenCache = currentRowNode.childrenCache;\n if (currentRowNode.expanded && childrenCache && childrenCache.isDisplayIndexInCache(displayRowIndex)) {\n return childrenCache.getRow(displayRowIndex);\n }\n // otherwise adjust pointers to continue searching for index\n if (currentRowNode.rowIndex < displayRowIndex) {\n bottomPointer = midPointer + 1;\n }\n else if (currentRowNode.rowIndex > displayRowIndex) {\n topPointer = midPointer - 1;\n }\n else {\n console.warn(\"ag-Grid: error: unable to locate rowIndex = \" + displayRowIndex + \" in cache\");\n return null;\n }\n }\n };\n ServerSideBlock.prototype.setDataAndId = function (rowNode, data, index) {\n var _this = this;\n rowNode.stub = false;\n if (core_1._.exists(data)) {\n // if the user is not providing id's, then we build an id based on the index.\n // for infinite scrolling, the index is used on it's own. for Server Side Row Model,\n // we combine the index with the level and group key, so that the id is\n // unique across the set.\n //\n // unique id is needed for selection (so selection can be maintained when\n // doing server side sorting / filtering) - if user is not providing id's\n // (and we use the indexes) then selection will not work between sorting &\n // filtering.\n //\n // id's are also used by the row renderer for updating the dom as it identifies\n // rowNodes by id\n var idToUse = this.createIdForIndex(index);\n rowNode.setDataAndId(data, idToUse);\n rowNode.setRowHeight(this.gridOptionsWrapper.getRowHeightForNode(rowNode).height);\n if (this.usingTreeData) {\n var getServerSideGroupKey = this.gridOptionsWrapper.getServerSideGroupKeyFunc();\n if (core_1._.exists(getServerSideGroupKey) && getServerSideGroupKey) {\n rowNode.key = getServerSideGroupKey(rowNode.data);\n }\n var isServerSideGroup = this.gridOptionsWrapper.getIsServerSideGroupFunc();\n if (core_1._.exists(isServerSideGroup) && isServerSideGroup) {\n rowNode.group = isServerSideGroup(rowNode.data);\n }\n }\n else if (rowNode.group) {\n rowNode.key = this.valueService.getValue(this.rowGroupColumn, rowNode);\n if (rowNode.key === null || rowNode.key === undefined) {\n core_1._.doOnce(function () {\n console.warn(\"null and undefined values are not allowed for server side row model keys\");\n if (_this.rowGroupColumn) {\n console.warn(\"column = \" + _this.rowGroupColumn.getId());\n }\n console.warn(\"data is \", rowNode.data);\n }, 'ServerSideBlock-CannotHaveNullOrUndefinedForKey');\n }\n }\n else if (this.usingMasterDetail) {\n var isRowMasterFunc = this.gridOptionsWrapper.getIsRowMasterFunc();\n if (core_1._.exists(isRowMasterFunc) && isRowMasterFunc) {\n rowNode.master = isRowMasterFunc(rowNode.data);\n }\n else {\n rowNode.master = true;\n }\n }\n }\n else {\n rowNode.setDataAndId(undefined, undefined);\n rowNode.key = null;\n }\n if (this.usingTreeData || this.groupLevel) {\n this.setGroupDataIntoRowNode(rowNode);\n this.setChildCountIntoRowNode(rowNode);\n }\n };\n ServerSideBlock.prototype.setChildCountIntoRowNode = function (rowNode) {\n var getChildCount = this.gridOptionsWrapper.getChildCountFunc();\n if (getChildCount) {\n rowNode.allChildrenCount = getChildCount(rowNode.data);\n }\n };\n ServerSideBlock.prototype.setGroupDataIntoRowNode = function (rowNode) {\n var _this = this;\n var groupDisplayCols = this.columnController.getGroupDisplayColumns();\n var usingTreeData = this.gridOptionsWrapper.isTreeData();\n groupDisplayCols.forEach(function (col) {\n if (usingTreeData) {\n if (core_1._.missing(rowNode.groupData)) {\n rowNode.groupData = {};\n }\n rowNode.groupData[col.getColId()] = rowNode.key;\n }\n else if (col.isRowGroupDisplayed(_this.rowGroupColumn.getId())) {\n var groupValue = _this.valueService.getValue(_this.rowGroupColumn, rowNode);\n if (core_1._.missing(rowNode.groupData)) {\n rowNode.groupData = {};\n }\n rowNode.groupData[col.getColId()] = groupValue;\n }\n });\n };\n ServerSideBlock.prototype.loadFromDatasource = function () {\n var _this = this;\n var params = this.createLoadParams();\n window.setTimeout(function () {\n if (_this.params.datasource) {\n _this.params.datasource.getRows(params);\n }\n }, 0);\n };\n ServerSideBlock.prototype.createBlankRowNode = function (rowIndex) {\n var rowNode = _super.prototype.createBlankRowNode.call(this, rowIndex);\n rowNode.group = this.groupLevel;\n rowNode.leafGroup = this.leafGroup;\n rowNode.level = this.level;\n rowNode.uiLevel = this.level;\n rowNode.parent = this.parentRowNode;\n // stub gets set to true here, and then false when this rowNode gets it's data\n rowNode.stub = true;\n if (rowNode.group) {\n rowNode.expanded = false;\n rowNode.field = this.groupField;\n rowNode.rowGroupColumn = this.rowGroupColumn;\n }\n return rowNode;\n };\n ServerSideBlock.prototype.createGroupKeys = function (groupNode) {\n var keys = [];\n var pointer = groupNode;\n while (pointer && pointer.level >= 0) {\n keys.push(pointer.key);\n pointer = pointer.parent;\n }\n keys.reverse();\n return keys;\n };\n ServerSideBlock.prototype.isPixelInRange = function (pixel) {\n return pixel >= this.blockTop && pixel < (this.blockTop + this.blockHeight);\n };\n ServerSideBlock.prototype.getRowBounds = function (index, virtualRowCount) {\n var start = this.getStartRow();\n var end = this.getEndRow();\n var extractRowBounds = function (rowNode) {\n return {\n rowHeight: rowNode.rowHeight,\n rowTop: rowNode.rowTop\n };\n };\n for (var i = start; i <= end; i++) {\n // the blocks can have extra rows in them, if they are the last block\n // in the cache and the virtual row count doesn't divide evenly by the\n if (i >= virtualRowCount) {\n continue;\n }\n var rowNode = this.getRowUsingLocalIndex(i);\n if (rowNode) {\n if (rowNode.rowIndex === index) {\n return extractRowBounds(rowNode);\n }\n if (rowNode.group && rowNode.expanded && core_1._.exists(rowNode.childrenCache)) {\n var serverSideCache = rowNode.childrenCache;\n if (serverSideCache.isDisplayIndexInCache(index)) {\n return serverSideCache.getRowBounds(index);\n }\n }\n else if (rowNode.master && rowNode.expanded && core_1._.exists(rowNode.detailNode)) {\n if (rowNode.detailNode.rowIndex === index) {\n return extractRowBounds(rowNode.detailNode);\n }\n }\n }\n }\n console.error(\" ag-Grid: looking for invalid row index in Server Side Row Model, index=\" + index);\n return null;\n };\n ServerSideBlock.prototype.getRowIndexAtPixel = function (pixel, virtualRowCount) {\n var start = this.getStartRow();\n var end = this.getEndRow();\n for (var i = start; i <= end; i++) {\n // the blocks can have extra rows in them, if they are the last block\n // in the cache and the virtual row count doesn't divide evenly by the\n if (i >= virtualRowCount) {\n continue;\n }\n var rowNode = this.getRowUsingLocalIndex(i);\n if (rowNode) {\n // first check if pixel is in range of current row\n if (rowNode.isPixelInRange(pixel)) {\n return rowNode.rowIndex;\n }\n // then check if current row contains a detail row with pixel in range\n var expandedMasterRow = rowNode.master && rowNode.expanded;\n if (expandedMasterRow && rowNode.detailNode.isPixelInRange(pixel)) {\n return rowNode.detailNode.rowIndex;\n }\n // then check if it's a group row with a child cache with pixel in range\n if (rowNode.group && rowNode.expanded && core_1._.exists(rowNode.childrenCache)) {\n var serverSideCache = rowNode.childrenCache;\n if (serverSideCache.isPixelInRange(pixel)) {\n return serverSideCache.getRowIndexAtPixel(pixel);\n }\n }\n }\n }\n console.warn(\"ag-Grid: invalid pixel range for server side block \" + pixel);\n return 0;\n };\n ServerSideBlock.prototype.clearRowTops = function (virtualRowCount) {\n this.forEachRowNode(virtualRowCount, function (rowNode) {\n rowNode.clearRowTop();\n var hasChildCache = rowNode.group && core_1._.exists(rowNode.childrenCache);\n if (hasChildCache) {\n var serverSideCache = rowNode.childrenCache;\n serverSideCache.clearRowTops();\n }\n });\n };\n ServerSideBlock.prototype.setDisplayIndexes = function (displayIndexSeq, virtualRowCount, nextRowTop) {\n this.displayIndexStart = displayIndexSeq.peek();\n this.blockTop = nextRowTop.value;\n this.forEachRowNode(virtualRowCount, function (rowNode) {\n rowNode.setRowIndex(displayIndexSeq.next());\n rowNode.setRowTop(nextRowTop.value);\n nextRowTop.value += rowNode.rowHeight;\n var hasDetailRow = rowNode.master && rowNode.expanded;\n if (hasDetailRow) {\n rowNode.detailNode.setRowIndex(displayIndexSeq.next());\n rowNode.detailNode.setRowTop(nextRowTop.value);\n nextRowTop.value += rowNode.detailNode.rowHeight;\n }\n var hasChildCache = rowNode.group && core_1._.exists(rowNode.childrenCache);\n if (hasChildCache) {\n var serverSideCache = rowNode.childrenCache;\n if (rowNode.expanded) {\n serverSideCache.setDisplayIndexes(displayIndexSeq, nextRowTop);\n }\n else {\n // we need to clear the row tops, as the row renderer depends on\n // this to know if the row should be faded out\n serverSideCache.clearRowTops();\n }\n }\n });\n this.displayIndexEnd = displayIndexSeq.peek();\n this.blockHeight = nextRowTop.value - this.blockTop;\n };\n ServerSideBlock.prototype.forEachRowNode = function (virtualRowCount, callback) {\n var start = this.getStartRow();\n var end = this.getEndRow();\n for (var i = start; i <= end; i++) {\n // the blocks can have extra rows in them, if they are the last block\n // in the cache and the virtual row count doesn't divide evenly by the\n if (i >= virtualRowCount) {\n continue;\n }\n var rowNode = this.getRowUsingLocalIndex(i);\n if (rowNode) {\n callback(rowNode);\n }\n }\n };\n ServerSideBlock.prototype.createLoadParams = function () {\n var groupKeys = this.createGroupKeys(this.parentRowNode);\n var request = {\n startRow: this.getStartRow(),\n endRow: this.getEndRow(),\n rowGroupCols: this.params.rowGroupCols,\n valueCols: this.params.valueCols,\n pivotCols: this.params.pivotCols,\n pivotMode: this.params.pivotMode,\n groupKeys: groupKeys,\n filterModel: this.params.filterModel,\n sortModel: this.params.sortModel\n };\n var params = {\n successCallback: this.pageLoaded.bind(this, this.getVersion()),\n failCallback: this.pageLoadFailed.bind(this),\n request: request,\n parentNode: this.parentRowNode\n };\n return params;\n };\n ServerSideBlock.prototype.isDisplayIndexInBlock = function (displayIndex) {\n return displayIndex >= this.displayIndexStart && displayIndex < this.displayIndexEnd;\n };\n ServerSideBlock.prototype.isBlockBefore = function (displayIndex) {\n return displayIndex >= this.displayIndexEnd;\n };\n ServerSideBlock.prototype.getDisplayIndexStart = function () {\n return this.displayIndexStart;\n };\n ServerSideBlock.prototype.getDisplayIndexEnd = function () {\n return this.displayIndexEnd;\n };\n ServerSideBlock.prototype.getBlockHeight = function () {\n return this.blockHeight;\n };\n ServerSideBlock.prototype.getBlockTop = function () {\n return this.blockTop;\n };\n ServerSideBlock.prototype.isGroupLevel = function () {\n return this.groupLevel;\n };\n ServerSideBlock.prototype.getGroupField = function () {\n return this.groupField;\n };\n ServerSideBlock.DefaultBlockSize = 100;\n __decorate([\n core_1.Autowired('rowRenderer')\n ], ServerSideBlock.prototype, \"rowRenderer\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], ServerSideBlock.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('valueService')\n ], ServerSideBlock.prototype, \"valueService\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], ServerSideBlock.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ServerSideBlock.prototype, \"init\", null);\n __decorate([\n __param(0, core_1.Qualifier('loggerFactory'))\n ], ServerSideBlock.prototype, \"setBeans\", null);\n return ServerSideBlock;\n}(core_1.RowNodeBlock));\nexports.ServerSideBlock = ServerSideBlock;\n//# sourceMappingURL=serverSideBlock.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar setFilterModule_1 = require(\"./setFilterModule\");\nexports.SetFilterModule = setFilterModule_1.SetFilterModule;\n//# sourceMappingURL=main.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar statusBarModule_1 = require(\"./statusBarModule\");\nexports.StatusBarModule = statusBarModule_1.StatusBarModule;\n//# sourceMappingURL=main.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar viewportRowModelModule_1 = require(\"./viewportRowModelModule\");\nexports.ViewportRowModelModule = viewportRowModelModule_1.ViewportRowModelModule;\n//# sourceMappingURL=main.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar axis_1 = require(\"../axis\");\nvar ChartAxisDirection;\n(function (ChartAxisDirection) {\n ChartAxisDirection[\"X\"] = \"x\";\n ChartAxisDirection[\"Y\"] = \"y\"; // means 'radius' in polar charts\n})(ChartAxisDirection = exports.ChartAxisDirection || (exports.ChartAxisDirection = {}));\nfunction flipChartAxisDirection(direction) {\n if (direction === ChartAxisDirection.X) {\n return ChartAxisDirection.Y;\n }\n else {\n return ChartAxisDirection.X;\n }\n}\nexports.flipChartAxisDirection = flipChartAxisDirection;\nvar ChartAxisPosition;\n(function (ChartAxisPosition) {\n ChartAxisPosition[\"Top\"] = \"top\";\n ChartAxisPosition[\"Right\"] = \"right\";\n ChartAxisPosition[\"Bottom\"] = \"bottom\";\n ChartAxisPosition[\"Left\"] = \"left\";\n ChartAxisPosition[\"Angle\"] = \"angle\";\n ChartAxisPosition[\"Radius\"] = \"radius\";\n})(ChartAxisPosition = exports.ChartAxisPosition || (exports.ChartAxisPosition = {}));\nvar ChartAxis = /** @class */ (function (_super) {\n __extends(ChartAxis, _super);\n function ChartAxis() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.keys = [];\n _this.boundSeries = [];\n _this.thickness = 0;\n return _this;\n }\n Object.defineProperty(ChartAxis.prototype, \"position\", {\n get: function () {\n return this._position;\n },\n set: function (value) {\n if (this._position !== value) {\n this._position = value;\n switch (value) {\n case ChartAxisPosition.Top:\n this.direction = ChartAxisDirection.X;\n this.rotation = -90;\n this.label.mirrored = true;\n this.label.parallel = true;\n break;\n case ChartAxisPosition.Right:\n this.direction = ChartAxisDirection.Y;\n this.rotation = 0;\n this.label.mirrored = true;\n this.label.parallel = false;\n break;\n case ChartAxisPosition.Bottom:\n this.direction = ChartAxisDirection.X;\n this.rotation = -90;\n this.label.mirrored = false;\n this.label.parallel = true;\n break;\n case ChartAxisPosition.Left:\n this.direction = ChartAxisDirection.Y;\n this.rotation = 0;\n this.label.mirrored = false;\n this.label.parallel = false;\n break;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n return ChartAxis;\n}(axis_1.Axis));\nexports.ChartAxis = ChartAxis;\n//# sourceMappingURL=chartAxis.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar agGridEnterpriseModule_1 = require(\"./agGridEnterpriseModule\");\nexports.EnterpriseCoreModule = agGridEnterpriseModule_1.EnterpriseCoreModule;\nvar licenseManager_1 = require(\"./licenseManager\");\nexports.LicenseManager = licenseManager_1.LicenseManager;\n//# sourceMappingURL=main.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar licenseManager_1 = require(\"./licenseManager\");\nvar md5_1 = require(\"./license/md5\");\nvar watermark_1 = require(\"./license/watermark\");\nvar licenseManager_2 = require(\"./licenseManager\");\nexports.LicenseManager = licenseManager_2.LicenseManager;\nvar md5_2 = require(\"./license/md5\");\nexports.MD5 = md5_2.MD5;\nvar watermark_2 = require(\"./license/watermark\");\nexports.WatermarkComp = watermark_2.WatermarkComp;\nexports.EnterpriseCoreModule = {\n moduleName: core_1.ModuleNames.EnterpriseCoreModule,\n beans: [licenseManager_1.LicenseManager, md5_1.MD5],\n agStackComponents: [\n { componentName: 'AgWatermark', componentClass: watermark_1.WatermarkComp }\n ]\n};\n//# sourceMappingURL=agGridEnterpriseModule.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar core_2 = require(\"@ag-grid-enterprise/core\");\nvar clipboardService_1 = require(\"./clipboard/clipboardService\");\nexports.ClipboardModule = {\n moduleName: core_1.ModuleNames.ClipboardModule,\n beans: [clipboardService_1.ClipboardService],\n dependantModules: [\n core_2.EnterpriseCoreModule\n ]\n};\n//# sourceMappingURL=clipboardModule.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar ClipboardService = /** @class */ (function () {\n function ClipboardService() {\n }\n ClipboardService.prototype.registerGridCore = function (gridCore) {\n this.gridCore = gridCore;\n };\n ClipboardService.prototype.init = function () {\n this.logger = this.loggerFactory.create('ClipboardService');\n if (this.rowModel.getType() === core_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = this.rowModel;\n }\n };\n ClipboardService.prototype.pasteFromClipboard = function () {\n var _this = this;\n this.logger.log('pasteFromClipboard');\n this.executeOnTempElement(function (textArea) {\n textArea.focus();\n }, function (element) {\n var data = element.value;\n if (core_1._.missingOrEmpty(data)) {\n return;\n }\n var parsedData = _this.dataToArray(data);\n var userFunc = _this.gridOptionsWrapper.getProcessDataFromClipboardFunc();\n if (userFunc) {\n parsedData = userFunc({ data: parsedData });\n }\n if (core_1._.missingOrEmpty(parsedData)) {\n return;\n }\n var pasteOperation = function (cellsToFlash, updatedRowNodes, focusedCell, changedPath) {\n var singleCellInClipboard = parsedData.length == 1 && parsedData[0].length == 1;\n var rangeActive = _this.rangeController && _this.rangeController.isMoreThanOneCell();\n var pasteIntoRange = rangeActive && !singleCellInClipboard;\n if (pasteIntoRange) {\n _this.pasteIntoActiveRange(parsedData, cellsToFlash, updatedRowNodes, changedPath);\n }\n else {\n _this.pasteStartingFromFocusedCell(parsedData, cellsToFlash, updatedRowNodes, focusedCell, changedPath);\n }\n };\n _this.doPasteOperation(pasteOperation);\n });\n };\n // common code to paste operations, eg past to cell, paste to range, and copy range down\n ClipboardService.prototype.doPasteOperation = function (pasteOperationFunc) {\n this.eventService.dispatchEvent({\n type: core_1.Events.EVENT_PASTE_START,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n source: 'clipboard'\n });\n var changedPath;\n if (this.clientSideRowModel) {\n var onlyChangedColumns = this.gridOptionsWrapper.isAggregateOnlyChangedColumns();\n changedPath = new core_1.ChangedPath(onlyChangedColumns, this.clientSideRowModel.getRootNode());\n }\n var cellsToFlash = {};\n var updatedRowNodes = [];\n var focusedCell = this.focusedCellController.getFocusedCell();\n pasteOperationFunc(cellsToFlash, updatedRowNodes, focusedCell, changedPath);\n if (changedPath) {\n this.clientSideRowModel.doAggregate(changedPath);\n }\n this.rowRenderer.refreshCells();\n this.dispatchFlashCells(cellsToFlash);\n this.fireRowChanged(updatedRowNodes);\n if (focusedCell) {\n this.focusedCellController.setFocusedCell(focusedCell.rowIndex, focusedCell.column, focusedCell.rowPinned, true);\n }\n this.eventService.dispatchEvent({\n type: core_1.Events.EVENT_PASTE_END,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n source: 'clipboard'\n });\n };\n ClipboardService.prototype.pasteIntoActiveRange = function (clipboardData, cellsToFlash, updatedRowNodes, changedPath) {\n var _this = this;\n // true if clipboard data can be evenly pasted into range, otherwise false\n var abortRepeatingPasteIntoRows = this.rangeSize() % clipboardData.length != 0;\n var indexOffset = 0, dataRowIndex = 0;\n var rowCallback = function (currentRow, rowNode, columns, index, isLastRow) {\n var atEndOfClipboardData = index - indexOffset >= clipboardData.length;\n if (atEndOfClipboardData) {\n if (abortRepeatingPasteIntoRows) {\n return;\n }\n // increment offset and reset data index to repeat paste of data\n indexOffset += dataRowIndex;\n dataRowIndex = 0;\n }\n var currentRowData = clipboardData[index - indexOffset];\n // otherwise we are not the first row, so copy\n updatedRowNodes.push(rowNode);\n columns.forEach(function (column, idx) {\n if (!column.isCellEditable(rowNode) || column.isSuppressPaste(rowNode)) {\n return;\n }\n // repeat data for columns we don't have data for - happens when to range is bigger than copied data range\n if (idx >= currentRowData.length) {\n idx = idx % currentRowData.length;\n }\n var newValue = currentRowData[idx];\n var processCellFromClipboardFunc = _this.gridOptionsWrapper.getProcessCellFromClipboardFunc();\n newValue = _this.userProcessCell(rowNode, column, newValue, processCellFromClipboardFunc, core_1.Constants.EXPORT_TYPE_DRAG_COPY);\n _this.valueService.setValue(rowNode, column, newValue, core_1.Constants.SOURCE_PASTE);\n if (changedPath) {\n changedPath.addParentNode(rowNode.parent, [column]);\n }\n var cellId = _this.cellPositionUtils.createIdFromValues(currentRow.rowIndex, column, currentRow.rowPinned);\n cellsToFlash[cellId] = true;\n });\n dataRowIndex++;\n };\n this.iterateActiveRanges(false, rowCallback);\n };\n ClipboardService.prototype.pasteStartingFromFocusedCell = function (parsedData, cellsToFlash, updatedRowNodes, focusedCell, changedPath) {\n if (!focusedCell) {\n return;\n }\n var currentRow = { rowIndex: focusedCell.rowIndex, rowPinned: focusedCell.rowPinned };\n var columnsToPasteInto = this.columnController.getDisplayedColumnsStartingAt(focusedCell.column);\n var onlyOneValueToPaste = parsedData.length === 1 && parsedData[0].length === 1;\n if (onlyOneValueToPaste) {\n this.pasteSingleValue(parsedData, updatedRowNodes, cellsToFlash, changedPath);\n }\n else {\n this.pasteMultipleValues(parsedData, currentRow, updatedRowNodes, columnsToPasteInto, cellsToFlash, core_1.Constants.EXPORT_TYPE_CLIPBOARD, changedPath);\n }\n };\n ClipboardService.prototype.copyRangeDown = function () {\n var _this = this;\n if (!this.rangeController || this.rangeController.isEmpty()) {\n return;\n }\n var firstRowValues = [];\n var pasteOperation = function (cellsToFlash, updatedRowNodes, focusedCell, changedPath) {\n var rowCallback = function (currentRow, rowNode, columns, index, isLastRow) {\n // take reference of first row, this is the one we will be using to copy from\n if (!firstRowValues.length) {\n // two reasons for looping through columns\n columns.forEach(function (column) {\n // get the initial values to copy down\n var value = _this.valueService.getValue(column, rowNode);\n var processCellForClipboardFunc = _this.gridOptionsWrapper.getProcessCellForClipboardFunc();\n value = _this.userProcessCell(rowNode, column, value, processCellForClipboardFunc, core_1.Constants.EXPORT_TYPE_DRAG_COPY);\n firstRowValues.push(value);\n });\n }\n else {\n // otherwise we are not the first row, so copy\n updatedRowNodes.push(rowNode);\n columns.forEach(function (column, index) {\n if (!column.isCellEditable(rowNode)) {\n return;\n }\n var firstRowValue = firstRowValues[index];\n var processCellFromClipboardFunc = _this.gridOptionsWrapper.getProcessCellFromClipboardFunc();\n firstRowValue = _this.userProcessCell(rowNode, column, firstRowValue, processCellFromClipboardFunc, core_1.Constants.EXPORT_TYPE_DRAG_COPY);\n _this.valueService.setValue(rowNode, column, firstRowValue, core_1.Constants.SOURCE_PASTE);\n if (changedPath) {\n changedPath.addParentNode(rowNode.parent, [column]);\n }\n var cellId = _this.cellPositionUtils.createIdFromValues(currentRow.rowIndex, column, currentRow.rowPinned);\n cellsToFlash[cellId] = true;\n });\n }\n };\n _this.iterateActiveRanges(true, rowCallback);\n };\n this.doPasteOperation(pasteOperation);\n };\n ClipboardService.prototype.fireRowChanged = function (rowNodes) {\n var _this = this;\n if (!this.gridOptionsWrapper.isFullRowEdit()) {\n return;\n }\n rowNodes.forEach(function (rowNode) {\n var event = {\n type: core_1.Events.EVENT_ROW_VALUE_CHANGED,\n node: rowNode,\n data: rowNode.data,\n rowIndex: rowNode.rowIndex,\n rowPinned: rowNode.rowPinned,\n context: _this.gridOptionsWrapper.getContext(),\n api: _this.gridOptionsWrapper.getApi(),\n columnApi: _this.gridOptionsWrapper.getColumnApi()\n };\n _this.eventService.dispatchEvent(event);\n });\n };\n ClipboardService.prototype.pasteMultipleValues = function (clipboardGridData, currentRow, updatedRowNodes, columnsToPasteInto, cellsToFlash, type, changedPath) {\n var _this = this;\n clipboardGridData.forEach(function (clipboardRowData) {\n // if we have come to end of rows in grid, then skip\n if (!currentRow) {\n return;\n }\n var rowNode = _this.rowPositionUtils.getRowNode(currentRow);\n if (rowNode) {\n updatedRowNodes.push(rowNode);\n clipboardRowData.forEach(function (value, index) {\n var column = columnsToPasteInto[index];\n _this.updateCellValue(rowNode, column, value, currentRow, cellsToFlash, type, changedPath);\n });\n // move to next row down for next set of values\n currentRow = _this.cellNavigationService.getRowBelow({ rowPinned: currentRow.rowPinned, rowIndex: currentRow.rowIndex });\n }\n });\n return currentRow;\n };\n ClipboardService.prototype.pasteSingleValue = function (parsedData, updatedRowNodes, cellsToFlash, changedPath) {\n var _this = this;\n var value = parsedData[0][0];\n var rowCallback = function (currentRow, rowNode, columns) {\n updatedRowNodes.push(rowNode);\n columns.forEach(function (column) {\n _this.updateCellValue(rowNode, column, value, currentRow, cellsToFlash, core_1.Constants.EXPORT_TYPE_CLIPBOARD, changedPath);\n });\n };\n this.iterateActiveRanges(false, rowCallback);\n };\n ClipboardService.prototype.updateCellValue = function (rowNode, column, value, currentRow, cellsToFlash, type, changedPath) {\n if (!rowNode ||\n !currentRow ||\n !column ||\n !column.isCellEditable ||\n column.isSuppressPaste(rowNode)) {\n return;\n }\n var processedValue = this.userProcessCell(rowNode, column, value, this.gridOptionsWrapper.getProcessCellFromClipboardFunc(), type);\n this.valueService.setValue(rowNode, column, processedValue, core_1.Constants.SOURCE_PASTE);\n var cellId = this.cellPositionUtils.createIdFromValues(currentRow.rowIndex, column, currentRow.rowPinned);\n cellsToFlash[cellId] = true;\n if (changedPath) {\n changedPath.addParentNode(rowNode.parent, [column]);\n }\n };\n ClipboardService.prototype.copyToClipboard = function (includeHeaders) {\n this.logger.log(\"copyToClipboard: includeHeaders = \" + includeHeaders);\n // don't override 'includeHeaders' if it has been explicitly set to 'false'\n if (typeof includeHeaders === 'undefined') {\n includeHeaders = this.gridOptionsWrapper.isCopyHeadersToClipboard();\n }\n var selectedRowsToCopy = !this.selectionController.isEmpty()\n && !this.gridOptionsWrapper.isSuppressCopyRowsToClipboard();\n // default is copy range if exists, otherwise rows\n if (this.rangeController && this.rangeController.isMoreThanOneCell()) {\n this.copySelectedRangeToClipboard(includeHeaders);\n }\n else if (selectedRowsToCopy) {\n // otherwise copy selected rows if they exist\n this.copySelectedRowsToClipboard(includeHeaders);\n }\n else if (this.focusedCellController.isAnyCellFocused()) {\n // if there is a focused cell, copy this\n this.copyFocusedCellToClipboard(includeHeaders);\n }\n else {\n // lastly if no focused cell, try range again. this can happen\n // if use has cellSelection turned off (so no focused cell)\n // but has a cell clicked, so there exists a cell range\n // of exactly one cell (hence the first 'if' above didn't\n // get executed).\n this.copySelectedRangeToClipboard(includeHeaders);\n }\n };\n ClipboardService.prototype.iterateActiveRanges = function (onlyFirst, rowCallback, columnCallback) {\n var _this = this;\n if (!this.rangeController || this.rangeController.isEmpty()) {\n return;\n }\n var cellRanges = this.rangeController.getCellRanges();\n if (onlyFirst) {\n var range = cellRanges[0];\n this.iterateActiveRange(range, rowCallback, columnCallback, true);\n }\n else {\n cellRanges.forEach(function (range, idx) { return _this.iterateActiveRange(range, rowCallback, columnCallback, idx === cellRanges.length - 1); });\n }\n };\n ClipboardService.prototype.iterateActiveRange = function (range, rowCallback, columnCallback, isLastRange) {\n if (!this.rangeController) {\n return;\n }\n var currentRow = this.rangeController.getRangeStartRow(range);\n var lastRow = this.rangeController.getRangeEndRow(range);\n if (columnCallback && core_1._.exists(columnCallback) && range.columns) {\n columnCallback(range.columns);\n }\n var rangeIndex = 0;\n var isLastRow = false;\n // the currentRow could be missing if the user sets the active range manually, and sets a range\n // that is outside of the grid (eg. sets range rows 0 to 100, but grid has only 20 rows).\n while (!isLastRow && !core_1._.missing(currentRow) && currentRow) {\n var rowNode = this.rowPositionUtils.getRowNode(currentRow);\n isLastRow = this.rowPositionUtils.sameRow(currentRow, lastRow);\n rowCallback(currentRow, rowNode, range.columns, rangeIndex++, isLastRow && isLastRange);\n currentRow = this.cellNavigationService.getRowBelow(currentRow);\n }\n };\n ClipboardService.prototype.copySelectedRangeToClipboard = function (includeHeaders) {\n var _this = this;\n if (includeHeaders === void 0) { includeHeaders = false; }\n if (!this.rangeController || this.rangeController.isEmpty()) {\n return;\n }\n var deliminator = this.gridOptionsWrapper.getClipboardDeliminator();\n var data = '';\n var cellsToFlash = {};\n // adds columns to the data\n var columnCallback = function (columns) {\n if (!includeHeaders) {\n return;\n }\n columns.forEach(function (column, index) {\n var value = _this.columnController.getDisplayNameForColumn(column, 'clipboard', true);\n var processedValue = _this.userProcessHeader(column, value, _this.gridOptionsWrapper.getProcessHeaderForClipboardFunc());\n if (index != 0) {\n data += deliminator;\n }\n if (core_1._.exists(processedValue)) {\n data += processedValue;\n }\n });\n data += '\\r\\n';\n };\n // adds cell values to the data\n var rowCallback = function (currentRow, rowNode, columns, index, isLastRow) {\n columns.forEach(function (column, index) {\n var value = _this.valueService.getValue(column, rowNode);\n var processedValue = _this.userProcessCell(rowNode, column, value, _this.gridOptionsWrapper.getProcessCellForClipboardFunc(), core_1.Constants.EXPORT_TYPE_CLIPBOARD);\n if (index != 0) {\n data += deliminator;\n }\n if (core_1._.exists(processedValue)) {\n data += processedValue;\n }\n var cellId = _this.cellPositionUtils.createIdFromValues(currentRow.rowIndex, column, currentRow.rowPinned);\n cellsToFlash[cellId] = true;\n });\n if (!isLastRow) {\n data += '\\r\\n';\n }\n };\n this.iterateActiveRanges(false, rowCallback, columnCallback);\n this.copyDataToClipboard(data);\n this.dispatchFlashCells(cellsToFlash);\n };\n ClipboardService.prototype.copyFocusedCellToClipboard = function (includeHeaders) {\n var _a;\n if (includeHeaders === void 0) { includeHeaders = false; }\n var focusedCell = this.focusedCellController.getFocusedCell();\n if (core_1._.missing(focusedCell)) {\n return;\n }\n var cellId = this.cellPositionUtils.createId(focusedCell);\n var currentRow = { rowPinned: focusedCell.rowPinned, rowIndex: focusedCell.rowIndex };\n var rowNode = this.rowPositionUtils.getRowNode(currentRow);\n var column = focusedCell.column;\n var value = this.valueService.getValue(column, rowNode);\n var processedValue = this.userProcessCell(rowNode, column, value, this.gridOptionsWrapper.getProcessCellForClipboardFunc(), core_1.Constants.EXPORT_TYPE_CLIPBOARD);\n if (core_1._.missing(processedValue)) {\n // copy the new line character to clipboard instead of an empty string, as the 'execCommand' will ignore it.\n // this behaviour is consistent with how Excel works!\n processedValue = '\\t';\n }\n var data = '';\n if (includeHeaders) {\n var headerValue = this.columnController.getDisplayNameForColumn(column, 'clipboard', true);\n data = this.userProcessHeader(column, headerValue, this.gridOptionsWrapper.getProcessHeaderForClipboardFunc());\n data += '\\r\\n';\n }\n data += processedValue.toString();\n this.copyDataToClipboard(data);\n this.dispatchFlashCells((_a = {}, _a[cellId] = true, _a));\n };\n ClipboardService.prototype.dispatchFlashCells = function (cellsToFlash) {\n var _this = this;\n window.setTimeout(function () {\n var event = {\n type: core_1.Events.EVENT_FLASH_CELLS,\n cells: cellsToFlash,\n api: _this.gridApi,\n columnApi: _this.columnApi\n };\n _this.eventService.dispatchEvent(event);\n }, 0);\n };\n ClipboardService.prototype.userProcessCell = function (rowNode, column, value, func, type) {\n if (func) {\n var params = {\n column: column,\n node: rowNode,\n value: value,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n type: type\n };\n return func(params);\n }\n return value;\n };\n ClipboardService.prototype.userProcessHeader = function (column, value, func) {\n if (func) {\n var params = {\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n return func(params);\n }\n return value;\n };\n ClipboardService.prototype.copySelectedRowsToClipboard = function (includeHeaders, columnKeys) {\n if (includeHeaders === void 0) { includeHeaders = false; }\n var skipHeader = !includeHeaders;\n var deliminator = this.gridOptionsWrapper.getClipboardDeliminator();\n var params = {\n columnKeys: columnKeys,\n skipHeader: skipHeader,\n skipFooters: true,\n suppressQuotes: true,\n columnSeparator: deliminator,\n onlySelected: true,\n processCellCallback: this.gridOptionsWrapper.getProcessCellForClipboardFunc(),\n processHeaderCallback: this.gridOptionsWrapper.getProcessHeaderForClipboardFunc()\n };\n var data = this.csvCreator.getDataAsCsv(params);\n this.copyDataToClipboard(data);\n };\n ClipboardService.prototype.copyDataToClipboard = function (data) {\n var userProvidedFunc = this.gridOptionsWrapper.getSendToClipboardFunc();\n if (userProvidedFunc && core_1._.exists(userProvidedFunc)) {\n var params = { data: data };\n userProvidedFunc(params);\n }\n else {\n this.executeOnTempElement(function (element) {\n element.value = data;\n element.select();\n element.focus();\n var result = document.execCommand('copy');\n if (!result) {\n console.warn('ag-grid: Browser did not allow document.execCommand(\\'copy\\'). Ensure ' +\n 'api.copySelectedRowsToClipboard() is invoked via a user event, i.e. button click, otherwise ' +\n 'the browser will prevent it for security reasons.');\n }\n });\n }\n };\n ClipboardService.prototype.executeOnTempElement = function (callbackNow, callbackAfter) {\n var eTempInput = document.createElement('textarea');\n eTempInput.style.width = '1px';\n eTempInput.style.height = '1px';\n eTempInput.style.top = '0px';\n eTempInput.style.left = '0px';\n eTempInput.style.position = 'absolute';\n eTempInput.style.opacity = '0.0';\n var guiRoot = this.gridCore.getRootGui();\n guiRoot.appendChild(eTempInput);\n try {\n callbackNow(eTempInput);\n }\n catch (err) {\n console.warn('ag-grid: Browser does not support document.execCommand(\\'copy\\') for clipboard operations');\n }\n //It needs 100 otherwise OS X seemed to not always be able to paste... Go figure...\n if (callbackAfter) {\n window.setTimeout(function () {\n callbackAfter(eTempInput);\n guiRoot.removeChild(eTempInput);\n }, 100);\n }\n else {\n guiRoot.removeChild(eTempInput);\n }\n };\n // From http://stackoverflow.com/questions/1293147/javascript-code-to-parse-csv-data\n // This will parse a delimited string into an array of arrays.\n // Note: this code fixes an issue with the example posted on stack overflow where it doesn't correctly handle\n // empty values in the first cell.\n ClipboardService.prototype.dataToArray = function (strData) {\n var delimiter = this.gridOptionsWrapper.getClipboardDeliminator();\n // Create a regular expression to parse the CSV values.\n var objPattern = new RegExp((\n // Delimiters.\n '(\\\\' + delimiter + '|\\\\r?\\\\n|\\\\r|^)' +\n // Quoted fields.\n '(?:\"([^\\\"]*(?:\"\"[^\\\"]*)*)\"|' +\n // Standard fields.\n '([^\\\\' + delimiter + '\\\\r\\\\n]*))'), \"gi\");\n // Create an array to hold our data. Give the array\n // a default empty first row.\n var arrData = [[]];\n // Create an array to hold our individual pattern matching groups.\n var arrMatches;\n // Required for handling edge case on first row copy\n var atFirstRow = true;\n // Keep looping over the regular expression matches\n // until we can no longer find a match.\n while (arrMatches = objPattern.exec(strData)) {\n // Get the delimiter that was found.\n var strMatchedDelimiter = arrMatches[1];\n // Handles case when first row is an empty cell, insert an empty string before delimiter\n if ((atFirstRow && strMatchedDelimiter) || !arrMatches.index && arrMatches[0].charAt(0) === delimiter) {\n arrData[0].push('');\n }\n // Check to see if the given delimiter has a length\n // (is not the start of string) and if it matches\n // field delimiter. If id does not, then we know\n // that this delimiter is a row delimiter.\n if (strMatchedDelimiter.length && strMatchedDelimiter !== delimiter) {\n // Since we have reached a new row of data,\n // add an empty row to our data array.\n arrData.push([]);\n }\n var strMatchedValue = void 0;\n // Now that we have our delimiter out of the way,\n // let's check to see which kind of value we\n // captured (quoted or unquoted).\n if (arrMatches[2]) {\n // We found a quoted value. When we capture\n // this value, unescaped any double quotes.\n strMatchedValue = arrMatches[2].replace(new RegExp('\"\"', 'g'), '\"');\n }\n else {\n // We found a non-quoted value.\n strMatchedValue = arrMatches[3];\n }\n // Now that we have our value string, let's add\n // it to the data array.\n var lastItem = core_1._.last(arrData);\n if (lastItem) {\n lastItem.push(strMatchedValue);\n }\n atFirstRow = false;\n }\n // Return the parsed data.\n return arrData;\n };\n ClipboardService.prototype.rangeSize = function () {\n var ranges = this.rangeController.getCellRanges();\n var startRangeIndex;\n var endRangeIndex;\n if (ranges.length > 0) {\n startRangeIndex = 0;\n endRangeIndex = 0;\n }\n else {\n startRangeIndex = this.rangeController.getRangeStartRow(ranges[0]).rowIndex;\n endRangeIndex = this.rangeController.getRangeEndRow(ranges[0]).rowIndex;\n }\n return startRangeIndex - endRangeIndex + 1;\n };\n __decorate([\n core_1.Autowired('csvCreator')\n ], ClipboardService.prototype, \"csvCreator\", void 0);\n __decorate([\n core_1.Autowired('loggerFactory')\n ], ClipboardService.prototype, \"loggerFactory\", void 0);\n __decorate([\n core_1.Autowired('selectionController')\n ], ClipboardService.prototype, \"selectionController\", void 0);\n __decorate([\n core_1.Optional('rangeController')\n ], ClipboardService.prototype, \"rangeController\", void 0);\n __decorate([\n core_1.Autowired('rowModel')\n ], ClipboardService.prototype, \"rowModel\", void 0);\n __decorate([\n core_1.Autowired('valueService')\n ], ClipboardService.prototype, \"valueService\", void 0);\n __decorate([\n core_1.Autowired('focusedCellController')\n ], ClipboardService.prototype, \"focusedCellController\", void 0);\n __decorate([\n core_1.Autowired('rowRenderer')\n ], ClipboardService.prototype, \"rowRenderer\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], ClipboardService.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], ClipboardService.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('cellNavigationService')\n ], ClipboardService.prototype, \"cellNavigationService\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], ClipboardService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('columnApi')\n ], ClipboardService.prototype, \"columnApi\", void 0);\n __decorate([\n core_1.Autowired('gridApi')\n ], ClipboardService.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.Autowired('cellPositionUtils')\n ], ClipboardService.prototype, \"cellPositionUtils\", void 0);\n __decorate([\n core_1.Autowired('rowPositionUtils')\n ], ClipboardService.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ClipboardService.prototype, \"init\", null);\n ClipboardService = __decorate([\n core_1.Bean('clipboardService')\n ], ClipboardService);\n return ClipboardService;\n}());\nexports.ClipboardService = ClipboardService;\n//# sourceMappingURL=clipboardService.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar core_2 = require(\"@ag-grid-enterprise/core\");\nvar primaryColsHeaderPanel_1 = require(\"./columnToolPanel/primaryColsHeaderPanel\");\nvar primaryColsListPanel_1 = require(\"./columnToolPanel/primaryColsListPanel\");\nvar columnToolPanel_1 = require(\"./columnToolPanel/columnToolPanel\");\nvar primaryColsPanel_1 = require(\"./columnToolPanel/primaryColsPanel\");\nvar row_grouping_1 = require(\"@ag-grid-enterprise/row-grouping\");\nvar side_bar_1 = require(\"@ag-grid-enterprise/side-bar\");\nexports.ColumnsToolPanelModule = {\n moduleName: core_1.ModuleNames.ColumnToolPanelModule,\n beans: [],\n agStackComponents: [\n { componentName: 'AgPrimaryColsHeader', componentClass: primaryColsHeaderPanel_1.PrimaryColsHeaderPanel },\n { componentName: 'AgPrimaryColsList', componentClass: primaryColsListPanel_1.PrimaryColsListPanel },\n { componentName: 'AgPrimaryCols', componentClass: primaryColsPanel_1.PrimaryColsPanel }\n ],\n userComponents: [\n { componentName: 'agColumnsToolPanel', componentClass: columnToolPanel_1.ColumnToolPanel },\n ],\n dependantModules: [\n core_2.EnterpriseCoreModule,\n row_grouping_1.RowGroupingModule,\n side_bar_1.SideBarModule\n ]\n};\n//# sourceMappingURL=columnsToolPanelModule.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar toolPanelColumnGroupComp_1 = require(\"./toolPanelColumnGroupComp\");\nvar toolPanelColumnComp_1 = require(\"./toolPanelColumnComp\");\nvar primaryColsHeaderPanel_1 = require(\"./primaryColsHeaderPanel\");\nvar PrimaryColsListPanel = /** @class */ (function (_super) {\n __extends(PrimaryColsListPanel, _super);\n function PrimaryColsListPanel() {\n var _this = _super.call(this, PrimaryColsListPanel.TEMPLATE) || this;\n _this.selectAllChecked = true;\n _this.getColumnCompId = function (columnGroupChild) {\n if (columnGroupChild instanceof core_1.OriginalColumnGroup) {\n // group comps are stored using a custom key (groupId + child colIds concatenated) as we need\n // to distinguish individual column groups after they have been split by user\n var childIds = columnGroupChild.getLeafColumns().map(function (child) { return child.getId(); }).join('-');\n return columnGroupChild.getId() + '-' + childIds;\n }\n else {\n return columnGroupChild.getId();\n }\n };\n return _this;\n }\n PrimaryColsListPanel.prototype.init = function (params, allowDragging) {\n var _this = this;\n this.params = params;\n this.allowDragging = allowDragging;\n if (!this.params.suppressSyncLayoutWithGrid) {\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_MOVED, this.onColumnsChanged.bind(this));\n }\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.onColumnsChanged.bind(this));\n var eventsImpactingCheckedState = [\n core_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED,\n core_1.Events.EVENT_COLUMN_PIVOT_CHANGED,\n core_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED,\n core_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED,\n core_1.Events.EVENT_COLUMN_VALUE_CHANGED,\n core_1.Events.EVENT_COLUMN_VISIBLE,\n core_1.Events.EVENT_NEW_COLUMNS_LOADED\n ];\n eventsImpactingCheckedState.forEach(function (event) {\n // update header select all checkbox with current selection state\n _this.addDestroyableEventListener(_this.eventService, event, _this.fireSelectionChangedEvent.bind(_this));\n });\n this.expandGroupsByDefault = !this.params.contractColumnSelection;\n if (this.columnController.isReady()) {\n this.onColumnsChanged();\n }\n };\n PrimaryColsListPanel.prototype.onColumnsChanged = function () {\n var pivotModeActive = this.columnController.isPivotMode();\n var shouldSyncColumnLayoutWithGrid = !this.params.suppressSyncLayoutWithGrid && !pivotModeActive;\n shouldSyncColumnLayoutWithGrid ? this.syncColumnLayout() : this.buildTreeFromProvidedColumnDefs();\n };\n PrimaryColsListPanel.prototype.syncColumnLayout = function () {\n this.colDefService.syncLayoutWithGrid(this.setColumnLayout.bind(this));\n };\n PrimaryColsListPanel.prototype.setColumnLayout = function (colDefs) {\n this.destroyColumnComps();\n // create column tree using supplied colDef's\n this.columnTree = this.colDefService.createColumnTree(colDefs);\n // using col defs to check if groups exist as it could be a custom layout\n var groupsExist = colDefs.some(function (colDef) {\n return colDef && typeof colDef.children !== 'undefined';\n });\n this.recursivelyAddComps(this.columnTree, 0, groupsExist);\n this.recursivelySetVisibility(this.columnTree, true);\n // notify header\n this.notifyListeners();\n };\n PrimaryColsListPanel.prototype.buildTreeFromProvidedColumnDefs = function () {\n this.destroyColumnComps();\n // add column / group comps to tool panel\n this.columnTree = this.columnController.getPrimaryColumnTree();\n var groupsExist = this.columnController.isPrimaryColumnGroupsPresent();\n this.recursivelyAddComps(this.columnTree, 0, groupsExist);\n this.recursivelySetVisibility(this.columnTree, true);\n // notify header\n this.notifyListeners();\n };\n PrimaryColsListPanel.prototype.recursivelyAddComps = function (tree, dept, groupsExist) {\n var _this = this;\n tree.forEach(function (child) {\n if (child instanceof core_1.OriginalColumnGroup) {\n _this.recursivelyAddGroupComps(child, dept, groupsExist);\n }\n else {\n _this.addColumnComps(child, dept, groupsExist);\n }\n });\n };\n PrimaryColsListPanel.prototype.recursivelyAddGroupComps = function (columnGroup, dept, groupsExist) {\n var _this = this;\n // only render group if user provided the definition\n var newDept;\n if (columnGroup.getColGroupDef() && columnGroup.getColGroupDef().suppressColumnsToolPanel) {\n return;\n }\n if (!columnGroup.isPadding()) {\n var renderedGroup = new toolPanelColumnGroupComp_1.ToolPanelColumnGroupComp(columnGroup, dept, this.allowDragging, this.expandGroupsByDefault, this.onGroupExpanded.bind(this), function () { return _this.filterResults; });\n this.getContext().wireBean(renderedGroup);\n this.getGui().appendChild(renderedGroup.getGui());\n // we want to indent on the gui for the children\n newDept = dept + 1;\n // group comps are stored using a custom key (groupId + child colIds concatenated) as we need\n // to distinguish individual column groups after they have been split by user\n var key = this.getColumnCompId(columnGroup);\n this.columnComps[key] = renderedGroup;\n }\n else {\n // no children, so no indent\n newDept = dept;\n }\n this.recursivelyAddComps(columnGroup.getChildren(), newDept, groupsExist);\n };\n PrimaryColsListPanel.prototype.addColumnComps = function (column, dept, groupsExist) {\n if (column.getColDef() && column.getColDef().suppressColumnsToolPanel) {\n return;\n }\n var columnComp = new toolPanelColumnComp_1.ToolPanelColumnComp(column, dept, this.allowDragging, groupsExist);\n this.getContext().wireBean(columnComp);\n this.getGui().appendChild(columnComp.getGui());\n this.columnComps[column.getId()] = columnComp;\n };\n PrimaryColsListPanel.prototype.onGroupExpanded = function () {\n this.recursivelySetVisibility(this.columnTree, true);\n this.fireGroupExpandedEvent();\n };\n PrimaryColsListPanel.prototype.doSetExpandedAll = function (value) {\n core_1._.iterateObject(this.columnComps, function (key, renderedItem) {\n if (renderedItem.isExpandable()) {\n renderedItem.setExpanded(value);\n }\n });\n };\n PrimaryColsListPanel.prototype.setGroupsExpanded = function (expand, groupIds) {\n var _this = this;\n var expandedGroupIds = [];\n if (!groupIds) {\n this.doSetExpandedAll(expand);\n return;\n }\n groupIds.forEach(function (suppliedGroupId) {\n // we need to search through all comps to handle the case when groups are split\n core_1._.iterateObject(_this.columnComps, function (key, comp) {\n // check if group comp starts with supplied group id as the tool panel keys contain\n // groupId + childIds concatenated\n var foundMatchingGroupComp = key.indexOf(suppliedGroupId) === 0;\n if (foundMatchingGroupComp) {\n comp.setExpanded(expand);\n expandedGroupIds.push(suppliedGroupId);\n }\n });\n });\n var unrecognisedGroupIds = groupIds.filter(function (groupId) { return !core_1._.includes(expandedGroupIds, groupId); });\n if (unrecognisedGroupIds.length > 0) {\n console.warn('ag-Grid: unable to find group(s) for supplied groupIds:', unrecognisedGroupIds);\n }\n };\n PrimaryColsListPanel.prototype.getExpandState = function () {\n var _this = this;\n var expandedCount = 0;\n var notExpandedCount = 0;\n var recursiveFunc = function (items) {\n items.forEach(function (item) {\n // only interested in groups\n if (item instanceof core_1.OriginalColumnGroup) {\n var compId = _this.getColumnCompId(item);\n var comp = _this.columnComps[compId];\n if (comp) {\n if (comp.isExpanded()) {\n expandedCount++;\n }\n else {\n notExpandedCount++;\n }\n }\n var columnGroup = item;\n var groupChildren = columnGroup.getChildren();\n recursiveFunc(groupChildren);\n }\n });\n };\n recursiveFunc(this.columnTree);\n if (expandedCount > 0 && notExpandedCount > 0) {\n return primaryColsHeaderPanel_1.EXPAND_STATE.INDETERMINATE;\n }\n else if (notExpandedCount > 0) {\n return primaryColsHeaderPanel_1.EXPAND_STATE.COLLAPSED;\n }\n else {\n return primaryColsHeaderPanel_1.EXPAND_STATE.EXPANDED;\n }\n };\n PrimaryColsListPanel.prototype.doSetSelectedAll = function (selectAllChecked) {\n this.selectAllChecked = selectAllChecked;\n this.updateSelections();\n };\n PrimaryColsListPanel.prototype.updateSelections = function () {\n var _this = this;\n if (this.columnApi.isPivotMode()) {\n // if pivot mode is on, then selecting columns has special meaning (eg group, aggregate, pivot etc),\n // so there is no bulk operation we can do.\n core_1._.iterateObject(this.columnComps, function (key, column) {\n column.onSelectAllChanged(_this.selectAllChecked);\n });\n }\n else {\n // however if pivot mode is off, then it's all about column visibility so we can do a bulk\n // operation directly with the column controller. we could column.onSelectAllChanged(checked)\n // as above, however this would work on each column independently and take longer.\n if (!core_1._.exists(this.filterText)) {\n var primaryCols = this.columnApi.getPrimaryColumns();\n // we don't want to change visibility on lock visible / hidden columns\n var colsToChange = primaryCols.filter(function (col) {\n return !col.getColDef().lockVisible && !col.getColDef().hide;\n });\n this.columnApi.setColumnsVisible(colsToChange, this.selectAllChecked);\n return;\n }\n // obtain list of columns currently filtered\n var filteredCols_1 = [];\n core_1._.iterateObject(this.filterResults, function (key, passesFilter) {\n if (passesFilter)\n filteredCols_1.push(key);\n });\n if (filteredCols_1.length > 0) {\n // update visibility of columns currently filtered\n this.columnApi.setColumnsVisible(filteredCols_1, this.selectAllChecked);\n // update select all header with new state\n var selectionState = this.selectAllChecked ? primaryColsHeaderPanel_1.SELECTED_STATE.CHECKED : primaryColsHeaderPanel_1.SELECTED_STATE.UNCHECKED;\n this.dispatchEvent({ type: 'selectionChanged', state: selectionState });\n }\n }\n };\n PrimaryColsListPanel.prototype.getSelectionState = function () {\n var _this = this;\n var allPrimaryColumns = this.columnController.getAllPrimaryColumns();\n var columns = [];\n if (allPrimaryColumns !== null) {\n columns = allPrimaryColumns.filter(function (col) { return !col.getColDef().lockVisible; });\n }\n var pivotMode = this.columnController.isPivotMode();\n var checkedCount = 0;\n var uncheckedCount = 0;\n columns.forEach(function (col) {\n // ignore lock visible columns\n if (col.getColDef().lockVisible) {\n return;\n }\n // not not count columns not in tool panel\n var colDef = col.getColDef();\n if (colDef && colDef.suppressColumnsToolPanel) {\n return;\n }\n // ignore columns that have been removed from panel by filter\n if (_this.filterResults && !_this.filterResults[col.getColId()])\n return;\n var checked;\n if (pivotMode) {\n var noPivotModeOptionsAllowed = !col.isAllowPivot() && !col.isAllowRowGroup() && !col.isAllowValue();\n if (noPivotModeOptionsAllowed) {\n return;\n }\n checked = col.isValueActive() || col.isPivotActive() || col.isRowGroupActive();\n }\n else {\n checked = col.isVisible();\n }\n if (checked) {\n checkedCount++;\n }\n else {\n uncheckedCount++;\n }\n });\n if (checkedCount > 0 && uncheckedCount > 0) {\n return primaryColsHeaderPanel_1.SELECTED_STATE.INDETERMINATE;\n }\n else if (checkedCount === 0 || uncheckedCount > 0) {\n return primaryColsHeaderPanel_1.SELECTED_STATE.UNCHECKED;\n }\n else {\n return primaryColsHeaderPanel_1.SELECTED_STATE.CHECKED;\n }\n };\n PrimaryColsListPanel.prototype.setFilterText = function (filterText) {\n this.filterText = core_1._.exists(filterText) ? filterText.toLowerCase() : null;\n this.filterColumns();\n this.recursivelySetVisibility(this.columnTree, true);\n // groups selection state may need to be updated when filter is present\n core_1._.iterateObject(this.columnComps, function (key, columnComp) {\n if (columnComp instanceof toolPanelColumnGroupComp_1.ToolPanelColumnGroupComp) {\n columnComp.onColumnStateChanged();\n }\n });\n // update header panel with current selection and expanded state\n this.fireSelectionChangedEvent();\n this.fireGroupExpandedEvent();\n };\n PrimaryColsListPanel.prototype.filterColumns = function () {\n var _this = this;\n var filterResults = {};\n var passesFilter = function (item) {\n if (!core_1._.exists(_this.filterText))\n return true;\n var columnCompId = _this.getColumnCompId(item);\n var comp = _this.columnComps[columnCompId];\n if (!comp)\n return false;\n var isPaddingGroup = item instanceof core_1.OriginalColumnGroup && item.isPadding();\n if (isPaddingGroup)\n return false;\n var displayName = comp.getDisplayName();\n return displayName !== null ? displayName.toLowerCase().indexOf(_this.filterText) >= 0 : true;\n };\n var recursivelyCheckFilter = function (item, parentPasses) {\n var atLeastOneChildPassed = false;\n if (item instanceof core_1.OriginalColumnGroup) {\n var groupPasses_1 = passesFilter(item);\n item.getChildren().forEach(function (child) {\n var childPasses = recursivelyCheckFilter(child, groupPasses_1 || parentPasses);\n if (childPasses) {\n atLeastOneChildPassed = childPasses;\n }\n });\n }\n var filterPasses = (parentPasses || atLeastOneChildPassed) ? true : passesFilter(item);\n var columnCompId = _this.getColumnCompId(item);\n filterResults[columnCompId] = filterPasses;\n return filterPasses;\n };\n this.columnTree.forEach(function (item) { return recursivelyCheckFilter(item, false); });\n this.filterResults = filterResults;\n };\n PrimaryColsListPanel.prototype.recursivelySetVisibility = function (columnTree, parentGroupsOpen) {\n var _this = this;\n columnTree.forEach(function (child) {\n var compId = _this.getColumnCompId(child);\n var comp = _this.columnComps[compId];\n if (comp) {\n var passesFilter = _this.filterResults ? _this.filterResults[compId] : true;\n comp.setDisplayed(parentGroupsOpen && passesFilter);\n }\n if (child instanceof core_1.OriginalColumnGroup) {\n var columnGroup = child;\n var childrenOpen = void 0;\n if (comp) {\n var expanded = comp.isExpanded();\n childrenOpen = parentGroupsOpen ? expanded : false;\n }\n else {\n childrenOpen = parentGroupsOpen;\n }\n var children = columnGroup.getChildren();\n _this.recursivelySetVisibility(children, childrenOpen);\n }\n });\n };\n PrimaryColsListPanel.prototype.notifyListeners = function () {\n this.fireGroupExpandedEvent();\n this.fireSelectionChangedEvent();\n };\n PrimaryColsListPanel.prototype.fireGroupExpandedEvent = function () {\n var expandState = this.getExpandState();\n this.dispatchEvent({ type: 'groupExpanded', state: expandState });\n };\n PrimaryColsListPanel.prototype.fireSelectionChangedEvent = function () {\n var selectionState = this.getSelectionState();\n this.dispatchEvent({ type: 'selectionChanged', state: selectionState });\n };\n PrimaryColsListPanel.prototype.destroyColumnComps = function () {\n core_1._.clearElement(this.getGui());\n if (this.columnComps) {\n core_1._.iterateObject(this.columnComps, function (key, renderedItem) { return renderedItem.destroy(); });\n }\n this.columnComps = {};\n };\n PrimaryColsListPanel.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.destroyColumnComps();\n };\n PrimaryColsListPanel.TEMPLATE = \"
\";\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], PrimaryColsListPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], PrimaryColsListPanel.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('toolPanelColDefService')\n ], PrimaryColsListPanel.prototype, \"colDefService\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], PrimaryColsListPanel.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('columnApi')\n ], PrimaryColsListPanel.prototype, \"columnApi\", void 0);\n return PrimaryColsListPanel;\n}(core_1.Component));\nexports.PrimaryColsListPanel = PrimaryColsListPanel;\n//# sourceMappingURL=primaryColsListPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar ToolPanelColumnGroupComp = /** @class */ (function (_super) {\n __extends(ToolPanelColumnGroupComp, _super);\n function ToolPanelColumnGroupComp(columnGroup, columnDept, allowDragging, expandByDefault, expandedCallback, getFilterResults) {\n var _this = _super.call(this) || this;\n _this.processingColumnStateChange = false;\n _this.columnGroup = columnGroup;\n _this.columnDept = columnDept;\n _this.allowDragging = allowDragging;\n _this.expanded = expandByDefault;\n _this.expandedCallback = expandedCallback;\n _this.getFilterResultsCallback = getFilterResults;\n return _this;\n }\n ToolPanelColumnGroupComp.prototype.init = function () {\n this.setTemplate(ToolPanelColumnGroupComp.TEMPLATE);\n this.eDragHandle = core_1._.createIconNoSpan('columnDrag', this.gridOptionsWrapper);\n core_1._.addCssClass(this.eDragHandle, 'ag-column-drag');\n this.cbSelect.getGui().insertAdjacentElement('afterend', this.eDragHandle);\n this.displayName = this.columnController.getDisplayNameForOriginalColumnGroup(null, this.columnGroup, 'toolPanel');\n if (core_1._.missing(this.displayName)) {\n this.displayName = '>>';\n }\n this.eLabel.innerHTML = this.displayName ? this.displayName : '';\n this.setupExpandContract();\n this.addCssClass('ag-toolpanel-indent-' + this.columnDept);\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addDestroyableEventListener(this.eLabel, 'click', this.onLabelClicked.bind(this));\n this.addDestroyableEventListener(this.cbSelect, core_1.AgCheckbox.EVENT_CHANGED, this.onCheckboxChanged.bind(this));\n this.setOpenClosedIcons();\n this.setupDragging();\n this.onColumnStateChanged();\n this.addVisibilityListenersToAllChildren();\n core_1.CssClassApplier.addToolPanelClassesFromColDef(this.columnGroup.getColGroupDef(), this.getGui(), this.gridOptionsWrapper, null, this.columnGroup);\n };\n ToolPanelColumnGroupComp.prototype.addVisibilityListenersToAllChildren = function () {\n var _this = this;\n this.columnGroup.getLeafColumns().forEach(function (column) {\n _this.addDestroyableEventListener(column, core_1.Column.EVENT_VISIBLE_CHANGED, _this.onColumnStateChanged.bind(_this));\n _this.addDestroyableEventListener(column, core_1.Column.EVENT_VALUE_CHANGED, _this.onColumnStateChanged.bind(_this));\n _this.addDestroyableEventListener(column, core_1.Column.EVENT_PIVOT_CHANGED, _this.onColumnStateChanged.bind(_this));\n _this.addDestroyableEventListener(column, core_1.Column.EVENT_ROW_GROUP_CHANGED, _this.onColumnStateChanged.bind(_this));\n });\n };\n ToolPanelColumnGroupComp.prototype.setupDragging = function () {\n var _this = this;\n if (!this.allowDragging) {\n core_1._.setDisplayed(this.eDragHandle, false);\n return;\n }\n var dragSource = {\n type: core_1.DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n dragItemName: this.displayName,\n getDragItem: function () { return _this.createDragItem(); }\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n };\n ToolPanelColumnGroupComp.prototype.createDragItem = function () {\n var visibleState = {};\n this.columnGroup.getLeafColumns().forEach(function (col) {\n visibleState[col.getId()] = col.isVisible();\n });\n return {\n columns: this.columnGroup.getLeafColumns(),\n visibleState: visibleState\n };\n };\n ToolPanelColumnGroupComp.prototype.setupExpandContract = function () {\n this.eGroupClosedIcon.appendChild(core_1._.createIcon('columnSelectClosed', this.gridOptionsWrapper, null));\n this.eGroupOpenedIcon.appendChild(core_1._.createIcon('columnSelectOpen', this.gridOptionsWrapper, null));\n this.addDestroyableEventListener(this.eGroupClosedIcon, 'click', this.onExpandOrContractClicked.bind(this));\n this.addDestroyableEventListener(this.eGroupOpenedIcon, 'click', this.onExpandOrContractClicked.bind(this));\n var touchListener = new core_1.TouchListener(this.eColumnGroupIcons, true);\n this.addDestroyableEventListener(touchListener, core_1.TouchListener.EVENT_TAP, this.onExpandOrContractClicked.bind(this));\n this.addDestroyFunc(touchListener.destroy.bind(touchListener));\n };\n ToolPanelColumnGroupComp.prototype.onLabelClicked = function () {\n var nextState = !this.cbSelect.getValue();\n this.onChangeCommon(nextState);\n };\n ToolPanelColumnGroupComp.prototype.onCheckboxChanged = function (event) {\n this.onChangeCommon(event.selected);\n };\n ToolPanelColumnGroupComp.prototype.onChangeCommon = function (nextState) {\n if (this.processingColumnStateChange) {\n return;\n }\n var childColumns = this.columnGroup.getLeafColumns();\n if (this.columnController.isPivotMode()) {\n if (nextState) {\n this.actionCheckedReduce(childColumns);\n }\n else {\n this.actionUnCheckedReduce(childColumns);\n }\n }\n else {\n var isAllowedColumn = function (c) { return !c.getColDef().lockVisible && !c.getColDef().suppressColumnsToolPanel; };\n var allowedColumns = childColumns.filter(isAllowedColumn);\n var filterResults_1 = this.getFilterResultsCallback();\n var passesFilter = function (c) { return !filterResults_1 || filterResults_1[c.getColId()]; };\n var visibleColumns = allowedColumns.filter(passesFilter);\n // only columns that are 'allowed' and pass filter should be visible\n this.columnController.setColumnsVisible(visibleColumns, nextState, \"toolPanelUi\");\n }\n };\n ToolPanelColumnGroupComp.prototype.actionUnCheckedReduce = function (columns) {\n var columnsToUnPivot = [];\n var columnsToUnValue = [];\n var columnsToUnGroup = [];\n columns.forEach(function (column) {\n if (column.isPivotActive()) {\n columnsToUnPivot.push(column);\n }\n if (column.isRowGroupActive()) {\n columnsToUnGroup.push(column);\n }\n if (column.isValueActive()) {\n columnsToUnValue.push(column);\n }\n });\n if (columnsToUnPivot.length > 0) {\n this.columnController.removePivotColumns(columnsToUnPivot, \"toolPanelUi\");\n }\n if (columnsToUnGroup.length > 0) {\n this.columnController.removeRowGroupColumns(columnsToUnGroup, \"toolPanelUi\");\n }\n if (columnsToUnValue.length > 0) {\n this.columnController.removeValueColumns(columnsToUnValue, \"toolPanelUi\");\n }\n };\n ToolPanelColumnGroupComp.prototype.actionCheckedReduce = function (columns) {\n var columnsToAggregate = [];\n var columnsToGroup = [];\n var columnsToPivot = [];\n columns.forEach(function (column) {\n // don't change any column that's already got a function active\n if (column.isAnyFunctionActive()) {\n return;\n }\n if (column.isAllowValue()) {\n columnsToAggregate.push(column);\n }\n else if (column.isAllowRowGroup()) {\n columnsToGroup.push(column);\n }\n else if (column.isAllowRowGroup()) {\n columnsToPivot.push(column);\n }\n });\n if (columnsToAggregate.length > 0) {\n this.columnController.addValueColumns(columnsToAggregate, \"toolPanelUi\");\n }\n if (columnsToGroup.length > 0) {\n this.columnController.addRowGroupColumns(columnsToGroup, \"toolPanelUi\");\n }\n if (columnsToPivot.length > 0) {\n this.columnController.addPivotColumns(columnsToPivot, \"toolPanelUi\");\n }\n };\n ToolPanelColumnGroupComp.prototype.onColumnStateChanged = function () {\n var selectedValue = this.workOutSelectedValue();\n var readOnlyValue = this.workOutReadOnlyValue();\n this.processingColumnStateChange = true;\n this.cbSelect.setValue(selectedValue);\n this.cbSelect.setReadOnly(readOnlyValue);\n this.processingColumnStateChange = false;\n };\n ToolPanelColumnGroupComp.prototype.workOutSelectedValue = function () {\n var pivotMode = this.columnController.isPivotMode();\n var leafColumns = this.columnGroup.getLeafColumns();\n var filterResults = this.getFilterResultsCallback();\n var len = leafColumns.length;\n var count = { visible: 0, hidden: 0 };\n var ignoredChildCount = { visible: 0, hidden: 0 };\n for (var i = 0; i < len; i++) {\n var column = leafColumns[i];\n // ignore lock visible columns and columns set to 'suppressColumnsToolPanel'\n var ignore = column.getColDef().lockVisible || column.getColDef().suppressColumnsToolPanel;\n var type = this.isColumnVisible(column, pivotMode) ? 'visible' : 'hidden';\n count[type]++;\n // also ignore columns that have been removed by the filter\n if (filterResults) {\n var columnPassesFilter = filterResults[column.getColId()];\n if (!columnPassesFilter) {\n ignore = true;\n }\n }\n if (!ignore) {\n continue;\n }\n ignoredChildCount[type]++;\n }\n // if all columns are ignored we use the regular count, if not\n // we only consider the columns that were not ignored\n if (ignoredChildCount.visible + ignoredChildCount.hidden !== len) {\n count.visible -= ignoredChildCount.visible;\n count.hidden -= ignoredChildCount.hidden;\n }\n var selectedValue;\n if (count.visible > 0 && count.hidden > 0) {\n selectedValue = null;\n }\n else {\n selectedValue = count.visible > 0;\n }\n return selectedValue == null ? undefined : selectedValue;\n };\n ToolPanelColumnGroupComp.prototype.workOutReadOnlyValue = function () {\n var pivotMode = this.columnController.isPivotMode();\n var colsThatCanAction = 0;\n this.columnGroup.getLeafColumns().forEach(function (col) {\n if (pivotMode) {\n if (col.isAnyFunctionAllowed()) {\n colsThatCanAction++;\n }\n }\n else {\n if (!col.getColDef().lockVisible) {\n colsThatCanAction++;\n }\n }\n });\n return colsThatCanAction === 0;\n };\n ToolPanelColumnGroupComp.prototype.isColumnVisible = function (column, pivotMode) {\n if (pivotMode) {\n var pivoted = column.isPivotActive();\n var grouped = column.isRowGroupActive();\n var aggregated = column.isValueActive();\n return pivoted || grouped || aggregated;\n }\n else {\n return column.isVisible();\n }\n };\n ToolPanelColumnGroupComp.prototype.onExpandOrContractClicked = function () {\n this.expanded = !this.expanded;\n this.setOpenClosedIcons();\n this.expandedCallback();\n };\n ToolPanelColumnGroupComp.prototype.setOpenClosedIcons = function () {\n var folderOpen = this.expanded;\n core_1._.setDisplayed(this.eGroupClosedIcon, !folderOpen);\n core_1._.setDisplayed(this.eGroupOpenedIcon, folderOpen);\n };\n ToolPanelColumnGroupComp.prototype.isExpanded = function () {\n return this.expanded;\n };\n ToolPanelColumnGroupComp.prototype.getDisplayName = function () {\n return this.displayName;\n };\n ToolPanelColumnGroupComp.prototype.onSelectAllChanged = function (value) {\n if ((value && !this.cbSelect.getValue()) ||\n (!value && this.cbSelect.getValue())) {\n if (!this.cbSelect.isReadOnly()) {\n this.cbSelect.toggle();\n }\n }\n };\n ToolPanelColumnGroupComp.prototype.isSelected = function () {\n return this.cbSelect.getValue();\n };\n ToolPanelColumnGroupComp.prototype.isSelectable = function () {\n return !this.cbSelect.isReadOnly();\n };\n ToolPanelColumnGroupComp.prototype.isExpandable = function () {\n return true;\n };\n ToolPanelColumnGroupComp.prototype.setExpanded = function (value) {\n if (this.expanded !== value) {\n this.onExpandOrContractClicked();\n }\n };\n ToolPanelColumnGroupComp.prototype.setSelected = function (selected) {\n this.cbSelect.setValue(selected, true);\n };\n ToolPanelColumnGroupComp.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n \\n
\";\n __decorate([\n core_1.Autowired('eventService')\n ], ToolPanelColumnGroupComp.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], ToolPanelColumnGroupComp.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('dragAndDropService')\n ], ToolPanelColumnGroupComp.prototype, \"dragAndDropService\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], ToolPanelColumnGroupComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.RefSelector('cbSelect')\n ], ToolPanelColumnGroupComp.prototype, \"cbSelect\", void 0);\n __decorate([\n core_1.RefSelector('eLabel')\n ], ToolPanelColumnGroupComp.prototype, \"eLabel\", void 0);\n __decorate([\n core_1.RefSelector('eGroupOpenedIcon')\n ], ToolPanelColumnGroupComp.prototype, \"eGroupOpenedIcon\", void 0);\n __decorate([\n core_1.RefSelector('eGroupClosedIcon')\n ], ToolPanelColumnGroupComp.prototype, \"eGroupClosedIcon\", void 0);\n __decorate([\n core_1.RefSelector('eColumnGroupIcons')\n ], ToolPanelColumnGroupComp.prototype, \"eColumnGroupIcons\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ToolPanelColumnGroupComp.prototype, \"init\", null);\n return ToolPanelColumnGroupComp;\n}(core_1.Component));\nexports.ToolPanelColumnGroupComp = ToolPanelColumnGroupComp;\n//# sourceMappingURL=toolPanelColumnGroupComp.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar ToolPanelColumnComp = /** @class */ (function (_super) {\n __extends(ToolPanelColumnComp, _super);\n function ToolPanelColumnComp(column, columnDept, allowDragging, groupsExist) {\n var _this = _super.call(this) || this;\n _this.processingColumnStateChange = false;\n _this.column = column;\n _this.columnDept = columnDept;\n _this.allowDragging = allowDragging;\n _this.groupsExist = groupsExist;\n return _this;\n }\n ToolPanelColumnComp.prototype.init = function () {\n this.setTemplate(ToolPanelColumnComp.TEMPLATE);\n this.eDragHandle = core_1._.createIconNoSpan('columnDrag', this.gridOptionsWrapper);\n core_1._.addCssClass(this.eDragHandle, 'ag-column-drag');\n this.cbSelect.getGui().insertAdjacentElement('afterend', this.eDragHandle);\n this.displayName = this.columnController.getDisplayNameForColumn(this.column, 'toolPanel');\n var displayNameSanitised = core_1._.escape(this.displayName);\n this.eLabel.innerHTML = displayNameSanitised;\n // if grouping, we add an extra level of indent, to cater for expand/contract icons we need to indent for\n var indent = this.columnDept;\n if (this.groupsExist) {\n this.addCssClass('ag-toolpanel-add-group-indent');\n }\n this.addCssClass(\"ag-toolpanel-indent-\" + indent);\n this.setupDragging();\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addDestroyableEventListener(this.column, core_1.Column.EVENT_VALUE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addDestroyableEventListener(this.column, core_1.Column.EVENT_PIVOT_CHANGED, this.onColumnStateChanged.bind(this));\n this.addDestroyableEventListener(this.column, core_1.Column.EVENT_ROW_GROUP_CHANGED, this.onColumnStateChanged.bind(this));\n this.addDestroyableEventListener(this.column, core_1.Column.EVENT_VISIBLE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, 'functionsReadOnly', this.onColumnStateChanged.bind(this));\n this.addDestroyableEventListener(this.cbSelect, core_1.AgCheckbox.EVENT_CHANGED, this.onCheckboxChanged.bind(this));\n this.addDestroyableEventListener(this.eLabel, 'click', this.onLabelClicked.bind(this));\n this.onColumnStateChanged();\n core_1.CssClassApplier.addToolPanelClassesFromColDef(this.column.getColDef(), this.getGui(), this.gridOptionsWrapper, this.column, null);\n };\n ToolPanelColumnComp.prototype.onLabelClicked = function () {\n if (this.gridOptionsWrapper.isFunctionsReadOnly()) {\n return;\n }\n var nextState = !this.cbSelect.getValue();\n this.onChangeCommon(nextState);\n };\n ToolPanelColumnComp.prototype.onCheckboxChanged = function (event) {\n this.onChangeCommon(event.selected);\n };\n ToolPanelColumnComp.prototype.onChangeCommon = function (nextState) {\n // ignore lock visible columns\n if (this.column.getColDef().lockVisible) {\n return;\n }\n // only want to action if the user clicked the checkbox, not is we are setting the checkbox because\n // of a change in the model\n if (this.processingColumnStateChange) {\n return;\n }\n // action in a timeout, as the action takes some time, we want to update the icons first\n // so the user gets nice feedback when they click. otherwise there would be a lag and the\n // user would think the checkboxes were clunky\n if (this.columnController.isPivotMode()) {\n if (nextState) {\n this.actionCheckedPivotMode();\n }\n else {\n this.actionUnCheckedPivotMode();\n }\n }\n else {\n this.columnController.setColumnVisible(this.column, nextState, \"columnMenu\");\n }\n };\n ToolPanelColumnComp.prototype.actionUnCheckedPivotMode = function () {\n var functionPassive = this.gridOptionsWrapper.isFunctionsPassive();\n var column = this.column;\n var columnController = this.columnController;\n // remove pivot if column is pivoted\n if (column.isPivotActive()) {\n if (functionPassive) {\n var copyOfPivotColumns = this.columnController.getPivotColumns().slice();\n copyOfPivotColumns.push(column);\n var event_1 = {\n type: core_1.Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST,\n columns: copyOfPivotColumns,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n else {\n columnController.removePivotColumn(column, \"columnMenu\");\n }\n }\n // remove value if column is value\n if (column.isValueActive()) {\n if (functionPassive) {\n var copyOfValueColumns = this.columnController.getValueColumns().slice();\n copyOfValueColumns.push(column);\n var event_2 = {\n type: core_1.Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST,\n columns: copyOfValueColumns,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_2);\n }\n else {\n columnController.removeValueColumn(column, \"columnMenu\");\n }\n }\n // remove group if column is grouped\n if (column.isRowGroupActive()) {\n if (functionPassive) {\n var copyOfRowGroupColumns = this.columnController.getRowGroupColumns().slice();\n copyOfRowGroupColumns.push(column);\n var event_3 = {\n type: core_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST,\n columns: copyOfRowGroupColumns,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_3);\n }\n else {\n columnController.removeRowGroupColumn(column, \"columnMenu\");\n }\n }\n };\n ToolPanelColumnComp.prototype.actionCheckedPivotMode = function () {\n var column = this.column;\n // function already active, so do nothing\n if (column.isValueActive() || column.isPivotActive() || column.isRowGroupActive()) {\n return;\n }\n var functionPassive = this.gridOptionsWrapper.isFunctionsPassive();\n if (column.isAllowValue()) {\n if (functionPassive) {\n var copyOfValueColumns = this.columnController.getValueColumns().slice();\n core_1._.removeFromArray(copyOfValueColumns, column);\n var event_4 = {\n type: core_1.Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST,\n api: this.gridApi,\n columnApi: this.columnApi,\n columns: copyOfValueColumns\n };\n this.eventService.dispatchEvent(event_4);\n }\n else {\n this.columnController.addValueColumn(column, \"columnMenu\");\n }\n }\n else if (column.isAllowRowGroup()) {\n if (functionPassive) {\n var copyOfRowGroupColumns = this.columnController.getRowGroupColumns().slice();\n core_1._.removeFromArray(copyOfRowGroupColumns, column);\n var event_5 = {\n type: core_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST,\n api: this.gridApi,\n columnApi: this.columnApi,\n columns: copyOfRowGroupColumns\n };\n this.eventService.dispatchEvent(event_5);\n }\n else {\n this.columnController.addRowGroupColumn(column, \"columnMenu\");\n }\n }\n else if (column.isAllowPivot()) {\n if (functionPassive) {\n var copyOfPivotColumns = this.columnController.getPivotColumns().slice();\n core_1._.removeFromArray(copyOfPivotColumns, column);\n var event_6 = {\n type: core_1.Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST,\n api: this.gridApi,\n columnApi: this.columnApi,\n columns: copyOfPivotColumns\n };\n this.eventService.dispatchEvent(event_6);\n }\n else {\n this.columnController.addPivotColumn(column, \"columnMenu\");\n }\n }\n };\n ToolPanelColumnComp.prototype.setupDragging = function () {\n var _this = this;\n if (!this.allowDragging) {\n core_1._.setDisplayed(this.eDragHandle, false);\n return;\n }\n var dragSource = {\n type: core_1.DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n dragItemName: this.displayName,\n getDragItem: function () { return _this.createDragItem(); }\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n };\n ToolPanelColumnComp.prototype.createDragItem = function () {\n var visibleState = {};\n visibleState[this.column.getId()] = this.column.isVisible();\n return {\n columns: [this.column],\n visibleState: visibleState\n };\n };\n ToolPanelColumnComp.prototype.onColumnStateChanged = function () {\n this.processingColumnStateChange = true;\n var isPivotMode = this.columnController.isPivotMode();\n if (isPivotMode) {\n // if reducing, checkbox means column is one of pivot, value or group\n var anyFunctionActive = this.column.isAnyFunctionActive();\n this.cbSelect.setValue(anyFunctionActive);\n }\n else {\n // if not reducing, the checkbox tells us if column is visible or not\n this.cbSelect.setValue(this.column.isVisible());\n }\n var checkboxReadOnly;\n if (isPivotMode) {\n // when in pivot mode, the item should be read only if:\n // a) gui is not allowed make any changes\n var functionsReadOnly = this.gridOptionsWrapper.isFunctionsReadOnly();\n // b) column is not allow any functions on it\n var noFunctionsAllowed = !this.column.isAnyFunctionAllowed();\n checkboxReadOnly = functionsReadOnly || noFunctionsAllowed;\n }\n else {\n // when in normal mode, the checkbox is read only if visibility is locked\n checkboxReadOnly = !!this.column.getColDef().lockVisible;\n }\n this.cbSelect.setReadOnly(checkboxReadOnly);\n var checkboxPassive = isPivotMode && this.gridOptionsWrapper.isFunctionsPassive();\n this.cbSelect.setPassive(checkboxPassive);\n this.processingColumnStateChange = false;\n };\n ToolPanelColumnComp.prototype.getDisplayName = function () {\n return this.displayName;\n };\n ToolPanelColumnComp.prototype.onSelectAllChanged = function (value) {\n if (value !== this.cbSelect.getValue()) {\n if (!this.cbSelect.isReadOnly()) {\n this.cbSelect.toggle();\n }\n }\n };\n ToolPanelColumnComp.prototype.isSelected = function () {\n return this.cbSelect.getValue();\n };\n ToolPanelColumnComp.prototype.isSelectable = function () {\n return !this.cbSelect.isReadOnly();\n };\n ToolPanelColumnComp.prototype.isExpandable = function () {\n return false;\n };\n ToolPanelColumnComp.prototype.setExpanded = function (value) {\n console.warn('ag-grid: can not expand a column item that does not represent a column group header');\n };\n ToolPanelColumnComp.TEMPLATE = \"
\\n \\n \\n
\";\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], ToolPanelColumnComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], ToolPanelColumnComp.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], ToolPanelColumnComp.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('dragAndDropService')\n ], ToolPanelColumnComp.prototype, \"dragAndDropService\", void 0);\n __decorate([\n core_1.Autowired('columnApi')\n ], ToolPanelColumnComp.prototype, \"columnApi\", void 0);\n __decorate([\n core_1.Autowired('gridApi')\n ], ToolPanelColumnComp.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.RefSelector('eLabel')\n ], ToolPanelColumnComp.prototype, \"eLabel\", void 0);\n __decorate([\n core_1.RefSelector('cbSelect')\n ], ToolPanelColumnComp.prototype, \"cbSelect\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ToolPanelColumnComp.prototype, \"init\", null);\n return ToolPanelColumnComp;\n}(core_1.Component));\nexports.ToolPanelColumnComp = ToolPanelColumnComp;\n//# sourceMappingURL=toolPanelColumnComp.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar pivotModePanel_1 = require(\"./pivotModePanel\");\nvar row_grouping_1 = require(\"@ag-grid-enterprise/row-grouping\");\nvar ColumnToolPanel = /** @class */ (function (_super) {\n __extends(ColumnToolPanel, _super);\n function ColumnToolPanel() {\n var _this = _super.call(this, ColumnToolPanel.TEMPLATE) || this;\n _this.initialised = false;\n _this.childDestroyFuncs = [];\n return _this;\n }\n // lazy initialise the panel\n ColumnToolPanel.prototype.setVisible = function (visible) {\n _super.prototype.setDisplayed.call(this, visible);\n if (visible && !this.initialised) {\n this.init(this.params);\n }\n };\n ColumnToolPanel.prototype.init = function (params) {\n var defaultParams = {\n suppressSideButtons: false,\n suppressColumnSelectAll: false,\n suppressColumnFilter: false,\n suppressColumnExpandAll: false,\n contractColumnSelection: false,\n suppressPivotMode: false,\n suppressRowGroups: false,\n suppressValues: false,\n suppressPivots: false,\n suppressSyncLayoutWithGrid: false,\n api: this.gridApi\n };\n core_1._.mergeDeep(defaultParams, params);\n this.params = defaultParams;\n if (this.isRowGroupingModuleLoaded() && !this.params.suppressPivotMode) {\n this.pivotModePanel = new pivotModePanel_1.PivotModePanel();\n this.addComponent(this.pivotModePanel);\n }\n this.primaryColsPanel = this.getContext().createComponent('AG-PRIMARY-COLS');\n this.primaryColsPanel.init(true, this.params);\n this.addComponent(this.primaryColsPanel);\n if (this.isRowGroupingModuleLoaded()) {\n if (!this.params.suppressRowGroups) {\n this.rowGroupDropZonePanel = new row_grouping_1.RowGroupDropZonePanel(false);\n this.addComponent(this.rowGroupDropZonePanel);\n }\n if (!this.params.suppressValues) {\n this.valuesDropZonePanel = new row_grouping_1.ValuesDropZonePanel(false);\n this.addComponent(this.valuesDropZonePanel);\n }\n if (!this.params.suppressPivots) {\n this.pivotDropZonePanel = new row_grouping_1.PivotDropZonePanel(false);\n this.addComponent(this.pivotDropZonePanel);\n }\n this.setLastVisible();\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.setLastVisible.bind(this));\n }\n this.initialised = true;\n };\n ColumnToolPanel.prototype.setPivotModeSectionVisible = function (visible) {\n if (!this.isRowGroupingModuleLoaded()) {\n return;\n }\n ;\n if (this.pivotModePanel) {\n this.pivotModePanel.setDisplayed(visible);\n }\n else if (visible) {\n this.pivotModePanel = new pivotModePanel_1.PivotModePanel();\n this.getContext().wireBean(this.pivotModePanel);\n // ensure pivot mode panel is positioned at the top of the columns tool panel\n this.getGui().insertBefore(this.pivotModePanel.getGui(), this.getGui().firstChild);\n this.childDestroyFuncs.push(this.pivotModePanel.destroy.bind(this.pivotModePanel));\n }\n this.setLastVisible();\n };\n ColumnToolPanel.prototype.setRowGroupsSectionVisible = function (visible) {\n if (!this.isRowGroupingModuleLoaded()) {\n return;\n }\n ;\n if (this.rowGroupDropZonePanel) {\n this.rowGroupDropZonePanel.setDisplayed(visible);\n }\n else if (visible) {\n this.rowGroupDropZonePanel = new row_grouping_1.RowGroupDropZonePanel(false);\n this.addComponent(new row_grouping_1.RowGroupDropZonePanel(false));\n }\n this.setLastVisible();\n };\n ColumnToolPanel.prototype.setValuesSectionVisible = function (visible) {\n if (!this.isRowGroupingModuleLoaded()) {\n return;\n }\n ;\n if (this.valuesDropZonePanel) {\n this.valuesDropZonePanel.setDisplayed(visible);\n }\n else if (visible) {\n this.valuesDropZonePanel = new row_grouping_1.ValuesDropZonePanel(false);\n this.addComponent(this.valuesDropZonePanel);\n }\n this.setLastVisible();\n };\n ColumnToolPanel.prototype.setPivotSectionVisible = function (visible) {\n if (!this.isRowGroupingModuleLoaded()) {\n return;\n }\n ;\n if (this.pivotDropZonePanel) {\n this.pivotDropZonePanel.setDisplayed(visible);\n }\n else if (visible) {\n this.pivotDropZonePanel = new row_grouping_1.PivotDropZonePanel(false);\n this.addComponent(this.pivotDropZonePanel);\n this.pivotDropZonePanel.setDisplayed(visible);\n }\n this.setLastVisible();\n };\n ColumnToolPanel.prototype.setLastVisible = function () {\n var eGui = this.getGui();\n var columnDrops = Array.prototype.slice.call(eGui.querySelectorAll('.ag-column-drop'));\n columnDrops.forEach(function (columnDrop) { return core_1._.removeCssClass(columnDrop, 'ag-last-column-drop'); });\n var lastVisible = core_1._.last(eGui.querySelectorAll('.ag-column-drop:not(.ag-hidden)'));\n if (lastVisible) {\n core_1._.addCssClass(lastVisible, 'ag-last-column-drop');\n }\n };\n ColumnToolPanel.prototype.isRowGroupingModuleLoaded = function () {\n return core_1.ModuleRegistry.assertRegistered(core_1.ModuleNames.RowGroupingModule, 'Row Grouping');\n };\n ColumnToolPanel.prototype.expandColumnGroups = function (groupIds) {\n this.primaryColsPanel.expandGroups(groupIds);\n };\n ColumnToolPanel.prototype.collapseColumnGroups = function (groupIds) {\n this.primaryColsPanel.collapseGroups(groupIds);\n };\n ColumnToolPanel.prototype.setColumnLayout = function (colDefs) {\n this.primaryColsPanel.setColumnLayout(colDefs);\n };\n ColumnToolPanel.prototype.syncLayoutWithGrid = function () {\n this.primaryColsPanel.syncLayoutWithGrid();\n };\n ColumnToolPanel.prototype.addComponent = function (component) {\n this.getContext().wireBean(component);\n this.getGui().appendChild(component.getGui());\n this.childDestroyFuncs.push(component.destroy.bind(component));\n };\n ColumnToolPanel.prototype.destroyChildren = function () {\n this.childDestroyFuncs.forEach(function (func) { return func(); });\n this.childDestroyFuncs.length = 0;\n core_1._.clearElement(this.getGui());\n };\n ColumnToolPanel.prototype.refresh = function () {\n this.destroyChildren();\n this.init(this.params);\n };\n ColumnToolPanel.prototype.destroy = function () {\n this.destroyChildren();\n _super.prototype.destroy.call(this);\n };\n ColumnToolPanel.TEMPLATE = \"
\";\n __decorate([\n core_1.Autowired(\"gridOptionsWrapper\")\n ], ColumnToolPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired(\"gridApi\")\n ], ColumnToolPanel.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.Autowired(\"eventService\")\n ], ColumnToolPanel.prototype, \"eventService\", void 0);\n return ColumnToolPanel;\n}(core_1.Component));\nexports.ColumnToolPanel = ColumnToolPanel;\n//# sourceMappingURL=columnToolPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar PivotModePanel = /** @class */ (function (_super) {\n __extends(PivotModePanel, _super);\n function PivotModePanel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PivotModePanel.prototype.createTemplate = function () {\n return \"
\\n \\n
\";\n };\n PivotModePanel.prototype.init = function () {\n this.setTemplate(this.createTemplate());\n this.cbPivotMode.setValue(this.columnController.isPivotMode());\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.cbPivotMode.setLabel(localeTextFunc('pivotMode', 'Pivot Mode'));\n this.addDestroyableEventListener(this.cbPivotMode, core_1.AgCheckbox.EVENT_CHANGED, this.onBtPivotMode.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.onPivotModeChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));\n };\n PivotModePanel.prototype.onBtPivotMode = function () {\n var newValue = this.cbPivotMode.getValue();\n if (newValue !== this.columnController.isPivotMode()) {\n this.columnController.setPivotMode(newValue, \"toolPanelUi\");\n var api = this.gridOptionsWrapper.getApi();\n if (api) {\n api.refreshHeader();\n }\n }\n };\n PivotModePanel.prototype.onPivotModeChanged = function () {\n var pivotModeActive = this.columnController.isPivotMode();\n this.cbPivotMode.setValue(pivotModeActive);\n };\n __decorate([\n core_1.Autowired('columnController')\n ], PivotModePanel.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], PivotModePanel.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], PivotModePanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.RefSelector('cbPivotMode')\n ], PivotModePanel.prototype, \"cbPivotMode\", void 0);\n __decorate([\n core_1.PreConstruct\n ], PivotModePanel.prototype, \"init\", null);\n return PivotModePanel;\n}(core_1.Component));\nexports.PivotModePanel = PivotModePanel;\n//# sourceMappingURL=pivotModePanel.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar core_2 = require(\"@ag-grid-enterprise/core\");\nvar aggregationStage_1 = require(\"./rowGrouping/aggregationStage\");\nvar groupStage_1 = require(\"./rowGrouping/groupStage\");\nvar pivotColDefService_1 = require(\"./rowGrouping/pivotColDefService\");\nvar pivotStage_1 = require(\"./rowGrouping/pivotStage\");\nvar aggFuncService_1 = require(\"./rowGrouping/aggFuncService\");\nvar gridHeaderDropZones_1 = require(\"./rowGrouping/columnDropZones/gridHeaderDropZones\");\nexports.RowGroupingModule = {\n moduleName: core_1.ModuleNames.RowGroupingModule,\n beans: [aggregationStage_1.AggregationStage, groupStage_1.GroupStage, pivotColDefService_1.PivotColDefService, pivotStage_1.PivotStage, aggFuncService_1.AggFuncService],\n agStackComponents: [\n { componentName: 'AgGridHeaderDropZones', componentClass: gridHeaderDropZones_1.GridHeaderDropZones }\n ],\n dependantModules: [\n core_2.EnterpriseCoreModule\n ]\n};\n//# sourceMappingURL=rowGroupingModule.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar AggregationStage = /** @class */ (function () {\n function AggregationStage() {\n }\n // it's possible to recompute the aggregate without doing the other parts\n // + gridApi.recomputeAggregates()\n AggregationStage.prototype.execute = function (params) {\n // we don't do aggregation if doing legacy tree good\n var doingLegacyTreeData = core_1._.exists(this.gridOptionsWrapper.getNodeChildDetailsFunc());\n if (doingLegacyTreeData) {\n return null;\n }\n // if changed path is active, it means we came from a) change detection or b) transaction update.\n // for both of these, if no value columns are present, it means there is nothing to aggregate now\n // and there is no cleanup to be done (as value columns don't change between transactions or change\n // detections). if no value columns and no changed path, means we have to go through all nodes in\n // case we need to clean up agg data from before.\n var noValueColumns = core_1._.missingOrEmpty(this.columnController.getValueColumns());\n var noUserAgg = !this.gridOptionsWrapper.getGroupRowAggNodesFunc();\n var changedPathActive = params.changedPath && params.changedPath.isActive();\n if (noValueColumns && noUserAgg && changedPathActive) {\n return;\n }\n var aggDetails = this.createAggDetails(params);\n this.recursivelyCreateAggData(aggDetails);\n };\n AggregationStage.prototype.createAggDetails = function (params) {\n var pivotActive = this.columnController.isPivotActive();\n var measureColumns = this.columnController.getValueColumns();\n var pivotColumns = pivotActive ? this.columnController.getPivotColumns() : [];\n var aggDetails = {\n changedPath: params.changedPath,\n valueColumns: measureColumns,\n pivotColumns: pivotColumns\n };\n return aggDetails;\n };\n AggregationStage.prototype.recursivelyCreateAggData = function (aggDetails) {\n var _this = this;\n var callback = function (rowNode) {\n var hasNoChildren = !rowNode.hasChildren();\n if (hasNoChildren) {\n // this check is needed for TreeData, in case the node is no longer a child,\n // but it was a child previously.\n if (rowNode.aggData) {\n rowNode.setAggData(null);\n }\n // never agg data for leaf nodes\n return;\n }\n //Optionally prevent the aggregation at the root Node\n //https://ag-grid.atlassian.net/browse/AG-388\n var isRootNode = rowNode.level === -1;\n if (isRootNode) {\n var notPivoting = !_this.columnController.isPivotMode();\n var suppressAggAtRootLevel = _this.gridOptionsWrapper.isSuppressAggAtRootLevel();\n if (suppressAggAtRootLevel && notPivoting) {\n return;\n }\n }\n _this.aggregateRowNode(rowNode, aggDetails);\n };\n aggDetails.changedPath.forEachChangedNodeDepthFirst(callback, true);\n };\n AggregationStage.prototype.aggregateRowNode = function (rowNode, aggDetails) {\n var measureColumnsMissing = aggDetails.valueColumns.length === 0;\n var pivotColumnsMissing = aggDetails.pivotColumns.length === 0;\n var userFunc = this.gridOptionsWrapper.getGroupRowAggNodesFunc();\n var aggResult;\n if (userFunc) {\n aggResult = userFunc(rowNode.childrenAfterFilter);\n }\n else if (measureColumnsMissing) {\n aggResult = null;\n }\n else if (pivotColumnsMissing) {\n aggResult = this.aggregateRowNodeUsingValuesOnly(rowNode, aggDetails);\n }\n else {\n aggResult = this.aggregateRowNodeUsingValuesAndPivot(rowNode);\n }\n rowNode.setAggData(aggResult);\n // if we are grouping, then it's possible there is a sibling footer\n // to the group, so update the data here also if there is one\n if (rowNode.sibling) {\n rowNode.sibling.setAggData(aggResult);\n }\n };\n AggregationStage.prototype.aggregateRowNodeUsingValuesAndPivot = function (rowNode) {\n var _this = this;\n var result = {};\n var pivotColumnDefs = this.pivotStage.getPivotColumnDefs();\n // Step 1: process value columns\n pivotColumnDefs\n .filter(function (v) { return !core_1._.exists(v.pivotTotalColumnIds); }) // only process pivot value columns\n .forEach(function (valueColDef) {\n var keys = valueColDef.pivotKeys || [];\n var values;\n var valueColumn = valueColDef.pivotValueColumn;\n var colId = valueColDef.colId;\n if (rowNode.leafGroup) {\n // lowest level group, get the values from the mapped set\n values = _this.getValuesFromMappedSet(rowNode.childrenMapped, keys, valueColumn);\n }\n else {\n // value columns and pivot columns, non-leaf group\n values = _this.getValuesPivotNonLeaf(rowNode, colId);\n }\n result[colId] = _this.aggregateValues(values, valueColumn.getAggFunc());\n });\n // Step 2: process total columns\n pivotColumnDefs\n .filter(function (v) { return core_1._.exists(v.pivotTotalColumnIds); }) // only process pivot total columns\n .forEach(function (totalColDef) {\n var aggResults = [];\n var pivotValueColumn = totalColDef.pivotValueColumn, pivotTotalColumnIds = totalColDef.pivotTotalColumnIds, colId = totalColDef.colId;\n //retrieve results for colIds associated with this pivot total column\n if (!pivotTotalColumnIds || !pivotTotalColumnIds.length) {\n return;\n }\n pivotTotalColumnIds.forEach(function (colId) {\n aggResults.push(result[colId]);\n });\n result[colId] = _this.aggregateValues(aggResults, pivotValueColumn.getAggFunc());\n });\n return result;\n };\n AggregationStage.prototype.aggregateRowNodeUsingValuesOnly = function (rowNode, aggDetails) {\n var _this = this;\n var result = {};\n var changedValueColumns = aggDetails.changedPath.isActive() ?\n aggDetails.changedPath.getValueColumnsForNode(rowNode, aggDetails.valueColumns)\n : aggDetails.valueColumns;\n var notChangedValueColumns = aggDetails.changedPath.isActive() ?\n aggDetails.changedPath.getNotValueColumnsForNode(rowNode, aggDetails.valueColumns)\n : null;\n var values2d = this.getValuesNormal(rowNode, changedValueColumns);\n var oldValues = rowNode.aggData;\n changedValueColumns.forEach(function (valueColumn, index) {\n result[valueColumn.getId()] = _this.aggregateValues(values2d[index], valueColumn.getAggFunc());\n });\n if (notChangedValueColumns && oldValues) {\n notChangedValueColumns.forEach(function (valueColumn) {\n result[valueColumn.getId()] = oldValues[valueColumn.getId()];\n });\n }\n return result;\n };\n AggregationStage.prototype.getValuesPivotNonLeaf = function (rowNode, colId) {\n var values = [];\n rowNode.childrenAfterFilter.forEach(function (node) {\n var value = node.aggData[colId];\n values.push(value);\n });\n return values;\n };\n AggregationStage.prototype.getValuesFromMappedSet = function (mappedSet, keys, valueColumn) {\n var _this = this;\n var mapPointer = mappedSet;\n keys.forEach(function (key) { return (mapPointer = mapPointer ? mapPointer[key] : null); });\n if (!mapPointer) {\n return [];\n }\n var values = [];\n mapPointer.forEach(function (rowNode) {\n var value = _this.valueService.getValue(valueColumn, rowNode);\n values.push(value);\n });\n return values;\n };\n AggregationStage.prototype.getValuesNormal = function (rowNode, valueColumns) {\n // create 2d array, of all values for all valueColumns\n var values = [];\n valueColumns.forEach(function () { return values.push([]); });\n var valueColumnCount = valueColumns.length;\n var rowCount = rowNode.childrenAfterFilter.length;\n for (var i = 0; i < rowCount; i++) {\n var childNode = rowNode.childrenAfterFilter[i];\n for (var j = 0; j < valueColumnCount; j++) {\n var valueColumn = valueColumns[j];\n // if the row is a group, then it will only have an agg result value,\n // which means valueGetter is never used.\n var value = this.valueService.getValue(valueColumn, childNode);\n values[j].push(value);\n }\n }\n return values;\n };\n AggregationStage.prototype.aggregateValues = function (values, aggFuncOrString) {\n var aggFunction = typeof aggFuncOrString === 'string' ?\n this.aggFuncService.getAggFunc(aggFuncOrString) :\n aggFuncOrString;\n if (typeof aggFunction !== 'function') {\n console.error(\"ag-Grid: unrecognised aggregation function \" + aggFuncOrString);\n return null;\n }\n return aggFunction(values);\n };\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], AggregationStage.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], AggregationStage.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('valueService')\n ], AggregationStage.prototype, \"valueService\", void 0);\n __decorate([\n core_1.Autowired('pivotStage')\n ], AggregationStage.prototype, \"pivotStage\", void 0);\n __decorate([\n core_1.Autowired('aggFuncService')\n ], AggregationStage.prototype, \"aggFuncService\", void 0);\n AggregationStage = __decorate([\n core_1.Bean('aggregationStage')\n ], AggregationStage);\n return AggregationStage;\n}());\nexports.AggregationStage = AggregationStage;\n//# sourceMappingURL=aggregationStage.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar GroupStage = /** @class */ (function () {\n function GroupStage() {\n // we use a sequence variable so that each time we do a grouping, we don't\n // reuse the ids - otherwise the rowRenderer will confuse rowNodes between redraws\n // when it tries to animate between rows. we set to -1 as others row id 0 will be shared\n // with the other rows.\n this.groupIdSequence = new core_1.NumberSequence(1);\n }\n GroupStage.prototype.postConstruct = function () {\n this.usingTreeData = this.gridOptionsWrapper.isTreeData();\n if (this.usingTreeData) {\n this.getDataPath = this.gridOptionsWrapper.getDataPathFunc();\n }\n };\n GroupStage.prototype.execute = function (params) {\n var details = this.createGroupingDetails(params);\n if (details.transaction) {\n this.handleTransaction(details);\n }\n else {\n var afterColsChanged = params.afterColumnsChanged === true;\n this.shotgunResetEverything(details, afterColsChanged);\n }\n this.sortGroupsWithComparator(details.rootNode);\n this.selectableService.updateSelectableAfterGrouping(details.rootNode);\n };\n GroupStage.prototype.createGroupingDetails = function (params) {\n var rowNode = params.rowNode, changedPath = params.changedPath, rowNodeTransaction = params.rowNodeTransaction, rowNodeOrder = params.rowNodeOrder;\n var groupedCols = this.usingTreeData ? null : this.columnController.getRowGroupColumns();\n var isGrouping = this.usingTreeData || (groupedCols && groupedCols.length > 0);\n var usingTransaction = isGrouping && core_1._.exists(rowNodeTransaction);\n var details = {\n // someone complained that the parent attribute was causing some change detection\n // to break is some angular add-on - which i never used. taking the parent out breaks\n // a cyclic dependency, hence this flag got introduced.\n includeParents: !this.gridOptionsWrapper.isSuppressParentsInRowNodes(),\n expandByDefault: this.gridOptionsWrapper.isGroupSuppressRow() ?\n -1 : this.gridOptionsWrapper.getGroupDefaultExpanded(),\n groupedCols: groupedCols,\n rootNode: rowNode,\n pivotMode: this.columnController.isPivotMode(),\n groupedColCount: this.usingTreeData || !groupedCols ? 0 : groupedCols.length,\n rowNodeOrder: rowNodeOrder,\n // important not to do transaction if we are not grouping, as otherwise the 'insert index' is ignored.\n // ie, if not grouping, then we just want to shotgun so the rootNode.allLeafChildren gets copied\n // to rootNode.childrenAfterGroup and maintaining order (as delta transaction misses the order).\n transaction: usingTransaction ? rowNodeTransaction : null,\n // if no transaction, then it's shotgun, changed path would be 'not active' at this point anyway\n changedPath: changedPath\n };\n return details;\n };\n GroupStage.prototype.handleTransaction = function (details) {\n var tran = details.transaction;\n if (tran.add) {\n this.insertNodes(tran.add, details, false);\n }\n if (tran.update) {\n this.moveNodesInWrongPath(tran.update, details);\n }\n if (tran.remove) {\n this.removeNodes(tran.remove, details);\n }\n if (details.rowNodeOrder) {\n this.sortChildren(details);\n }\n };\n // this is used when doing delta updates, eg Redux, keeps nodes in right order\n GroupStage.prototype.sortChildren = function (details) {\n details.changedPath.forEachChangedNodeDepthFirst(function (rowNode) {\n core_1._.sortRowNodesByOrder(rowNode.childrenAfterGroup, details.rowNodeOrder);\n });\n };\n GroupStage.prototype.sortGroupsWithComparator = function (rootNode) {\n // we don't do group sorting for tree data\n if (this.usingTreeData) {\n return;\n }\n var comparator = this.gridOptionsWrapper.getDefaultGroupSortComparator();\n if (core_1._.exists(comparator)) {\n recursiveSort(rootNode);\n }\n function recursiveSort(rowNode) {\n var doSort = core_1._.exists(rowNode.childrenAfterGroup) &&\n // we only want to sort groups, so we do not sort leafs (a leaf group has leafs as children)\n !rowNode.leafGroup;\n if (doSort) {\n rowNode.childrenAfterGroup.sort(comparator);\n rowNode.childrenAfterGroup.forEach(function (childNode) { return recursiveSort(childNode); });\n }\n }\n };\n GroupStage.prototype.getExistingPathForNode = function (node, details) {\n var res = [];\n // when doing tree data, the node is part of the path,\n // but when doing grid grouping, the node is not part of the path so we start with the parent.\n var pointer = this.usingTreeData ? node : node.parent;\n while (pointer && pointer !== details.rootNode) {\n res.push({\n key: pointer.key,\n rowGroupColumn: pointer.rowGroupColumn,\n field: pointer.field\n });\n pointer = pointer.parent;\n }\n res.reverse();\n return res;\n };\n GroupStage.prototype.moveNodesInWrongPath = function (childNodes, details) {\n var _this = this;\n childNodes.forEach(function (childNode) {\n // we add node, even if parent has not changed, as the data could have\n // changed, hence aggregations will be wrong\n if (details.changedPath.isActive()) {\n details.changedPath.addParentNode(childNode.parent);\n }\n var infoToKeyMapper = function (item) { return item.key; };\n var oldPath = _this.getExistingPathForNode(childNode, details).map(infoToKeyMapper);\n var newPath = _this.getGroupInfo(childNode, details).map(infoToKeyMapper);\n var nodeInCorrectPath = core_1._.compareArrays(oldPath, newPath);\n if (!nodeInCorrectPath) {\n _this.moveNode(childNode, details);\n }\n });\n };\n GroupStage.prototype.moveNode = function (childNode, details) {\n this.removeNodesInStages([childNode], details);\n this.insertOneNode(childNode, details, true);\n // hack - if we didn't do this, then renaming a tree item (ie changing rowNode.key) wouldn't get\n // refreshed into the gui.\n // this is needed to kick off the event that rowComp listens to for refresh. this in turn\n // then will get each cell in the row to refresh - which is what we need as we don't know which\n // columns will be displaying the rowNode.key info.\n childNode.setData(childNode.data);\n // we add both old and new parents to changed path, as both will need to be refreshed.\n // we already added the old parent (in calling method), so just add the new parent here\n if (details.changedPath.isActive()) {\n var newParent = childNode.parent;\n details.changedPath.addParentNode(newParent);\n }\n };\n GroupStage.prototype.removeNodes = function (leafRowNodes, details) {\n this.removeNodesInStages(leafRowNodes, details);\n if (details.changedPath.isActive()) {\n leafRowNodes.forEach(function (rowNode) { return details.changedPath.addParentNode(rowNode.parent); });\n }\n };\n GroupStage.prototype.removeNodesInStages = function (leafRowNodes, details) {\n this.removeNodesFromParents(leafRowNodes, details);\n this.postRemoveCreateFillerNodes(leafRowNodes, details);\n this.postRemoveRemoveEmptyGroups(leafRowNodes, details);\n };\n GroupStage.prototype.forEachParentGroup = function (details, child, callback) {\n var pointer = child.parent;\n while (pointer && pointer !== details.rootNode) {\n callback(pointer);\n pointer = pointer.parent;\n }\n };\n GroupStage.prototype.removeNodesFromParents = function (nodesToRemove, details) {\n var _this = this;\n var batchRemover = new BatchRemover();\n nodesToRemove.forEach(function (nodeToRemove) {\n _this.removeFromParent(nodeToRemove, batchRemover);\n // remove from allLeafChildren. we clear down all parents EXCEPT the Root Node, as\n // the ClientSideNodeManager is responsible for the Root Node.\n _this.forEachParentGroup(details, nodeToRemove, function (parentNode) {\n batchRemover.removeFromAllLeafChildren(parentNode, nodeToRemove);\n });\n });\n batchRemover.flush();\n };\n GroupStage.prototype.postRemoveCreateFillerNodes = function (nodesToRemove, details) {\n var _this = this;\n nodesToRemove.forEach(function (nodeToRemove) {\n // if not group, and children are present, need to move children to a group.\n // otherwise if no children, we can just remove without replacing.\n var replaceWithGroup = nodeToRemove.hasChildren();\n if (replaceWithGroup) {\n var oldPath = _this.getExistingPathForNode(nodeToRemove, details);\n // because we just removed the userGroup, this will always return new support group\n var newGroupNode_1 = _this.findParentForNode(nodeToRemove, oldPath, details);\n // these properties are the ones that will be incorrect in the newly created group,\n // so copy them from the old childNode\n newGroupNode_1.expanded = nodeToRemove.expanded;\n newGroupNode_1.allLeafChildren = nodeToRemove.allLeafChildren;\n newGroupNode_1.childrenAfterGroup = nodeToRemove.childrenAfterGroup;\n newGroupNode_1.childrenMapped = nodeToRemove.childrenMapped;\n newGroupNode_1.childrenAfterGroup.forEach(function (rowNode) { return rowNode.parent = newGroupNode_1; });\n }\n });\n };\n GroupStage.prototype.postRemoveRemoveEmptyGroups = function (nodesToRemove, details) {\n var _this = this;\n // we do this multiple times, as when we remove groups, that means the parent of just removed\n // group can then be empty. to get around this, if we remove, then we check everything again for\n // newly emptied groups. the max number of times this will execute is the depth of the group tree.\n var checkAgain = true;\n var groupShouldBeRemoved = function (rowNode) {\n // because of the while loop below, it's possible we already moved the node,\n // so double check before trying to remove again.\n var mapKey = _this.getChildrenMappedKey(rowNode.key, rowNode.rowGroupColumn);\n var parentRowNode = rowNode.parent;\n var groupAlreadyRemoved = (parentRowNode && parentRowNode.childrenMapped) ?\n !parentRowNode.childrenMapped[mapKey] : true;\n if (groupAlreadyRemoved) {\n // if not linked, then group was already removed\n return false;\n }\n else {\n // if still not removed, then we remove if this group is empty\n return rowNode.isEmptyRowGroupNode();\n }\n };\n var _loop_1 = function () {\n checkAgain = false;\n var batchRemover = new BatchRemover();\n nodesToRemove.forEach(function (nodeToRemove) {\n // remove empty groups\n _this.forEachParentGroup(details, nodeToRemove, function (rowNode) {\n if (groupShouldBeRemoved(rowNode)) {\n checkAgain = true;\n _this.removeFromParent(rowNode, batchRemover);\n // we remove selection on filler nodes here, as the selection would not be removed\n // from the RowNodeManager, as filler nodes don't exist on the RowNodeManager\n rowNode.setSelected(false);\n }\n });\n });\n batchRemover.flush();\n };\n while (checkAgain) {\n _loop_1();\n }\n };\n // removes the node from the parent by:\n // a) removing from childrenAfterGroup (using batchRemover if present, otherwise immediately)\n // b) removing from childrenMapped (immediately)\n // c) setRowTop(null) - as the rowRenderer uses this to know the RowNode is no longer needed\n GroupStage.prototype.removeFromParent = function (child, batchRemover) {\n if (child.parent) {\n if (batchRemover) {\n batchRemover.removeFromChildrenAfterGroup(child.parent, child);\n }\n else {\n core_1._.removeFromArray(child.parent.childrenAfterGroup, child);\n }\n }\n var mapKey = this.getChildrenMappedKey(child.key, child.rowGroupColumn);\n if (child.parent && child.parent.childrenMapped) {\n child.parent.childrenMapped[mapKey] = undefined;\n }\n // this is important for transition, see rowComp removeFirstPassFuncs. when doing animation and\n // remove, if rowTop is still present, the rowComp thinks it's just moved position.\n child.setRowTop(null);\n };\n GroupStage.prototype.addToParent = function (child, parent) {\n var mapKey = this.getChildrenMappedKey(child.key, child.rowGroupColumn);\n if (parent) {\n if (parent.childrenMapped) {\n parent.childrenMapped[mapKey] = child;\n }\n parent.childrenAfterGroup.push(child);\n }\n };\n GroupStage.prototype.areGroupColsEqual = function (d1, d2) {\n if (d1 == null || d2 == null) {\n return false;\n }\n if (d1.pivotMode !== d2.pivotMode) {\n return false;\n }\n if (!core_1._.compareArrays(d1.groupedCols, d2.groupedCols)) {\n return false;\n }\n return true;\n };\n GroupStage.prototype.shotgunResetEverything = function (details, afterColumnsChanged) {\n var skipStage = afterColumnsChanged ?\n this.usingTreeData || this.areGroupColsEqual(details, this.oldGroupingDetails)\n : false;\n this.oldGroupingDetails = details;\n if (skipStage) {\n return;\n }\n // because we are not creating the root node each time, we have the logic\n // here to change leafGroup once.\n // we set .leafGroup to false for tree data, as .leafGroup is only used when pivoting, and pivoting\n // isn't allowed with treeData, so the grid never actually use .leafGroup when doing treeData.\n details.rootNode.leafGroup = this.usingTreeData ? false : details.groupedCols.length === 0;\n // we are doing everything from scratch, so reset childrenAfterGroup and childrenMapped from the rootNode\n details.rootNode.childrenAfterGroup = [];\n details.rootNode.childrenMapped = {};\n this.insertNodes(details.rootNode.allLeafChildren, details, false);\n };\n GroupStage.prototype.insertNodes = function (newRowNodes, details, isMove) {\n var _this = this;\n newRowNodes.forEach(function (rowNode) {\n _this.insertOneNode(rowNode, details, isMove);\n if (details.changedPath.isActive()) {\n details.changedPath.addParentNode(rowNode.parent);\n }\n });\n };\n GroupStage.prototype.insertOneNode = function (childNode, details, isMove) {\n var path = this.getGroupInfo(childNode, details);\n var parentGroup = this.findParentForNode(childNode, path, details);\n if (!parentGroup.group) {\n console.warn(\"ag-Grid: duplicate group keys for row data, keys should be unique\", [parentGroup.data, childNode.data]);\n }\n if (this.usingTreeData) {\n this.swapGroupWithUserNode(parentGroup, childNode, isMove);\n }\n else {\n childNode.parent = parentGroup;\n childNode.level = path.length;\n parentGroup.childrenAfterGroup.push(childNode);\n }\n };\n GroupStage.prototype.findParentForNode = function (childNode, path, details) {\n var _this = this;\n var nextNode = details.rootNode;\n path.forEach(function (groupInfo, level) {\n nextNode = _this.getOrCreateNextNode(nextNode, groupInfo, level, details);\n // node gets added to all group nodes.\n // note: we do not add to rootNode here, as the rootNode is the master list of rowNodes\n nextNode.allLeafChildren.push(childNode);\n });\n return nextNode;\n };\n GroupStage.prototype.swapGroupWithUserNode = function (fillerGroup, userGroup, isMove) {\n userGroup.parent = fillerGroup.parent;\n userGroup.key = fillerGroup.key;\n userGroup.field = fillerGroup.field;\n userGroup.groupData = fillerGroup.groupData;\n userGroup.level = fillerGroup.level;\n // AG-3441 - preserve the existing expanded status of the node if we're moving it, so that\n // you can drag a sub tree from one parent to another without changing its expansion\n if (!isMove) {\n userGroup.expanded = fillerGroup.expanded;\n }\n // we set .leafGroup to false for tree data, as .leafGroup is only used when pivoting, and pivoting\n // isn't allowed with treeData, so the grid never actually use .leafGroup when doing treeData.\n userGroup.leafGroup = fillerGroup.leafGroup;\n // always null for userGroups, as row grouping is not allowed when doing tree data\n userGroup.rowGroupIndex = fillerGroup.rowGroupIndex;\n userGroup.allLeafChildren = fillerGroup.allLeafChildren;\n userGroup.childrenAfterGroup = fillerGroup.childrenAfterGroup;\n userGroup.childrenMapped = fillerGroup.childrenMapped;\n this.removeFromParent(fillerGroup);\n userGroup.childrenAfterGroup.forEach(function (rowNode) { return rowNode.parent = userGroup; });\n this.addToParent(userGroup, fillerGroup.parent);\n };\n GroupStage.prototype.getOrCreateNextNode = function (parentGroup, groupInfo, level, details) {\n var mapKey = this.getChildrenMappedKey(groupInfo.key, groupInfo.rowGroupColumn);\n var nextNode = parentGroup.childrenMapped ? parentGroup.childrenMapped[mapKey] : undefined;\n if (!nextNode) {\n nextNode = this.createGroup(groupInfo, parentGroup, level, details);\n // attach the new group to the parent\n this.addToParent(nextNode, parentGroup);\n }\n return nextNode;\n };\n GroupStage.prototype.createGroup = function (groupInfo, parent, level, details) {\n var _this = this;\n var groupNode = new core_1.RowNode();\n this.context.wireBean(groupNode);\n groupNode.group = true;\n groupNode.field = groupInfo.field;\n groupNode.rowGroupColumn = groupInfo.rowGroupColumn;\n groupNode.groupData = {};\n var groupDisplayCols = this.columnController.getGroupDisplayColumns();\n groupDisplayCols.forEach(function (col) {\n // newGroup.rowGroupColumn=null when working off GroupInfo, and we always display the group in the group column\n // if rowGroupColumn is present, then it's grid row grouping and we only include if configuration says so\n var displayGroupForCol = _this.usingTreeData || (groupNode.rowGroupColumn ? col.isRowGroupDisplayed(groupNode.rowGroupColumn.getId()) : false);\n if (displayGroupForCol) {\n groupNode.groupData[col.getColId()] = groupInfo.key;\n }\n });\n // we use negative number for the ids of the groups, this makes sure we don't clash with the\n // id's of the leaf nodes.\n groupNode.id = (this.groupIdSequence.next() * -1).toString();\n groupNode.key = groupInfo.key;\n groupNode.level = level;\n groupNode.leafGroup = this.usingTreeData ? false : level === (details.groupedColCount - 1);\n // if doing pivoting, then the leaf group is never expanded,\n // as we do not show leaf rows\n if (details.pivotMode && groupNode.leafGroup) {\n groupNode.expanded = false;\n }\n else {\n groupNode.expanded = this.isExpanded(details.expandByDefault, level);\n }\n groupNode.allLeafChildren = [];\n // why is this done here? we are not updating the children could as we go,\n // i suspect this is updated in the filter stage\n groupNode.setAllChildrenCount(0);\n groupNode.rowGroupIndex = this.usingTreeData ? null : level;\n groupNode.childrenAfterGroup = [];\n groupNode.childrenMapped = {};\n groupNode.parent = details.includeParents ? parent : null;\n return groupNode;\n };\n GroupStage.prototype.getChildrenMappedKey = function (key, rowGroupColumn) {\n if (rowGroupColumn) {\n // grouping by columns\n return rowGroupColumn.getId() + '-' + key;\n }\n else {\n // tree data - we don't have rowGroupColumns\n return key;\n }\n };\n GroupStage.prototype.isExpanded = function (expandByDefault, level) {\n if (expandByDefault === -1) {\n return true;\n }\n else {\n return level < expandByDefault;\n }\n };\n GroupStage.prototype.getGroupInfo = function (rowNode, details) {\n if (this.usingTreeData) {\n return this.getGroupInfoFromCallback(rowNode);\n }\n else {\n return this.getGroupInfoFromGroupColumns(rowNode, details);\n }\n };\n GroupStage.prototype.getGroupInfoFromCallback = function (rowNode) {\n var keys = this.getDataPath ? this.getDataPath(rowNode.data) : null;\n if (keys === null || keys === undefined || keys.length === 0) {\n core_1._.doOnce(function () { return console.warn(\"getDataPath() should not return an empty path for data\", rowNode.data); }, 'groupStage.getGroupInfoFromCallback');\n }\n var groupInfoMapper = function (key) { return ({ key: key, field: null, rowGroupColumn: null }); };\n return keys ? keys.map(groupInfoMapper) : [];\n };\n GroupStage.prototype.getGroupInfoFromGroupColumns = function (rowNode, details) {\n var _this = this;\n var res = [];\n details.groupedCols.forEach(function (groupCol) {\n var key = _this.valueService.getKeyForNode(groupCol, rowNode);\n var keyExists = key !== null && key !== undefined;\n // unbalanced tree and pivot mode don't work together - not because of the grid, it doesn't make\n // mathematical sense as you are building up a cube. so if pivot mode, we put in a blank key where missing.\n // this keeps the tree balanced and hence can be represented as a group.\n if (details.pivotMode && !keyExists) {\n key = ' ';\n keyExists = true;\n }\n if (keyExists) {\n var item = {\n key: key,\n field: groupCol.getColDef().field,\n rowGroupColumn: groupCol\n };\n res.push(item);\n }\n });\n return res;\n };\n __decorate([\n core_1.Autowired('selectionController')\n ], GroupStage.prototype, \"selectionController\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], GroupStage.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], GroupStage.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('selectableService')\n ], GroupStage.prototype, \"selectableService\", void 0);\n __decorate([\n core_1.Autowired('valueService')\n ], GroupStage.prototype, \"valueService\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], GroupStage.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('context')\n ], GroupStage.prototype, \"context\", void 0);\n __decorate([\n core_1.PostConstruct\n ], GroupStage.prototype, \"postConstruct\", null);\n GroupStage = __decorate([\n core_1.Bean('groupStage')\n ], GroupStage);\n return GroupStage;\n}());\nexports.GroupStage = GroupStage;\n// doing _.removeFromArray() multiple times on a large list can be a bottleneck.\n// when doing large deletes (eg removing 1,000 rows) then we would be calling _.removeFromArray()\n// a thousands of times, in particular RootNode.allGroupChildren could be a large list, and\n// 1,000 removes is time consuming as each one requires traversing the full list.\n// to get around this, we do all the removes in a batch. this class manages the batch.\n//\n// This problem was brought to light by a client (AG-2879), with dataset of 20,000\n// in 10,000 groups (2 items per group), then deleting all rows with transaction,\n// it took about 20 seconds to delete. with the BathRemoved, the reduced to less than 1 second.\nvar BatchRemover = /** @class */ (function () {\n function BatchRemover() {\n this.allSets = {};\n this.allParents = [];\n }\n BatchRemover.prototype.removeFromChildrenAfterGroup = function (parent, child) {\n var set = this.getSet(parent);\n set.removeFromChildrenAfterGroup[child.id] = true;\n };\n BatchRemover.prototype.removeFromAllLeafChildren = function (parent, child) {\n var set = this.getSet(parent);\n set.removeFromAllLeafChildren[child.id] = true;\n };\n BatchRemover.prototype.getSet = function (parent) {\n if (!this.allSets[parent.id]) {\n this.allSets[parent.id] = {\n removeFromAllLeafChildren: {},\n removeFromChildrenAfterGroup: {}\n };\n this.allParents.push(parent);\n }\n return this.allSets[parent.id];\n };\n BatchRemover.prototype.flush = function () {\n var _this = this;\n this.allParents.forEach(function (parent) {\n var nodeDetails = _this.allSets[parent.id];\n parent.childrenAfterGroup = parent.childrenAfterGroup.filter(function (child) {\n var res = !nodeDetails.removeFromChildrenAfterGroup[child.id];\n return res;\n });\n parent.allLeafChildren = parent.allLeafChildren.filter(function (child) { return !nodeDetails.removeFromAllLeafChildren[child.id]; });\n });\n this.allSets = {};\n this.allParents.length = 0;\n };\n return BatchRemover;\n}());\n//# sourceMappingURL=groupStage.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar PivotColDefService = /** @class */ (function () {\n function PivotColDefService() {\n }\n PivotColDefService.prototype.createPivotColumnDefs = function (uniqueValues) {\n // this is passed to the columnController, to configure the columns and groups we show\n var pivotColumnGroupDefs = [];\n // this is used by the aggregation stage, to do the aggregation based on the pivot columns\n var pivotColumnDefs = [];\n var pivotColumns = this.columnController.getPivotColumns();\n var valueColumns = this.columnController.getValueColumns();\n var levelsDeep = pivotColumns.length;\n var columnIdSequence = new core_1.NumberSequence();\n this.recursivelyAddGroup(pivotColumnGroupDefs, pivotColumnDefs, 1, uniqueValues, [], columnIdSequence, levelsDeep, pivotColumns);\n this.addRowGroupTotals(pivotColumnGroupDefs, pivotColumnDefs, valueColumns, pivotColumns, columnIdSequence);\n this.addPivotTotalsToGroups(pivotColumnGroupDefs, pivotColumnDefs, columnIdSequence);\n // we clone, so the colDefs in pivotColumnsGroupDefs and pivotColumnDefs are not shared. this is so that\n // any changes the user makes (via processSecondaryColumnDefinitions) don't impact the internal aggregations,\n // as these use the col defs also\n var pivotColumnDefsClone = pivotColumnDefs.map(function (colDef) { return core_1._.cloneObject(colDef); });\n return {\n pivotColumnGroupDefs: pivotColumnGroupDefs,\n pivotColumnDefs: pivotColumnDefsClone\n };\n };\n // parentChildren - the list of colDefs we are adding to\n // @index - how far the column is from the top (also same as pivotKeys.length)\n // @uniqueValues - the values for which we should create a col for\n // @pivotKeys - the keys for the pivot, eg if pivoting on {Language,Country} then could be {English,Ireland}\n PivotColDefService.prototype.recursivelyAddGroup = function (parentChildren, pivotColumnDefs, index, uniqueValues, pivotKeys, columnIdSequence, levelsDeep, primaryPivotColumns) {\n var _this = this;\n core_1._.iterateObject(uniqueValues, function (key, value) {\n var newPivotKeys = pivotKeys.slice(0);\n newPivotKeys.push(key);\n var createGroup = index !== levelsDeep;\n if (createGroup) {\n var groupDef = {\n children: [],\n headerName: key,\n pivotKeys: newPivotKeys,\n columnGroupShow: 'open',\n groupId: 'pivot' + columnIdSequence.next()\n };\n parentChildren.push(groupDef);\n _this.recursivelyAddGroup(groupDef.children, pivotColumnDefs, index + 1, value, newPivotKeys, columnIdSequence, levelsDeep, primaryPivotColumns);\n }\n else {\n var measureColumns = _this.columnController.getValueColumns();\n var valueGroup_1 = {\n children: [],\n headerName: key,\n pivotKeys: newPivotKeys,\n columnGroupShow: 'open',\n groupId: 'pivot' + columnIdSequence.next()\n };\n // if no value columns selected, then we insert one blank column, so the user at least sees columns\n // rendered. otherwise the grid would render with no columns (just empty groups) which would give the\n // impression that the grid is broken\n if (measureColumns.length === 0) {\n // this is the blank column, for when no value columns enabled.\n var colDef_1 = _this.createColDef(null, '-', newPivotKeys, columnIdSequence);\n valueGroup_1.children.push(colDef_1);\n pivotColumnDefs.push(colDef_1);\n }\n else {\n measureColumns.forEach(function (measureColumn) {\n var columnName = _this.columnController.getDisplayNameForColumn(measureColumn, 'header');\n var colDef = _this.createColDef(measureColumn, columnName, newPivotKeys, columnIdSequence);\n colDef.columnGroupShow = 'open';\n valueGroup_1.children.push(colDef);\n pivotColumnDefs.push(colDef);\n });\n }\n parentChildren.push(valueGroup_1);\n }\n });\n // sort by either user provided comparator, or our own one\n var colDef = primaryPivotColumns[index - 1].getColDef();\n var userComparator = colDef.pivotComparator;\n var comparator = this.headerNameComparator.bind(this, userComparator);\n parentChildren.sort(comparator);\n };\n PivotColDefService.prototype.addPivotTotalsToGroups = function (pivotColumnGroupDefs, pivotColumnDefs, columnIdSequence) {\n var _this = this;\n if (!this.gridOptionsWrapper.getPivotColumnGroupTotals()) {\n return;\n }\n var insertAfter = this.gridOptionsWrapper.getPivotColumnGroupTotals() === 'after';\n var valueCols = this.columnController.getValueColumns();\n var aggFuncs = valueCols.map(function (valueCol) { return valueCol.getAggFunc(); });\n // don't add pivot totals if there is less than 1 aggFunc or they are not all the same\n if (!aggFuncs || aggFuncs.length < 1 || !this.sameAggFuncs(aggFuncs)) {\n // console.warn('ag-Grid: aborting adding pivot total columns - value columns require same aggFunc');\n return;\n }\n // arbitrarily select a value column to use as a template for pivot columns\n var valueColumn = valueCols[0];\n pivotColumnGroupDefs.forEach(function (groupDef) {\n _this.recursivelyAddPivotTotal(groupDef, pivotColumnDefs, columnIdSequence, valueColumn, insertAfter);\n });\n };\n PivotColDefService.prototype.recursivelyAddPivotTotal = function (groupDef, pivotColumnDefs, columnIdSequence, valueColumn, insertAfter) {\n var _this = this;\n var group = groupDef;\n if (!group.children) {\n var def = groupDef;\n return def.colId ? [def.colId] : null;\n }\n var colIds = [];\n // need to recurse children first to obtain colIds used in the aggregation stage\n group.children\n .forEach(function (grp) {\n var childColIds = _this.recursivelyAddPivotTotal(grp, pivotColumnDefs, columnIdSequence, valueColumn, insertAfter);\n if (childColIds) {\n colIds = colIds.concat(childColIds);\n }\n });\n // only add total colDef if there is more than 1 child node\n if (group.children.length > 1) {\n //create total colDef using an arbitrary value column as a template\n var totalColDef = this.createColDef(valueColumn, 'Total', groupDef.pivotKeys, columnIdSequence);\n totalColDef.pivotTotalColumnIds = colIds;\n totalColDef.aggFunc = valueColumn.getAggFunc();\n // add total colDef to group and pivot colDefs array\n var children = groupDef.children;\n insertAfter ? children.push(totalColDef) : children.unshift(totalColDef);\n pivotColumnDefs.push(totalColDef);\n }\n return colIds;\n };\n PivotColDefService.prototype.addRowGroupTotals = function (pivotColumnGroupDefs, pivotColumnDefs, valueColumns, pivotColumns, columnIdSequence) {\n var _this = this;\n if (!this.gridOptionsWrapper.getPivotRowTotals()) {\n return;\n }\n var insertAfter = this.gridOptionsWrapper.getPivotRowTotals() === 'after';\n // order of row group totals depends on position\n var valueCols = insertAfter ? valueColumns.slice() : valueColumns.slice().reverse();\n var _loop_1 = function (i) {\n var valueCol = valueCols[i];\n var colIds = [];\n pivotColumnGroupDefs.forEach(function (groupDef) {\n colIds = colIds.concat(_this.extractColIdsForValueColumn(groupDef, valueCol));\n });\n var levelsDeep = pivotColumns.length;\n this_1.createRowGroupTotal(pivotColumnGroupDefs, pivotColumnDefs, 1, [], columnIdSequence, levelsDeep, pivotColumns, valueCol, colIds, insertAfter);\n };\n var this_1 = this;\n for (var i = 0; i < valueCols.length; i++) {\n _loop_1(i);\n }\n };\n PivotColDefService.prototype.extractColIdsForValueColumn = function (groupDef, valueColumn) {\n var _this = this;\n var group = groupDef;\n if (!group.children) {\n var colDef = group;\n return colDef.pivotValueColumn === valueColumn && colDef.colId ? [colDef.colId] : [];\n }\n var colIds = [];\n group.children\n .forEach(function (grp) {\n _this.extractColIdsForValueColumn(grp, valueColumn);\n var childColIds = _this.extractColIdsForValueColumn(grp, valueColumn);\n colIds = colIds.concat(childColIds);\n });\n return colIds;\n };\n PivotColDefService.prototype.createRowGroupTotal = function (parentChildren, pivotColumnDefs, index, pivotKeys, columnIdSequence, levelsDeep, primaryPivotColumns, valueColumn, colIds, insertAfter) {\n var newPivotKeys = pivotKeys.slice(0);\n var createGroup = index !== levelsDeep;\n if (createGroup) {\n var groupDef = {\n children: [],\n pivotKeys: newPivotKeys,\n groupId: 'pivot' + columnIdSequence.next()\n };\n insertAfter ? parentChildren.push(groupDef) : parentChildren.unshift(groupDef);\n this.createRowGroupTotal(groupDef.children, pivotColumnDefs, index + 1, newPivotKeys, columnIdSequence, levelsDeep, primaryPivotColumns, valueColumn, colIds, insertAfter);\n }\n else {\n var measureColumns = this.columnController.getValueColumns();\n var valueGroup = {\n children: [],\n pivotKeys: newPivotKeys,\n groupId: 'pivot' + columnIdSequence.next()\n };\n if (measureColumns.length === 0) {\n var colDef = this.createColDef(null, '-', newPivotKeys, columnIdSequence);\n valueGroup.children.push(colDef);\n pivotColumnDefs.push(colDef);\n }\n else {\n var columnName = this.columnController.getDisplayNameForColumn(valueColumn, 'header');\n var colDef = this.createColDef(valueColumn, columnName, newPivotKeys, columnIdSequence);\n colDef.pivotTotalColumnIds = colIds;\n valueGroup.children.push(colDef);\n pivotColumnDefs.push(colDef);\n }\n insertAfter ? parentChildren.push(valueGroup) : parentChildren.unshift(valueGroup);\n }\n };\n PivotColDefService.prototype.createColDef = function (valueColumn, headerName, pivotKeys, columnIdSequence) {\n var colDef = {};\n if (valueColumn) {\n var colDefToCopy = valueColumn.getColDef();\n core_1._.assign(colDef, colDefToCopy);\n // even if original column was hidden, we always show the pivot value column, otherwise it would be\n // very confusing for people thinking the pivot is broken\n colDef.hide = false;\n }\n colDef.headerName = headerName;\n colDef.colId = 'pivot_' + columnIdSequence.next();\n // pivot columns repeat over field, so it makes sense to use the unique id instead. For example if you want to\n // assign values to pinned bottom rows using setPinnedBottomRowData the value service will use this colId.\n colDef.field = colDef.colId;\n colDef.pivotKeys = pivotKeys;\n colDef.pivotValueColumn = valueColumn;\n colDef.filter = false;\n return colDef;\n };\n PivotColDefService.prototype.sameAggFuncs = function (aggFuncs) {\n if (aggFuncs.length == 1) {\n return true;\n }\n //check if all aggFunc's match\n for (var i = 1; i < aggFuncs.length; i++) {\n if (aggFuncs[i] !== aggFuncs[0]) {\n return false;\n }\n }\n return true;\n };\n PivotColDefService.prototype.headerNameComparator = function (userComparator, a, b) {\n if (userComparator) {\n return userComparator(a.headerName, b.headerName);\n }\n else {\n if (a.headerName && !b.headerName) {\n return 1;\n }\n else if (!a.headerName && b.headerName) {\n return -1;\n }\n // slightly naff here - just to satify typescript\n // really should be &&, but if so ts complains\n // the above if/else checks would deal with either being falsy, so at this stage if either are falsy, both are\n // ..still naff though\n if (!a.headerName || !b.headerName) {\n return 0;\n }\n if (a.headerName < b.headerName) {\n return -1;\n }\n else if (a.headerName > b.headerName) {\n return 1;\n }\n else {\n return 0;\n }\n }\n };\n __decorate([\n core_1.Autowired('columnController')\n ], PivotColDefService.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], PivotColDefService.prototype, \"gridOptionsWrapper\", void 0);\n PivotColDefService = __decorate([\n core_1.Bean('pivotColDefService')\n ], PivotColDefService);\n return PivotColDefService;\n}());\nexports.PivotColDefService = PivotColDefService;\n//# sourceMappingURL=pivotColDefService.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar PivotStage = /** @class */ (function () {\n function PivotStage() {\n this.uniqueValues = {};\n }\n PivotStage.prototype.execute = function (params) {\n var rootNode = params.rowNode;\n var changedPath = params.changedPath;\n if (this.columnController.isPivotActive()) {\n this.executePivotOn(rootNode, changedPath);\n }\n else {\n this.executePivotOff(changedPath);\n }\n };\n PivotStage.prototype.executePivotOff = function (changedPath) {\n this.aggregationColumnsHashLastTime = null;\n this.uniqueValues = {};\n if (this.columnController.isSecondaryColumnsPresent()) {\n this.columnController.setSecondaryColumns(null, \"rowModelUpdated\");\n if (changedPath) {\n changedPath.setInactive();\n }\n }\n };\n PivotStage.prototype.executePivotOn = function (rootNode, changedPath) {\n var uniqueValues = this.bucketUpRowNodes(rootNode);\n var uniqueValuesChanged = this.setUniqueValues(uniqueValues);\n var aggregationColumns = this.columnController.getValueColumns();\n var aggregationColumnsHash = aggregationColumns.map(function (column) { return column.getId(); }).join('#');\n var aggregationFuncsHash = aggregationColumns.map(function (column) { return column.getAggFunc().toString(); }).join('#');\n var aggregationColumnsChanged = this.aggregationColumnsHashLastTime !== aggregationColumnsHash;\n var aggregationFuncsChanged = this.aggregationFuncsHashLastTime !== aggregationFuncsHash;\n this.aggregationColumnsHashLastTime = aggregationColumnsHash;\n this.aggregationFuncsHashLastTime = aggregationFuncsHash;\n if (uniqueValuesChanged || aggregationColumnsChanged || aggregationFuncsChanged) {\n var result = this.pivotColDefService.createPivotColumnDefs(this.uniqueValues);\n this.pivotColumnGroupDefs = result.pivotColumnGroupDefs;\n this.pivotColumnDefs = result.pivotColumnDefs;\n this.columnController.setSecondaryColumns(this.pivotColumnGroupDefs, \"rowModelUpdated\");\n // because the secondary columns have changed, then the aggregation needs to visit the whole\n // tree again, so we make the changedPath not active, to force aggregation to visit all paths.\n if (changedPath) {\n changedPath.setInactive();\n }\n }\n };\n PivotStage.prototype.setUniqueValues = function (newValues) {\n var json1 = JSON.stringify(newValues);\n var json2 = JSON.stringify(this.uniqueValues);\n var uniqueValuesChanged = json1 !== json2;\n // we only continue the below if the unique values are different, as otherwise\n // the result will be the same as the last time we did it\n if (uniqueValuesChanged) {\n this.uniqueValues = newValues;\n return true;\n }\n else {\n return false;\n }\n };\n // returns true if values were different\n PivotStage.prototype.bucketUpRowNodes = function (rootNode) {\n var _this = this;\n // accessed from inside inner function\n var uniqueValues = {};\n // finds all leaf groups and calls mapRowNode with it\n var recursivelySearchForLeafNodes = function (rowNode) {\n if (rowNode.leafGroup) {\n _this.bucketRowNode(rowNode, uniqueValues);\n }\n else {\n rowNode.childrenAfterFilter.forEach(function (child) {\n recursivelySearchForLeafNodes(child);\n });\n }\n };\n recursivelySearchForLeafNodes(rootNode);\n return uniqueValues;\n };\n PivotStage.prototype.bucketRowNode = function (rowNode, uniqueValues) {\n var pivotColumns = this.columnController.getPivotColumns();\n if (pivotColumns.length === 0) {\n rowNode.childrenMapped = null;\n return;\n }\n rowNode.childrenMapped = this.bucketChildren(rowNode.childrenAfterFilter, pivotColumns, 0, uniqueValues);\n };\n PivotStage.prototype.bucketChildren = function (children, pivotColumns, pivotIndex, uniqueValues) {\n var _this = this;\n var mappedChildren = {};\n var pivotColumn = pivotColumns[pivotIndex];\n // map the children out based on the pivot column\n children.forEach(function (child) {\n var key = _this.valueService.getKeyForNode(pivotColumn, child);\n if (core_1._.missing(key)) {\n key = '';\n }\n if (!uniqueValues[key]) {\n uniqueValues[key] = {};\n }\n if (!mappedChildren[key]) {\n mappedChildren[key] = [];\n }\n mappedChildren[key].push(child);\n });\n // if it's the last pivot column, return as is, otherwise go one level further in the map\n if (pivotIndex === pivotColumns.length - 1) {\n return mappedChildren;\n }\n else {\n var result_1 = {};\n core_1._.iterateObject(mappedChildren, function (key, value) {\n result_1[key] = _this.bucketChildren(value, pivotColumns, pivotIndex + 1, uniqueValues[key]);\n });\n return result_1;\n }\n };\n PivotStage.prototype.getPivotColumnDefs = function () {\n return this.pivotColumnDefs;\n };\n __decorate([\n core_1.Autowired('rowModel')\n ], PivotStage.prototype, \"rowModel\", void 0);\n __decorate([\n core_1.Autowired('valueService')\n ], PivotStage.prototype, \"valueService\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], PivotStage.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], PivotStage.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('pivotColDefService')\n ], PivotStage.prototype, \"pivotColDefService\", void 0);\n PivotStage = __decorate([\n core_1.Bean('pivotStage')\n ], PivotStage);\n return PivotStage;\n}());\nexports.PivotStage = PivotStage;\n//# sourceMappingURL=pivotStage.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar AggFuncService = /** @class */ (function () {\n function AggFuncService() {\n this.aggFuncsMap = {};\n this.initialised = false;\n }\n AggFuncService_1 = AggFuncService;\n AggFuncService.prototype.init = function () {\n if (this.initialised) {\n return;\n }\n this.initialiseWithDefaultAggregations();\n this.addAggFuncs(this.gridOptionsWrapper.getAggFuncs());\n };\n AggFuncService.prototype.initialiseWithDefaultAggregations = function () {\n this.aggFuncsMap[AggFuncService_1.AGG_SUM] = aggSum;\n this.aggFuncsMap[AggFuncService_1.AGG_FIRST] = aggFirst;\n this.aggFuncsMap[AggFuncService_1.AGG_LAST] = aggLast;\n this.aggFuncsMap[AggFuncService_1.AGG_MIN] = aggMin;\n this.aggFuncsMap[AggFuncService_1.AGG_MAX] = aggMax;\n this.aggFuncsMap[AggFuncService_1.AGG_COUNT] = aggCount;\n this.aggFuncsMap[AggFuncService_1.AGG_AVG] = aggAvg;\n this.initialised = true;\n };\n AggFuncService.prototype.getDefaultAggFunc = function (column) {\n var allKeys = this.getFuncNames(column);\n // use 'sum' if it's a) allowed for the column and b) still registered\n // (ie not removed by user)\n var sumInKeysList = core_1._.includes(allKeys, AggFuncService_1.AGG_SUM);\n var sumInFuncs = core_1._.exists(this.aggFuncsMap[AggFuncService_1.AGG_SUM]);\n if (sumInKeysList && sumInFuncs) {\n return AggFuncService_1.AGG_SUM;\n }\n else {\n return core_1._.existsAndNotEmpty(allKeys) ? allKeys[0] : null;\n }\n };\n AggFuncService.prototype.addAggFuncs = function (aggFuncs) {\n core_1._.iterateObject(aggFuncs, this.addAggFunc.bind(this));\n };\n AggFuncService.prototype.addAggFunc = function (key, aggFunc) {\n this.init();\n this.aggFuncsMap[key] = aggFunc;\n };\n AggFuncService.prototype.getAggFunc = function (name) {\n this.init();\n return this.aggFuncsMap[name];\n };\n AggFuncService.prototype.getFuncNames = function (column) {\n var userAllowedFuncs = column.getColDef().allowedAggFuncs;\n if (core_1._.exists(userAllowedFuncs) && userAllowedFuncs) {\n return userAllowedFuncs;\n }\n else {\n return Object.keys(this.aggFuncsMap).sort();\n }\n };\n AggFuncService.prototype.clear = function () {\n this.aggFuncsMap = {};\n };\n var AggFuncService_1;\n AggFuncService.AGG_SUM = 'sum';\n AggFuncService.AGG_FIRST = 'first';\n AggFuncService.AGG_LAST = 'last';\n AggFuncService.AGG_MIN = 'min';\n AggFuncService.AGG_MAX = 'max';\n AggFuncService.AGG_COUNT = 'count';\n AggFuncService.AGG_AVG = 'avg';\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], AggFuncService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.PostConstruct\n ], AggFuncService.prototype, \"init\", null);\n AggFuncService = AggFuncService_1 = __decorate([\n core_1.Bean('aggFuncService')\n ], AggFuncService);\n return AggFuncService;\n}());\nexports.AggFuncService = AggFuncService;\nfunction aggSum(input) {\n return input\n .filter(function (value) { return typeof value === 'number'; })\n .reduce(function (sum, value) { return sum === null ? value : sum + value; }, null);\n}\nfunction aggFirst(input) {\n return input.length > 0 ? input[0] : null;\n}\nfunction aggLast(input) {\n return input.length > 0 ? core_1._.last(input) : null;\n}\nfunction aggMin(input) {\n return input\n .filter(function (value) { return typeof value === 'number'; })\n .reduce(function (min, value) { return min === null || value < min ? value : min; }, null);\n}\nfunction aggMax(input) {\n return input\n .filter(function (value) { return typeof value === 'number'; })\n .reduce(function (max, value) { return max === null || value > max ? value : max; }, null);\n}\nfunction aggCount(input) {\n var value = input.reduce(function (count, item) {\n var isGroupAgg = core_1._.exists(item) && typeof item.value === 'number';\n return count + (isGroupAgg ? item.value : 1);\n }, 0);\n return {\n value: value,\n toString: function () {\n return this.value.toString();\n },\n // used for sorting\n toNumber: function () {\n return this.value;\n }\n };\n}\n// the average function is tricky as the multiple levels require weighted averages\n// for the non-leaf node aggregations.\nfunction aggAvg(input) {\n // the average will be the sum / count\n var _a = input.reduce(function (_a, item) {\n var sum = _a.sum, count = _a.count;\n var itemIsGroupResult = core_1._.exists(item) &&\n typeof item.value === 'number' &&\n typeof item.count === 'number';\n if (typeof item === 'number') {\n return { sum: sum + item, count: count + 1 };\n }\n if (itemIsGroupResult) {\n // we are aggregating groups, so we take the\n // aggregated values to calculated a weighted average\n return {\n sum: sum + item.value * item.count,\n count: count + item.count\n };\n }\n return { sum: sum, count: count };\n }, { sum: 0, count: 0 }), sum = _a.sum, count = _a.count;\n // avoid divide by zero error\n var value = count > 0 ? sum / count : null;\n // the result will be an object. when this cell is rendered, only the avg is shown.\n // however when this cell is part of another aggregation, the count is also needed\n // to create a weighted average for the next level.\n return {\n count: count,\n value: value,\n // the grid by default uses toString to render values for an object, so this\n // is a trick to get the default cellRenderer to display the avg value\n toString: function () {\n if (typeof this.value === 'number') {\n return this.value.toString();\n }\n else {\n return '';\n }\n },\n // used for sorting\n toNumber: function () {\n return this.value;\n }\n };\n}\n//# sourceMappingURL=aggFuncService.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar rowGroupDropZonePanel_1 = require(\"./rowGroupDropZonePanel\");\nvar pivotDropZonePanel_1 = require(\"./pivotDropZonePanel\");\nvar GridHeaderDropZones = /** @class */ (function (_super) {\n __extends(GridHeaderDropZones, _super);\n function GridHeaderDropZones() {\n return _super.call(this) || this;\n }\n GridHeaderDropZones.prototype.postConstruct = function () {\n this.setGui(this.createNorthPanel());\n this.eventService.addEventListener(core_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));\n this.eventService.addEventListener(core_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.onRowGroupChanged.bind(this));\n this.onRowGroupChanged();\n };\n GridHeaderDropZones.prototype.createNorthPanel = function () {\n var _this = this;\n var topPanelGui = document.createElement('div');\n var dropPanelVisibleListener = this.onDropPanelVisible.bind(this);\n this.rowGroupComp = new rowGroupDropZonePanel_1.RowGroupDropZonePanel(true);\n this.getContext().wireBean(this.rowGroupComp);\n this.addDestroyFunc(function () { return _this.rowGroupComp.destroy(); });\n this.pivotComp = new pivotDropZonePanel_1.PivotDropZonePanel(true);\n this.getContext().wireBean(this.pivotComp);\n this.addDestroyFunc(function () { return _this.pivotComp.destroy(); });\n topPanelGui.appendChild(this.rowGroupComp.getGui());\n topPanelGui.appendChild(this.pivotComp.getGui());\n this.rowGroupComp.addEventListener(core_1.Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n this.pivotComp.addEventListener(core_1.Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n this.addDestroyFunc(function () {\n _this.rowGroupComp.removeEventListener(core_1.Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n _this.pivotComp.removeEventListener(core_1.Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n });\n this.onDropPanelVisible();\n return topPanelGui;\n };\n GridHeaderDropZones.prototype.onDropPanelVisible = function () {\n var bothDisplayed = this.rowGroupComp.isDisplayed() && this.pivotComp.isDisplayed();\n this.rowGroupComp.addOrRemoveCssClass('ag-width-half', bothDisplayed);\n this.pivotComp.addOrRemoveCssClass('ag-width-half', bothDisplayed);\n };\n GridHeaderDropZones.prototype.onRowGroupChanged = function () {\n if (!this.rowGroupComp) {\n return;\n }\n var rowGroupPanelShow = this.gridOptionsWrapper.getRowGroupPanelShow();\n if (rowGroupPanelShow === core_1.Constants.ALWAYS) {\n this.rowGroupComp.setDisplayed(true);\n }\n else if (rowGroupPanelShow === core_1.Constants.ONLY_WHEN_GROUPING) {\n var grouping = !this.columnController.isRowGroupEmpty();\n this.rowGroupComp.setDisplayed(grouping);\n }\n else {\n this.rowGroupComp.setDisplayed(false);\n }\n };\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], GridHeaderDropZones.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], GridHeaderDropZones.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], GridHeaderDropZones.prototype, \"eventService\", void 0);\n __decorate([\n core_1.PostConstruct\n ], GridHeaderDropZones.prototype, \"postConstruct\", null);\n return GridHeaderDropZones;\n}(core_1.Component));\nexports.GridHeaderDropZones = GridHeaderDropZones;\n//# sourceMappingURL=gridHeaderDropZones.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar DropZoneColumnComp = /** @class */ (function (_super) {\n __extends(DropZoneColumnComp, _super);\n function DropZoneColumnComp(column, dragSourceDropTarget, ghost, valueColumn) {\n var _this = _super.call(this) || this;\n _this.popupShowing = false;\n _this.valueColumn = valueColumn;\n _this.column = column;\n _this.dragSourceDropTarget = dragSourceDropTarget;\n _this.ghost = ghost;\n return _this;\n }\n DropZoneColumnComp.prototype.init = function () {\n this.setTemplate(DropZoneColumnComp.TEMPLATE);\n this.eDragHandle.appendChild(core_1._.createIconNoSpan('columnDrag', this.gridOptionsWrapper));\n this.btRemove.appendChild(core_1._.createIconNoSpan('cancel', this.gridOptionsWrapper));\n this.displayName = this.columnController.getDisplayNameForColumn(this.column, 'columnDrop');\n this.setupComponents();\n if (!this.ghost && !this.gridOptionsWrapper.isFunctionsReadOnly()) {\n this.addDragSource();\n }\n };\n DropZoneColumnComp.prototype.addDragSource = function () {\n var _this = this;\n var dragSource = {\n type: core_1.DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n getDragItem: function () { return _this.createDragItem(); },\n dragItemName: this.displayName,\n dragSourceDropTarget: this.dragSourceDropTarget\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n };\n DropZoneColumnComp.prototype.createDragItem = function () {\n var visibleState = {};\n visibleState[this.column.getId()] = this.column.isVisible();\n return {\n columns: [this.column],\n visibleState: visibleState\n };\n };\n DropZoneColumnComp.prototype.setupComponents = function () {\n this.setTextValue();\n this.setupRemove();\n if (this.ghost) {\n core_1._.addCssClass(this.getGui(), 'ag-column-drop-cell-ghost');\n }\n if (this.valueColumn && !this.gridOptionsWrapper.isFunctionsReadOnly()) {\n this.addGuiEventListener('click', this.onShowAggFuncSelection.bind(this));\n }\n };\n DropZoneColumnComp.prototype.setupRemove = function () {\n var _this = this;\n core_1._.setDisplayed(this.btRemove, !this.gridOptionsWrapper.isFunctionsReadOnly());\n this.addDestroyableEventListener(this.btRemove, 'click', function (mouseEvent) {\n var agEvent = { type: DropZoneColumnComp.EVENT_COLUMN_REMOVE };\n _this.dispatchEvent(agEvent);\n mouseEvent.stopPropagation();\n });\n var touchListener = new core_1.TouchListener(this.btRemove);\n this.addDestroyableEventListener(touchListener, core_1.TouchListener.EVENT_TAP, function (event) {\n var agEvent = { type: DropZoneColumnComp.EVENT_COLUMN_REMOVE };\n _this.dispatchEvent(agEvent);\n });\n this.addDestroyFunc(touchListener.destroy.bind(touchListener));\n };\n DropZoneColumnComp.prototype.setTextValue = function () {\n var displayValue;\n if (this.valueColumn) {\n var aggFunc = this.column.getAggFunc();\n // if aggFunc is a string, we can use it, but if it's a function, then we swap with 'func'\n var aggFuncString = (typeof aggFunc === 'string') ? aggFunc : 'agg';\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);\n displayValue = aggFuncStringTranslated + \"(\" + this.displayName + \")\";\n }\n else {\n displayValue = this.displayName;\n }\n var displayValueSanitised = core_1._.escape(displayValue);\n this.eText.innerHTML = displayValueSanitised;\n };\n DropZoneColumnComp.prototype.onShowAggFuncSelection = function () {\n var _this = this;\n if (this.popupShowing) {\n return;\n }\n this.popupShowing = true;\n var virtualList = new core_1.VirtualList();\n var rows = this.aggFuncService.getFuncNames(this.column);\n virtualList.setModel({\n getRow: function (index) { return rows[index]; },\n getRowCount: function () { return rows.length; }\n });\n this.getContext().wireBean(virtualList);\n var ePopup = core_1._.loadTemplate('
');\n ePopup.style.top = '0px';\n ePopup.style.left = '0px';\n ePopup.appendChild(virtualList.getGui());\n // ePopup.style.height = this.gridOptionsWrapper.getAggFuncPopupHeight() + 'px';\n ePopup.style.width = this.getGui().clientWidth + 'px';\n var popupHiddenFunc = function () {\n virtualList.destroy();\n _this.popupShowing = false;\n };\n var hidePopup = this.popupService.addAsModalPopup(ePopup, true, popupHiddenFunc);\n virtualList.setComponentCreator(this.createAggSelect.bind(this, hidePopup));\n this.popupService.positionPopupUnderComponent({\n type: 'aggFuncSelect',\n eventSource: this.getGui(),\n ePopup: ePopup,\n keepWithinBounds: true,\n column: this.column\n });\n virtualList.refresh();\n };\n DropZoneColumnComp.prototype.createAggSelect = function (hidePopup, value) {\n var _this = this;\n var itemSelected = function () {\n hidePopup();\n if (_this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: core_1.Events.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST,\n columns: [_this.column],\n aggFunc: value,\n api: _this.gridApi,\n columnApi: _this.columnApi\n };\n _this.eventService.dispatchEvent(event_1);\n }\n else {\n _this.columnController.setColumnAggFunc(_this.column, value, \"toolPanelDragAndDrop\");\n }\n };\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var aggFuncString = value.toString();\n var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);\n var comp = new AggItemComp(itemSelected, aggFuncStringTranslated);\n return comp;\n };\n DropZoneColumnComp.EVENT_COLUMN_REMOVE = 'columnRemove';\n DropZoneColumnComp.TEMPLATE = \"\\n \\n \\n \\n \";\n __decorate([\n core_1.Autowired('dragAndDropService')\n ], DropZoneColumnComp.prototype, \"dragAndDropService\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], DropZoneColumnComp.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('popupService')\n ], DropZoneColumnComp.prototype, \"popupService\", void 0);\n __decorate([\n core_1.Optional('aggFuncService')\n ], DropZoneColumnComp.prototype, \"aggFuncService\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], DropZoneColumnComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], DropZoneColumnComp.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('columnApi')\n ], DropZoneColumnComp.prototype, \"columnApi\", void 0);\n __decorate([\n core_1.Autowired('gridApi')\n ], DropZoneColumnComp.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.RefSelector('eText')\n ], DropZoneColumnComp.prototype, \"eText\", void 0);\n __decorate([\n core_1.RefSelector('eDragHandle')\n ], DropZoneColumnComp.prototype, \"eDragHandle\", void 0);\n __decorate([\n core_1.RefSelector('btRemove')\n ], DropZoneColumnComp.prototype, \"btRemove\", void 0);\n __decorate([\n core_1.PostConstruct\n ], DropZoneColumnComp.prototype, \"init\", null);\n return DropZoneColumnComp;\n}(core_1.Component));\nexports.DropZoneColumnComp = DropZoneColumnComp;\nvar AggItemComp = /** @class */ (function (_super) {\n __extends(AggItemComp, _super);\n function AggItemComp(itemSelected, value) {\n var _this = _super.call(this, '
') || this;\n _this.getGui().innerText = value;\n _this.value = value;\n _this.addGuiEventListener('click', itemSelected);\n return _this;\n }\n return AggItemComp;\n}(core_1.Component));\n//# sourceMappingURL=dropZoneColumnComp.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar baseDropZonePanel_1 = require(\"./baseDropZonePanel\");\nvar ValuesDropZonePanel = /** @class */ (function (_super) {\n __extends(ValuesDropZonePanel, _super);\n function ValuesDropZonePanel(horizontal) {\n return _super.call(this, horizontal, true, 'values') || this;\n }\n ValuesDropZonePanel.prototype.passBeansUp = function () {\n _super.prototype.setBeans.call(this, {\n gridOptionsWrapper: this.gridOptionsWrapper,\n eventService: this.eventService,\n context: this.getContext(),\n loggerFactory: this.loggerFactory,\n dragAndDropService: this.dragAndDropService\n });\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var emptyMessage = localeTextFunc('valueColumnsEmptyMessage', 'Drag here to aggregate');\n var title = localeTextFunc('values', 'Values');\n _super.prototype.init.call(this, {\n dragAndDropIcon: core_1.DragAndDropService.ICON_AGGREGATE,\n icon: core_1._.createIconNoSpan('valuePanel', this.gridOptionsWrapper, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_VALUE_CHANGED, this.refreshGui.bind(this));\n };\n ValuesDropZonePanel.prototype.getIconName = function () {\n return this.isPotentialDndColumns() ? core_1.DragAndDropService.ICON_AGGREGATE : core_1.DragAndDropService.ICON_NOT_ALLOWED;\n };\n ValuesDropZonePanel.prototype.isColumnDroppable = function (column) {\n // we never allow grouping of secondary columns\n if (this.gridOptionsWrapper.isFunctionsReadOnly() || !column.isPrimary()) {\n return false;\n }\n return column.isAllowValue() && !column.isValueActive();\n };\n ValuesDropZonePanel.prototype.updateColumns = function (columns) {\n if (this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: core_1.Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST,\n columns: columns,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n else {\n this.columnController.setValueColumns(columns, \"toolPanelUi\");\n }\n };\n ValuesDropZonePanel.prototype.getExistingColumns = function () {\n return this.columnController.getValueColumns();\n };\n __decorate([\n core_1.Autowired('columnController')\n ], ValuesDropZonePanel.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], ValuesDropZonePanel.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], ValuesDropZonePanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('loggerFactory')\n ], ValuesDropZonePanel.prototype, \"loggerFactory\", void 0);\n __decorate([\n core_1.Autowired('dragAndDropService')\n ], ValuesDropZonePanel.prototype, \"dragAndDropService\", void 0);\n __decorate([\n core_1.Autowired('columnApi')\n ], ValuesDropZonePanel.prototype, \"columnApi\", void 0);\n __decorate([\n core_1.Autowired('gridApi')\n ], ValuesDropZonePanel.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ValuesDropZonePanel.prototype, \"passBeansUp\", null);\n return ValuesDropZonePanel;\n}(baseDropZonePanel_1.BaseDropZonePanel));\nexports.ValuesDropZonePanel = ValuesDropZonePanel;\n//# sourceMappingURL=valueDropZonePanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar PrimaryColsPanel = /** @class */ (function (_super) {\n __extends(PrimaryColsPanel, _super);\n function PrimaryColsPanel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // we allow dragging in the toolPanel, but not when this component appears in the column menu\n PrimaryColsPanel.prototype.init = function (allowDragging, params) {\n this.setTemplate(PrimaryColsPanel.TEMPLATE);\n this.allowDragging = allowDragging;\n this.params = params;\n this.primaryColsHeaderPanel.init(this.params);\n var hideFilter = this.params.suppressColumnFilter;\n var hideSelect = this.params.suppressColumnSelectAll;\n var hideExpand = this.params.suppressColumnExpandAll;\n if (hideExpand && hideFilter && hideSelect) {\n this.primaryColsHeaderPanel.setDisplayed(false);\n }\n this.addDestroyableEventListener(this.primaryColsListPanel, 'groupExpanded', this.onGroupExpanded.bind(this));\n this.addDestroyableEventListener(this.primaryColsListPanel, 'selectionChanged', this.onSelectionChange.bind(this));\n this.primaryColsListPanel.init(this.params, this.allowDragging);\n this.addDestroyableEventListener(this.primaryColsHeaderPanel, 'expandAll', this.onExpandAll.bind(this));\n this.addDestroyableEventListener(this.primaryColsHeaderPanel, 'collapseAll', this.onCollapseAll.bind(this));\n this.addDestroyableEventListener(this.primaryColsHeaderPanel, 'selectAll', this.onSelectAll.bind(this));\n this.addDestroyableEventListener(this.primaryColsHeaderPanel, 'unselectAll', this.onUnselectAll.bind(this));\n this.addDestroyableEventListener(this.primaryColsHeaderPanel, 'filterChanged', this.onFilterChanged.bind(this));\n };\n PrimaryColsPanel.prototype.onExpandAll = function () {\n this.primaryColsListPanel.doSetExpandedAll(true);\n };\n PrimaryColsPanel.prototype.onCollapseAll = function () {\n this.primaryColsListPanel.doSetExpandedAll(false);\n };\n PrimaryColsPanel.prototype.expandGroups = function (groupIds) {\n this.primaryColsListPanel.setGroupsExpanded(true, groupIds);\n };\n PrimaryColsPanel.prototype.collapseGroups = function (groupIds) {\n this.primaryColsListPanel.setGroupsExpanded(false, groupIds);\n };\n PrimaryColsPanel.prototype.setColumnLayout = function (colDefs) {\n this.primaryColsListPanel.setColumnLayout(colDefs);\n };\n PrimaryColsPanel.prototype.onFilterChanged = function (event) {\n this.primaryColsListPanel.setFilterText(event.filterText);\n };\n PrimaryColsPanel.prototype.syncLayoutWithGrid = function () {\n this.primaryColsListPanel.syncColumnLayout();\n };\n PrimaryColsPanel.prototype.onSelectAll = function () {\n this.primaryColsListPanel.doSetSelectedAll(true);\n };\n PrimaryColsPanel.prototype.onUnselectAll = function () {\n this.primaryColsListPanel.doSetSelectedAll(false);\n };\n PrimaryColsPanel.prototype.onGroupExpanded = function (event) {\n this.primaryColsHeaderPanel.setExpandState(event.state);\n };\n PrimaryColsPanel.prototype.onSelectionChange = function (event) {\n this.primaryColsHeaderPanel.setSelectionState(event.state);\n };\n PrimaryColsPanel.TEMPLATE = \"
\\n \\n \\n
\";\n __decorate([\n core_1.RefSelector('primaryColsHeaderPanel')\n ], PrimaryColsPanel.prototype, \"primaryColsHeaderPanel\", void 0);\n __decorate([\n core_1.RefSelector('primaryColsListPanel')\n ], PrimaryColsPanel.prototype, \"primaryColsListPanel\", void 0);\n return PrimaryColsPanel;\n}(core_1.Component));\nexports.PrimaryColsPanel = PrimaryColsPanel;\n//# sourceMappingURL=primaryColsPanel.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar core_2 = require(\"@ag-grid-enterprise/core\");\nvar horizontalResizeComp_1 = require(\"./sideBar/horizontalResizeComp\");\nvar sideBarComp_1 = require(\"./sideBar/sideBarComp\");\nvar sideBarButtonsComp_1 = require(\"./sideBar/sideBarButtonsComp\");\nvar toolPanelColDefService_1 = require(\"./sideBar/common/toolPanelColDefService\");\nexports.SideBarModule = {\n moduleName: core_1.ModuleNames.SideBarModule,\n beans: [toolPanelColDefService_1.ToolPanelColDefService],\n agStackComponents: [\n { componentName: 'AgHorizontalResize', componentClass: horizontalResizeComp_1.HorizontalResizeComp },\n { componentName: 'AgSideBar', componentClass: sideBarComp_1.SideBarComp },\n { componentName: 'AgSideBarButtons', componentClass: sideBarButtonsComp_1.SideBarButtonsComp },\n ],\n dependantModules: [\n core_2.EnterpriseCoreModule\n ]\n};\n//# sourceMappingURL=sideBarModule.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar sideBarButtonsComp_1 = require(\"./sideBarButtonsComp\");\nvar toolPanelWrapper_1 = require(\"./toolPanelWrapper\");\nvar SideBarComp = /** @class */ (function (_super) {\n __extends(SideBarComp, _super);\n function SideBarComp() {\n var _this = _super.call(this, SideBarComp.TEMPLATE) || this;\n _this.toolPanelWrappers = [];\n return _this;\n }\n SideBarComp.prototype.postConstruct = function () {\n this.sideBarButtonsComp.addEventListener(sideBarButtonsComp_1.SideBarButtonsComp.EVENT_SIDE_BAR_BUTTON_CLICKED, this.onToolPanelButtonClicked.bind(this));\n this.setSideBarDef();\n };\n SideBarComp.prototype.onToolPanelButtonClicked = function (event) {\n var id = event.toolPanelId;\n var openedItem = this.openedItem();\n // if item was already open, we close it\n if (openedItem === id) {\n this.openToolPanel(undefined); // passing undefined closes\n }\n else {\n this.openToolPanel(id);\n }\n };\n SideBarComp.prototype.clearDownUi = function () {\n this.sideBarButtonsComp.clearButtons();\n this.destroyToolPanelWrappers();\n };\n SideBarComp.prototype.setSideBarDef = function () {\n // initially hide side bar\n this.setDisplayed(false);\n var sideBar = this.gridOptionsWrapper.getSideBar();\n var sideBarExists = !!sideBar && !!sideBar.toolPanels;\n if (sideBarExists) {\n var shouldDisplaySideBar = sideBarExists && !sideBar.hiddenByDefault;\n this.setDisplayed(shouldDisplaySideBar);\n var toolPanelDefs = sideBar.toolPanels;\n this.sideBarButtonsComp.setToolPanelDefs(toolPanelDefs);\n this.setupToolPanels(toolPanelDefs);\n this.setSideBarPosition(sideBar.position);\n if (!sideBar.hiddenByDefault) {\n this.openToolPanel(sideBar.defaultToolPanel);\n }\n }\n };\n SideBarComp.prototype.setSideBarPosition = function (position) {\n if (!position) {\n position = 'right';\n }\n var isLeft = position === 'left';\n var resizerSide = isLeft ? 'right' : 'left';\n var eGui = this.getGui();\n core_1._.addOrRemoveCssClass(eGui, 'ag-side-bar-left', isLeft);\n core_1._.addOrRemoveCssClass(eGui, 'ag-side-bar-right', !isLeft);\n this.toolPanelWrappers.forEach(function (wrapper) {\n wrapper.setResizerSizerSide(resizerSide);\n });\n return this;\n };\n SideBarComp.prototype.setupToolPanels = function (defs) {\n var _this = this;\n defs.forEach(function (def) {\n if (def.id == null) {\n console.warn(\"ag-grid: please review all your toolPanel components, it seems like at least one of them doesn't have an id\");\n return;\n }\n // helpers, in case user doesn't have the right module loaded\n if (def.toolPanel === 'agColumnsToolPanel') {\n var moduleMissing = !core_1.ModuleRegistry.assertRegistered(core_1.ModuleNames.ColumnToolPanelModule, 'Column Tool Panel');\n if (moduleMissing) {\n return;\n }\n }\n if (def.toolPanel === 'agFiltersToolPanel') {\n var moduleMissing = !core_1.ModuleRegistry.assertRegistered(core_1.ModuleNames.FiltersToolPanelModule, 'Filters Tool Panel');\n if (moduleMissing) {\n return;\n }\n }\n var wrapper = new toolPanelWrapper_1.ToolPanelWrapper();\n _this.getContext().wireBean(wrapper);\n wrapper.setToolPanelDef(def);\n wrapper.setDisplayed(false);\n _this.getGui().appendChild(wrapper.getGui());\n _this.toolPanelWrappers.push(wrapper);\n });\n };\n SideBarComp.prototype.refresh = function () {\n this.toolPanelWrappers.forEach(function (wrapper) { return wrapper.refresh(); });\n };\n SideBarComp.prototype.openToolPanel = function (key) {\n var currentlyOpenedKey = this.openedItem();\n if (currentlyOpenedKey === key) {\n return;\n }\n this.toolPanelWrappers.forEach(function (wrapper) {\n var show = key === wrapper.getToolPanelId();\n wrapper.setDisplayed(show);\n });\n var newlyOpenedKey = this.openedItem();\n var openToolPanelChanged = currentlyOpenedKey !== newlyOpenedKey;\n if (openToolPanelChanged) {\n this.sideBarButtonsComp.setActiveButton(key);\n this.raiseToolPanelVisibleEvent(key);\n }\n };\n SideBarComp.prototype.getToolPanelInstance = function (key) {\n var toolPanelWrapper = this.toolPanelWrappers.filter(function (toolPanel) { return toolPanel.getToolPanelId() === key; })[0];\n if (!toolPanelWrapper) {\n console.warn(\"ag-grid: unable to lookup Tool Panel as invalid key supplied: \" + key);\n return;\n }\n return toolPanelWrapper.getToolPanelInstance();\n };\n SideBarComp.prototype.raiseToolPanelVisibleEvent = function (key) {\n var event = {\n type: core_1.Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED,\n source: key,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n this.eventService.dispatchEvent(event);\n };\n SideBarComp.prototype.close = function () {\n this.openToolPanel(undefined);\n };\n SideBarComp.prototype.isToolPanelShowing = function () {\n return !!this.openedItem();\n };\n SideBarComp.prototype.openedItem = function () {\n var activeToolPanel = null;\n this.toolPanelWrappers.forEach(function (wrapper) {\n if (wrapper.isDisplayed()) {\n activeToolPanel = wrapper.getToolPanelId();\n }\n });\n return activeToolPanel;\n };\n // get called after user sets new sideBarDef via the API\n SideBarComp.prototype.reset = function () {\n this.clearDownUi();\n this.setSideBarDef();\n };\n SideBarComp.prototype.destroyToolPanelWrappers = function () {\n this.toolPanelWrappers.forEach(function (wrapper) {\n core_1._.removeFromParent(wrapper.getGui());\n wrapper.destroy();\n });\n this.toolPanelWrappers.length = 0;\n };\n SideBarComp.prototype.destroy = function () {\n this.destroyToolPanelWrappers();\n _super.prototype.destroy.call(this);\n };\n SideBarComp.TEMPLATE = \"
\\n \\n
\";\n __decorate([\n core_1.Autowired(\"eventService\")\n ], SideBarComp.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired(\"gridOptionsWrapper\")\n ], SideBarComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.RefSelector('sideBarButtons')\n ], SideBarComp.prototype, \"sideBarButtonsComp\", void 0);\n __decorate([\n core_1.PostConstruct\n ], SideBarComp.prototype, \"postConstruct\", null);\n return SideBarComp;\n}(core_1.Component));\nexports.SideBarComp = SideBarComp;\n//# sourceMappingURL=sideBarComp.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar horizontalResizeComp_1 = require(\"./horizontalResizeComp\");\nvar ToolPanelWrapper = /** @class */ (function (_super) {\n __extends(ToolPanelWrapper, _super);\n function ToolPanelWrapper() {\n return _super.call(this, ToolPanelWrapper.TEMPLATE) || this;\n }\n ToolPanelWrapper.prototype.getToolPanelId = function () {\n return this.toolPanelId;\n };\n ToolPanelWrapper.prototype.setToolPanelDef = function (toolPanelDef) {\n this.toolPanelId = toolPanelDef.id;\n var params = {\n api: this.gridOptionsWrapper.getApi()\n };\n var componentPromise = this.userComponentFactory.newToolPanelComponent(toolPanelDef, params);\n if (componentPromise == null) {\n console.warn(\"ag-grid: error processing tool panel component \" + toolPanelDef.id + \". You need to specify either 'toolPanel' or 'toolPanelFramework'\");\n return;\n }\n componentPromise.then(this.setToolPanelComponent.bind(this));\n };\n ToolPanelWrapper.prototype.setupResize = function () {\n var resizeBar = this.resizeBar = new horizontalResizeComp_1.HorizontalResizeComp();\n this.getContext().wireBean(resizeBar);\n resizeBar.setElementToResize(this.getGui());\n this.appendChild(resizeBar);\n };\n ToolPanelWrapper.prototype.setToolPanelComponent = function (compInstance) {\n this.toolPanelCompInstance = compInstance;\n this.appendChild(compInstance);\n };\n ToolPanelWrapper.prototype.getToolPanelInstance = function () {\n return this.toolPanelCompInstance;\n };\n ToolPanelWrapper.prototype.setResizerSizerSide = function (side) {\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n var isLeft = side === 'left';\n var inverted = isRtl ? isLeft : !isLeft;\n this.resizeBar.setInverted(inverted);\n };\n ToolPanelWrapper.prototype.refresh = function () {\n this.toolPanelCompInstance.refresh();\n };\n ToolPanelWrapper.TEMPLATE = \"
\";\n __decorate([\n core_1.Autowired(\"userComponentFactory\")\n ], ToolPanelWrapper.prototype, \"userComponentFactory\", void 0);\n __decorate([\n core_1.Autowired(\"gridOptionsWrapper\")\n ], ToolPanelWrapper.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ToolPanelWrapper.prototype, \"setupResize\", null);\n return ToolPanelWrapper;\n}(core_1.Component));\nexports.ToolPanelWrapper = ToolPanelWrapper;\n//# sourceMappingURL=toolPanelWrapper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar core_2 = require(\"@ag-grid-enterprise/core\");\nvar excelXlsxFactory_1 = require(\"./excelExport/excelXlsxFactory\");\nvar excelXmlFactory_1 = require(\"./excelExport/excelXmlFactory\");\nvar excelCreator_1 = require(\"./excelExport/excelCreator\");\nvar csv_export_1 = require(\"@ag-grid-community/csv-export\");\nvar csv_export_2 = require(\"@ag-grid-community/csv-export\");\nexports.ExcelExportModule = {\n moduleName: core_1.ModuleNames.ExcelExportModule,\n beans: [\n // beans in this module\n excelCreator_1.ExcelCreator, excelXmlFactory_1.ExcelXmlFactory, excelXlsxFactory_1.ExcelXlsxFactory,\n // these beans are part of CSV Export module\n csv_export_1.GridSerializer, csv_export_1.ZipContainer, csv_export_1.XmlFactory, csv_export_1.Downloader, csv_export_1.CsvCreator\n ],\n dependantModules: [\n csv_export_2.CsvExportModule,\n core_2.EnterpriseCoreModule\n ]\n};\n//# sourceMappingURL=excelExportModule.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar core_2 = require(\"./files/ooxml/core\");\nvar contentTypes_1 = require(\"./files/ooxml/contentTypes\");\nvar office_1 = require(\"./files/ooxml/themes/office\");\nvar sharedStrings_1 = require(\"./files/ooxml/sharedStrings\");\nvar stylesheet_1 = require(\"./files/ooxml/styles/stylesheet\");\nvar workbook_1 = require(\"./files/ooxml/workbook\");\nvar worksheet_1 = require(\"./files/ooxml/worksheet\");\nvar relationships_1 = require(\"./files/ooxml/relationships\");\n/**\n * See https://www.ecma-international.org/news/TC45_current_work/OpenXML%20White%20Paper.pdf\n */\nvar ExcelXlsxFactory = /** @class */ (function () {\n function ExcelXlsxFactory() {\n this.sharedStrings = [];\n }\n ExcelXlsxFactory.prototype.createSharedStrings = function () {\n return this.createXmlPart(sharedStrings_1.default.getTemplate(this.sharedStrings));\n };\n ExcelXlsxFactory.prototype.createXmlPart = function (body) {\n var header = this.xmlFactory.createHeader({\n encoding: 'UTF-8',\n standalone: 'yes'\n });\n var xmlBody = this.xmlFactory.createXml(body);\n return \"\" + header + xmlBody;\n };\n ExcelXlsxFactory.prototype.createExcel = function (styles, worksheets, sharedStrings) {\n if (sharedStrings === void 0) { sharedStrings = []; }\n this.sharedStrings = sharedStrings;\n this.sheetNames = worksheets.map(function (worksheet) { return worksheet.name; });\n stylesheet_1.registerStyles(styles);\n return this.createWorksheet(worksheets);\n };\n ExcelXlsxFactory.prototype.createCore = function () {\n return this.createXmlPart(core_2.default.getTemplate());\n };\n ExcelXlsxFactory.prototype.createContentTypes = function () {\n return this.createXmlPart(contentTypes_1.default.getTemplate());\n };\n ExcelXlsxFactory.prototype.createRels = function () {\n var rs = relationships_1.default.getTemplate([{\n Id: 'rId1',\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',\n Target: 'xl/workbook.xml'\n }, {\n Id: 'rId2',\n Type: 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',\n Target: 'docProps/core.xml'\n }]);\n return this.createXmlPart(rs);\n };\n ExcelXlsxFactory.prototype.createStylesheet = function () {\n return this.createXmlPart(stylesheet_1.default.getTemplate());\n };\n ExcelXlsxFactory.prototype.createTheme = function () {\n return this.createXmlPart(office_1.default.getTemplate());\n };\n ExcelXlsxFactory.prototype.createWorkbook = function () {\n return this.createXmlPart(workbook_1.default.getTemplate(this.sheetNames));\n };\n ExcelXlsxFactory.prototype.createWorkbookRels = function () {\n var rs = relationships_1.default.getTemplate([{\n Id: 'rId1',\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet',\n Target: 'worksheets/sheet1.xml'\n }, {\n Id: 'rId2',\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme',\n Target: 'theme/theme1.xml'\n }, {\n Id: 'rId3',\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles',\n Target: 'styles.xml'\n }, {\n Id: 'rId4',\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings',\n Target: 'sharedStrings.xml'\n }]);\n return this.createXmlPart(rs);\n };\n ExcelXlsxFactory.prototype.createWorksheet = function (worksheets) {\n return this.createXmlPart(worksheet_1.default.getTemplate(worksheets[0]));\n };\n __decorate([\n core_1.Autowired('xmlFactory')\n ], ExcelXlsxFactory.prototype, \"xmlFactory\", void 0);\n ExcelXlsxFactory = __decorate([\n core_1.Bean('excelXlsxFactory')\n ], ExcelXlsxFactory);\n return ExcelXlsxFactory;\n}());\nexports.ExcelXlsxFactory = ExcelXlsxFactory;\n//# sourceMappingURL=excelXlsxFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar coreFactory = {\n getTemplate: function () {\n var dt = new Date(), jsonDate = dt.toJSON();\n return {\n name: 'cp:coreProperties',\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n cp: \"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\",\n dc: 'http://purl.org/dc/elements/1.1/',\n dcterms: 'http://purl.org/dc/terms/',\n dcmitype: 'http://purl.org/dc/dcmitype/',\n xsi: 'http://www.w3.org/2001/XMLSchema-instance'\n }\n }]\n },\n children: [{\n name: 'dc:creator',\n textNode: 'ag-Grid'\n }, {\n name: 'dc:title',\n textNode: 'Workbook'\n }, {\n name: 'dcterms:created',\n properties: {\n rawMap: {\n 'xsi:type': 'dcterms:W3CDTF'\n }\n },\n textNode: jsonDate\n }, {\n name: 'dcterms:modified',\n properties: {\n rawMap: {\n 'xsi:type': 'dcterms:W3CDTF'\n }\n },\n textNode: jsonDate\n }]\n };\n }\n};\nexports.default = coreFactory;\n//# sourceMappingURL=core.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar contentType_1 = require(\"./contentType\");\nvar contentTypesFactory = {\n getTemplate: function () {\n var children = [{\n name: 'Default',\n Extension: 'rels',\n ContentType: 'application/vnd.openxmlformats-package.relationships+xml'\n }, {\n name: 'Default',\n ContentType: 'application/xml',\n Extension: 'xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml',\n PartName: \"/xl/workbook.xml\"\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml',\n PartName: '/xl/worksheets/sheet1.xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.theme+xml',\n PartName: '/xl/theme/theme1.xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml',\n PartName: '/xl/styles.xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml',\n PartName: '/xl/sharedStrings.xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-package.core-properties+xml',\n PartName: '/docProps/core.xml'\n }].map(contentType_1.default.getTemplate);\n return {\n name: \"Types\",\n properties: {\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/package/2006/content-types\"\n }\n },\n children: children\n };\n }\n};\nexports.default = contentTypesFactory;\n//# sourceMappingURL=contentTypes.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar contentTypeFactory = {\n getTemplate: function (config) {\n var name = config.name, ContentType = config.ContentType, Extension = config.Extension, PartName = config.PartName;\n return {\n name: name,\n properties: {\n rawMap: {\n Extension: Extension,\n PartName: PartName,\n ContentType: ContentType\n }\n }\n };\n }\n};\nexports.default = contentTypeFactory;\n//# sourceMappingURL=contentType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar themeElements_1 = require(\"./office/themeElements\");\nvar officeTheme = {\n getTemplate: function () {\n return {\n name: \"a:theme\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n a: \"http://schemas.openxmlformats.org/drawingml/2006/main\"\n },\n }],\n rawMap: {\n name: \"Office Theme\"\n }\n },\n children: [\n themeElements_1.default.getTemplate(),\n {\n name: 'a:objectDefaults'\n },\n {\n name: 'a:extraClrSchemeLst'\n }\n ]\n };\n }\n};\nexports.default = officeTheme;\n//# sourceMappingURL=office.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar colorScheme_1 = require(\"./colorScheme\");\nvar fontScheme_1 = require(\"./fontScheme\");\nvar formatScheme_1 = require(\"./formatScheme\");\nvar themeElements = {\n getTemplate: function () {\n return {\n name: \"a:themeElements\",\n children: [\n colorScheme_1.default.getTemplate(),\n fontScheme_1.default.getTemplate(),\n formatScheme_1.default.getTemplate()\n ]\n };\n }\n};\nexports.default = themeElements;\n//# sourceMappingURL=themeElements.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar getColorChildren = function (props) {\n var type = props[0], innerType = props[1], val = props[2], lastClr = props[3];\n return {\n name: \"a:\" + type,\n children: [{\n name: \"a:\" + innerType,\n properties: {\n rawMap: {\n val: val,\n lastClr: lastClr\n }\n }\n }]\n };\n};\nvar colorScheme = {\n getTemplate: function () {\n return {\n name: \"a:clrScheme\",\n properties: {\n rawMap: {\n name: \"Office\"\n }\n },\n children: [\n getColorChildren(['dk1', 'sysClr', 'windowText', '000000']),\n getColorChildren(['lt1', 'sysClr', 'window', 'FFFFFF']),\n getColorChildren(['dk2', 'srgbClr', '44546A']),\n getColorChildren(['lt2', 'srgbClr', 'E7E6E6']),\n getColorChildren(['accent1', 'srgbClr', '4472C4']),\n getColorChildren(['accent2', 'srgbClr', 'ED7D31']),\n getColorChildren(['accent3', 'srgbClr', 'A5A5A5']),\n getColorChildren(['accent4', 'srgbClr', 'FFC000']),\n getColorChildren(['accent5', 'srgbClr', '5B9BD5']),\n getColorChildren(['accent6', 'srgbClr', '70AD47']),\n getColorChildren(['hlink', 'srgbClr', '0563C1']),\n getColorChildren(['folHlink', 'srgbClr', '954F72'])\n ]\n };\n }\n};\nexports.default = colorScheme;\n//# sourceMappingURL=colorScheme.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar getFont = function (props) {\n var type = props[0], typeface = props[1], script = props[2], panose = props[3];\n return {\n name: \"a:\" + type,\n properties: {\n rawMap: {\n script: script,\n typeface: typeface,\n panose: panose\n }\n }\n };\n};\nvar fontScheme = {\n getTemplate: function () {\n var utf8_encode = core_1._.utf8_encode;\n return {\n name: \"a:fontScheme\",\n properties: {\n rawMap: {\n name: \"Office\"\n }\n },\n children: [{\n name: 'a:majorFont',\n children: [\n getFont(['latin', 'Calibri Light', undefined, '020F0302020204030204']),\n getFont(['ea', '']),\n getFont(['cs', '']),\n getFont(['font', utf8_encode('游ゴシック Light'), 'Jpan']),\n getFont(['font', utf8_encode('맑은 고딕'), 'Hang']),\n getFont(['font', utf8_encode('等线 Light'), 'Hans']),\n getFont(['font', utf8_encode('新細明體'), 'Hant']),\n getFont(['font', 'Times New Roman', 'Arab']),\n getFont(['font', 'Times New Roman', 'Hebr']),\n getFont(['font', 'Tahoma', 'Thai']),\n getFont(['font', 'Nyala', 'Ethi']),\n getFont(['font', 'Vrinda', 'Beng']),\n getFont(['font', 'Shruti', 'Gujr']),\n getFont(['font', 'MoolBoran', 'Khmr']),\n getFont(['font', 'Tunga', 'Knda']),\n getFont(['font', 'Raavi', 'Guru']),\n getFont(['font', 'Euphemia', 'Cans']),\n getFont(['font', 'Plantagenet Cherokee', 'Cher']),\n getFont(['font', 'Microsoft Yi Baiti', 'Yiii']),\n getFont(['font', 'Microsoft Himalaya', 'Tibt']),\n getFont(['font', 'MV Boli', 'Thaa']),\n getFont(['font', 'Mangal', 'Deva']),\n getFont(['font', 'Gautami', 'Telu']),\n getFont(['font', 'Latha', 'Taml']),\n getFont(['font', 'Estrangelo Edessa', 'Syrc']),\n getFont(['font', 'Kalinga', 'Orya']),\n getFont(['font', 'Kartika', 'Mlym']),\n getFont(['font', 'DokChampa', 'Laoo']),\n getFont(['font', 'Iskoola Pota', 'Sinh']),\n getFont(['font', 'Mongolian Baiti', 'Mong']),\n getFont(['font', 'Times New Roman', 'Viet']),\n getFont(['font', 'Microsoft Uighur', 'Uigh']),\n getFont(['font', 'Sylfaen', 'Geor']),\n getFont(['font', 'Arial', 'Armn']),\n getFont(['font', 'Leelawadee UI', 'Bugi']),\n getFont(['font', 'Microsoft JhengHei', 'Bopo']),\n getFont(['font', 'Javanese Text', 'Java']),\n getFont(['font', 'Segoe UI', 'Lisu']),\n getFont(['font', 'Myanmar Text', 'Mymr']),\n getFont(['font', 'Ebrima', 'Nkoo']),\n getFont(['font', 'Nirmala UI', 'Olck']),\n getFont(['font', 'Ebrima', 'Osma']),\n getFont(['font', 'Phagspa', 'Phag']),\n getFont(['font', 'Estrangelo Edessa', 'Syrn']),\n getFont(['font', 'Estrangelo Edessa', 'Syrj']),\n getFont(['font', 'Estrangelo Edessa', 'Syre']),\n getFont(['font', 'Nirmala UI', 'Sora']),\n getFont(['font', 'Microsoft Tai Le', 'Tale']),\n getFont(['font', 'Microsoft New Tai Lue', 'Talu']),\n getFont(['font', 'Ebrima', 'Tfng'])\n ]\n }, {\n name: 'a:minorFont',\n children: [\n getFont(['latin', 'Calibri', undefined, '020F0502020204030204']),\n getFont(['ea', '']),\n getFont(['cs', '']),\n getFont(['font', utf8_encode('游ゴシック'), 'Jpan']),\n getFont(['font', utf8_encode('맑은 고딕'), 'Hang']),\n getFont(['font', utf8_encode('等线'), 'Hans']),\n getFont(['font', utf8_encode('新細明體'), 'Hant']),\n getFont(['font', 'Arial', 'Arab']),\n getFont(['font', 'Arial', 'Hebr']),\n getFont(['font', 'Tahoma', 'Thai']),\n getFont(['font', 'Nyala', 'Ethi']),\n getFont(['font', 'Vrinda', 'Beng']),\n getFont(['font', 'Shruti', 'Gujr']),\n getFont(['font', 'DaunPenh', 'Khmr']),\n getFont(['font', 'Tunga', 'Knda']),\n getFont(['font', 'Raavi', 'Guru']),\n getFont(['font', 'Euphemia', 'Cans']),\n getFont(['font', 'Plantagenet Cherokee', 'Cher']),\n getFont(['font', 'Microsoft Yi Baiti', 'Yiii']),\n getFont(['font', 'Microsoft Himalaya', 'Tibt']),\n getFont(['font', 'MV Boli', 'Thaa']),\n getFont(['font', 'Mangal', 'Deva']),\n getFont(['font', 'Gautami', 'Telu']),\n getFont(['font', 'Latha', 'Taml']),\n getFont(['font', 'Estrangelo Edessa', 'Syrc']),\n getFont(['font', 'Kalinga', 'Orya']),\n getFont(['font', 'Kartika', 'Mlym']),\n getFont(['font', 'DokChampa', 'Laoo']),\n getFont(['font', 'Iskoola Pota', 'Sinh']),\n getFont(['font', 'Mongolian Baiti', 'Mong']),\n getFont(['font', 'Arial', 'Viet']),\n getFont(['font', 'Microsoft Uighur', 'Uigh']),\n getFont(['font', 'Sylfaen', 'Geor']),\n getFont(['font', 'Arial', 'Armn']),\n getFont(['font', 'Leelawadee UI', 'Bugi']),\n getFont(['font', 'Microsoft JhengHei', 'Bopo']),\n getFont(['font', 'Javanese Text', 'Java']),\n getFont(['font', 'Segoe UI', 'Lisu']),\n getFont(['font', 'Myanmar Text', 'Mymr']),\n getFont(['font', 'Ebrima', 'Nkoo']),\n getFont(['font', 'Nirmala UI', 'Olck']),\n getFont(['font', 'Ebrima', 'Osma']),\n getFont(['font', 'Phagspa', 'Phag']),\n getFont(['font', 'Estrangelo Edessa', 'Syrn']),\n getFont(['font', 'Estrangelo Edessa', 'Syrj']),\n getFont(['font', 'Estrangelo Edessa', 'Syre']),\n getFont(['font', 'Nirmala UI', 'Sora']),\n getFont(['font', 'Microsoft Tai Le', 'Tale']),\n getFont(['font', 'Microsoft New Tai Lue', 'Talu']),\n getFont(['font', 'Ebrima', 'Tfng'])\n ]\n }]\n };\n }\n};\nexports.default = fontScheme;\n//# sourceMappingURL=fontScheme.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar getPropertyVal = function (name, val, children) { return ({\n name: \"a:\" + name,\n properties: {\n rawMap: {\n val: val\n }\n },\n children: children\n}); };\nvar getGs = function (props) {\n var pos = props[0], schemeColor = props[1], satMod = props[2], lumMod = props[3], tint = props[4], shade = props[5];\n var children = [];\n children.push(getPropertyVal('satMod', satMod));\n if (lumMod) {\n children.push(getPropertyVal('lumMod', lumMod));\n }\n if (tint) {\n children.push(getPropertyVal('tint', tint));\n }\n if (shade) {\n children.push(getPropertyVal('shade', shade));\n }\n return {\n name: 'a:gs',\n properties: {\n rawMap: {\n pos: pos\n }\n },\n children: [{\n name: 'a:schemeClr',\n properties: {\n rawMap: {\n val: schemeColor\n }\n },\n children: children\n }]\n };\n};\nvar getSolidFill = function (val, children) { return ({\n name: 'a:solidFill',\n children: [getPropertyVal('schemeClr', val, children)]\n}); };\nvar getGradFill = function (props) {\n var rotWithShape = props[0], gs1 = props[1], gs2 = props[2], gs3 = props[3], lin = props[4];\n var ang = lin[0], scaled = lin[1];\n return {\n name: 'a:gradFill',\n properties: {\n rawMap: {\n rotWithShape: rotWithShape\n }\n },\n children: [{\n name: 'a:gsLst',\n children: [\n getGs(gs1),\n getGs(gs2),\n getGs(gs3)\n ]\n }, {\n name: 'a:lin',\n properties: {\n rawMap: {\n ang: ang,\n scaled: scaled\n }\n }\n }]\n };\n};\nvar getLine = function (props) {\n var w = props[0], cap = props[1], cmpd = props[2], algn = props[3];\n return {\n name: 'a:ln',\n properties: {\n rawMap: { w: w, cap: cap, cmpd: cmpd, algn: algn }\n },\n children: [\n getSolidFill('phClr'),\n getPropertyVal('prstDash', 'solid'),\n {\n name: 'a:miter',\n properties: {\n rawMap: {\n lim: '800000'\n }\n }\n }\n ]\n };\n};\nvar getEffectStyle = function (shadow) {\n var children = [];\n if (shadow) {\n var blurRad = shadow[0], dist = shadow[1], dir = shadow[2], algn = shadow[3], rotWithShape = shadow[4];\n children.push({\n name: 'a:outerShdw',\n properties: {\n rawMap: { blurRad: blurRad, dist: dist, dir: dir, algn: algn, rotWithShape: rotWithShape }\n },\n children: [\n getPropertyVal('srgbClr', '000000', [getPropertyVal('alpha', '63000')])\n ]\n });\n }\n return {\n name: 'a:effectStyle',\n children: [core_1._.assign({}, {\n name: 'a:effectLst'\n }, children.length ? { children: children } : {})]\n };\n};\nvar getFillStyleList = function () { return ({\n name: 'a:fillStyleLst',\n children: [\n getSolidFill('phClr'),\n getGradFill([\n '1',\n ['0', 'phClr', '105000', '110000', '67000'],\n ['50000', 'phClr', '103000', '105000', '73000'],\n ['100000', 'phClr', '109000', '105000', '81000'],\n ['5400000', '0']\n ]),\n getGradFill([\n '1',\n ['0', 'phClr', '103000', '102000', '94000'],\n ['50000', 'phClr', '110000', '100000', undefined, '100000'],\n ['100000', 'phClr', '120000', '99000', undefined, '78000'],\n ['5400000', '0']\n ])\n ]\n}); };\nvar getLineStyleList = function () { return ({\n name: 'a:lnStyleLst',\n children: [\n getLine(['6350', 'flat', 'sng', 'ctr']),\n getLine(['12700', 'flat', 'sng', 'ctr']),\n getLine(['19050', 'flat', 'sng', 'ctr'])\n ]\n}); };\nvar getEffectStyleList = function () { return ({\n name: 'a:effectStyleLst',\n children: [\n getEffectStyle(),\n getEffectStyle(),\n getEffectStyle(['57150', '19050', '5400000', 'ctr', '0'])\n ]\n}); };\nvar getBgFillStyleList = function () { return ({\n name: 'a:bgFillStyleLst',\n children: [\n getSolidFill('phClr'),\n getSolidFill('phClr', [\n getPropertyVal('tint', '95000'),\n getPropertyVal('satMod', '170000'),\n ]),\n getGradFill([\n '1',\n ['0', 'phClr', '150000', '102000', '93000', '98000'],\n ['50000', 'phClr', '130000', '103000', '98000', '90000'],\n ['100000', 'phClr', '120000', undefined, undefined, '63000'],\n ['5400000', '0']\n ])\n ]\n}); };\nvar formatScheme = {\n getTemplate: function () {\n return {\n name: \"a:fmtScheme\",\n properties: {\n rawMap: {\n name: \"Office\"\n }\n },\n children: [\n getFillStyleList(),\n getLineStyleList(),\n getEffectStyleList(),\n getBgFillStyleList()\n ]\n };\n }\n};\nexports.default = formatScheme;\n//# sourceMappingURL=formatScheme.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar buildSharedString = function (textNode) { return ({\n name: 'si',\n children: [{\n name: 't',\n textNode: core_1._.utf8_encode(core_1._.escape(textNode.toString()))\n }]\n}); };\nvar sharedStrings = {\n getTemplate: function (strings) {\n return {\n name: \"sst\",\n properties: {\n rawMap: {\n xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n count: strings.length,\n uniqueCount: strings.length\n }\n },\n children: strings.map(buildSharedString)\n };\n }\n};\nexports.default = sharedStrings;\n//# sourceMappingURL=sharedStrings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar numberFormat_1 = require(\"./numberFormat\");\nvar numberFormatsFactory = {\n getTemplate: function (numberFormats) {\n return {\n name: \"numFmts\",\n properties: {\n rawMap: {\n count: numberFormats.length\n }\n },\n children: numberFormats.map(numberFormat_1.default.getTemplate)\n };\n }\n};\nexports.default = numberFormatsFactory;\n//# sourceMappingURL=numberFormats.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar font_1 = require(\"./font\");\nvar fontsFactory = {\n getTemplate: function (fonts) {\n return {\n name: \"fonts\",\n properties: {\n rawMap: {\n count: fonts.length\n }\n },\n children: fonts.map(font_1.default.getTemplate)\n };\n }\n};\nexports.default = fontsFactory;\n//# sourceMappingURL=fonts.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar fill_1 = require(\"./fill\");\nvar fillsFactory = {\n getTemplate: function (fills) {\n return {\n name: \"fills\",\n properties: {\n rawMap: {\n count: fills.length\n }\n },\n children: fills.map(fill_1.default.getTemplate)\n };\n }\n};\nexports.default = fillsFactory;\n//# sourceMappingURL=fills.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar fillFactory = {\n getTemplate: function (fill) {\n var patternType = fill.patternType, fgTheme = fill.fgTheme, fgTint = fill.fgTint, fgRgb = fill.fgRgb, bgRgb = fill.bgRgb, bgIndexed = fill.bgIndexed;\n var pf = {\n name: 'patternFill',\n properties: {\n rawMap: {\n patternType: patternType\n }\n }\n };\n if (fgTheme || fgTint || fgRgb) {\n pf.children = [{\n name: 'fgColor',\n properties: {\n rawMap: {\n theme: fgTheme,\n tint: fgTint,\n rgb: fgRgb\n }\n }\n }];\n }\n if (bgIndexed) {\n if (!pf.children) {\n pf.children = [];\n }\n pf.children.push({\n name: 'bgColor',\n properties: {\n rawMap: {\n indexed: bgIndexed,\n rgb: bgRgb\n }\n }\n });\n }\n return {\n name: \"fill\",\n children: [pf]\n };\n }\n};\nexports.default = fillFactory;\n//# sourceMappingURL=fill.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar border_1 = require(\"./border\");\nvar bordersFactory = {\n getTemplate: function (borders) {\n return {\n name: \"borders\",\n properties: {\n rawMap: {\n count: borders.length\n }\n },\n children: borders.map(border_1.default.getTemplate)\n };\n }\n};\nexports.default = bordersFactory;\n//# sourceMappingURL=borders.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar xf_1 = require(\"./xf\");\nvar cellStylesXfsFactory = {\n getTemplate: function (xf) {\n return {\n name: \"cellStyleXfs\",\n properties: {\n rawMap: {\n count: xf.length\n }\n },\n children: xf.map(xf_1.default.getTemplate)\n };\n }\n};\nexports.default = cellStylesXfsFactory;\n//# sourceMappingURL=cellStyleXfs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar convertLegacyHorizontalAlignment = function (alignment) {\n var map = {\n Automatic: 'general',\n Left: 'left',\n Center: 'center',\n Right: 'right',\n Fill: 'fill',\n Justify: 'justify',\n CenterAcrossSelection: 'centerContinuous',\n Distributed: 'distributed',\n JustifyDistributed: 'justify'\n };\n return map[alignment] || 'general';\n};\nvar convertLegacyVerticalAlignment = function (alignment) {\n var map = {\n Automatic: undefined,\n Top: 'top',\n Bottom: 'bottom',\n Center: 'center',\n Justify: 'justify',\n Distributed: 'distributed',\n JustifyDistributed: 'justify'\n };\n return map[alignment] || undefined;\n};\nvar getReadingOrderId = function (readingOrder) {\n var order = ['Context', 'LeftToRight', 'RightToLeft'];\n var pos = order.indexOf(readingOrder);\n return Math.max(pos, 0);\n};\nvar alignmentFactory = {\n getTemplate: function (alignment) {\n var horizontal = alignment.horizontal, indent = alignment.indent, readingOrder = alignment.readingOrder, rotate = alignment.rotate, shrinkToFit = alignment.shrinkToFit, vertical = alignment.vertical, wrapText = alignment.wrapText;\n return {\n name: 'alignment',\n properties: {\n rawMap: {\n horizontal: horizontal && convertLegacyHorizontalAlignment(horizontal),\n indent: indent,\n readingOrder: readingOrder && getReadingOrderId(readingOrder),\n textRotation: rotate,\n shrinkToFit: shrinkToFit,\n vertical: vertical && convertLegacyVerticalAlignment(vertical),\n wrapText: wrapText\n }\n }\n };\n }\n};\nexports.default = alignmentFactory;\n//# sourceMappingURL=alignment.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar protectionFactory = {\n getTemplate: function (protection) {\n var locked = protection.protected === false ? 0 : 1;\n var hidden = protection.hideFormula === true ? 1 : 0;\n return {\n name: 'protection',\n properties: {\n rawMap: {\n hidden: hidden,\n locked: locked\n }\n }\n };\n }\n};\nexports.default = protectionFactory;\n//# sourceMappingURL=protection.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar xf_1 = require(\"./xf\");\nvar cellXfsFactory = {\n getTemplate: function (xf) {\n return {\n name: \"cellXfs\",\n properties: {\n rawMap: {\n count: xf.length\n }\n },\n children: xf.map(xf_1.default.getTemplate)\n };\n }\n};\nexports.default = cellXfsFactory;\n//# sourceMappingURL=cellXfs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cellStyle_1 = require(\"./cellStyle\");\nvar cellStylesFactory = {\n getTemplate: function (cellStyles) {\n return {\n name: \"cellStyles\",\n properties: {\n rawMap: {\n count: cellStyles.length\n }\n },\n children: cellStyles.map(cellStyle_1.default.getTemplate)\n };\n }\n};\nexports.default = cellStylesFactory;\n//# sourceMappingURL=cellStyles.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar borderFactory = {\n getTemplate: function (cellStyle) {\n var builtinId = cellStyle.builtinId, name = cellStyle.name, xfId = cellStyle.xfId;\n return {\n name: \"cellStyle\",\n properties: {\n rawMap: {\n builtinId: builtinId,\n name: name,\n xfId: xfId\n }\n }\n };\n }\n};\nexports.default = borderFactory;\n//# sourceMappingURL=cellStyle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar sheets_1 = require(\"./sheets\");\nvar workbookFactory = {\n getTemplate: function (names) {\n return {\n name: \"workbook\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n r: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"\n },\n }],\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"\n }\n },\n children: [sheets_1.default.getTemplate(names)]\n };\n }\n};\nexports.default = workbookFactory;\n//# sourceMappingURL=workbook.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar sheet_1 = require(\"./sheet\");\nvar sheetsFactory = {\n getTemplate: function (names) {\n return {\n name: \"sheets\",\n children: names.map(sheet_1.default.getTemplate)\n };\n }\n};\nexports.default = sheetsFactory;\n//# sourceMappingURL=sheets.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar sheetFactory = {\n getTemplate: function (name, idx) {\n var sheetId = (idx + 1).toString();\n return {\n name: \"sheet\",\n properties: {\n rawMap: {\n \"name\": name,\n \"sheetId\": sheetId,\n \"r:id\": \"rId\" + sheetId\n }\n }\n };\n }\n};\nexports.default = sheetFactory;\n//# sourceMappingURL=sheet.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://docs.microsoft.com/en-us/office/troubleshoot/excel/determine-column-widths\nvar getExcelCellWidth = function (width) { return Math.ceil((width - 12) / 7 + 1); };\nvar columnFactory = {\n getTemplate: function (config) {\n var min = config.min, max = config.max, s = config.s, width = config.width, hidden = config.hidden, bestFit = config.bestFit;\n var excelWidth = 1;\n var customWidth = '0';\n if (width > 1) {\n excelWidth = getExcelCellWidth(width);\n customWidth = '1';\n }\n return {\n name: 'col',\n properties: {\n rawMap: {\n min: min,\n max: max,\n width: excelWidth,\n style: s,\n hidden: hidden ? '1' : '0',\n bestFit: bestFit ? '1' : '0',\n customWidth: customWidth\n }\n }\n };\n }\n};\nexports.default = columnFactory;\n//# sourceMappingURL=column.js.map","\"use strict\";\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar worksheet_1 = require(\"./worksheet\");\nvar cell_1 = require(\"./cell\");\nvar addEmptyCells = function (cells, rowIdx) {\n var mergeMap = [];\n var posCounter = 0;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.mergeAcross) {\n mergeMap.push({\n pos: i,\n excelPos: posCounter\n });\n posCounter += cells[i].mergeAcross;\n }\n posCounter++;\n }\n if (mergeMap.length) {\n for (var i = mergeMap.length - 1; i >= 0; i--) {\n var mergedCells = [];\n var cell = cells[mergeMap[i].pos];\n for (var j = 1; j <= cell.mergeAcross; j++) {\n mergedCells.push({\n ref: \"\" + worksheet_1.getExcelColumnName(mergeMap[i].excelPos + 1 + j) + (rowIdx + 1),\n styleId: cell.styleId,\n data: { type: 'empty', value: null }\n });\n }\n if (mergedCells.length) {\n cells.splice.apply(cells, __spreadArrays([mergeMap[i].pos + 1, 0], mergedCells));\n }\n }\n }\n};\nvar rowFactory = {\n getTemplate: function (config, idx) {\n var index = config.index, collapsed = config.collapsed, hidden = config.hidden, height = config.height, s = config.s, _a = config.cells, cells = _a === void 0 ? [] : _a;\n addEmptyCells(cells, idx);\n var children = cells.map(cell_1.default.getTemplate);\n return {\n name: \"row\",\n properties: {\n rawMap: {\n r: index,\n collapsed: collapsed,\n hidden: hidden ? '1' : '0',\n ht: height,\n customHeight: height != null ? '1' : '0',\n s: s,\n customFormat: s != null ? '1' : '0'\n }\n },\n children: children\n };\n }\n};\nexports.default = rowFactory;\n//# sourceMappingURL=row.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar stylesheet_1 = require(\"./styles/stylesheet\");\nvar convertLegacyType = function (type) {\n var t = type.charAt(0).toLowerCase();\n return t === 's' ? 'inlineStr' : t;\n};\nvar cellFactory = {\n getTemplate: function (config) {\n var ref = config.ref, data = config.data, styleId = config.styleId;\n var type = data.type, value = data.value;\n var convertedType = type;\n if (type.charAt(0) === type.charAt(0).toUpperCase()) {\n convertedType = convertLegacyType(type);\n }\n var obj = {\n name: 'c',\n properties: {\n rawMap: {\n r: ref,\n t: convertedType === 'empty' ? undefined : convertedType,\n s: styleId ? stylesheet_1.getStyleId(styleId) : undefined\n }\n }\n };\n var children;\n if (convertedType === 'inlineStr') {\n children = [{\n name: 'is',\n children: [{\n name: 't',\n textNode: core_1._.escape(core_1._.utf8_encode(value))\n }]\n }];\n }\n else {\n children = [{\n name: 'v',\n textNode: value\n }];\n }\n return core_1._.assign({}, obj, { children: children });\n }\n};\nexports.default = cellFactory;\n//# sourceMappingURL=cell.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar mergeCell = {\n getTemplate: function (ref) {\n return {\n name: 'mergeCell',\n properties: {\n rawMap: {\n ref: ref\n }\n }\n };\n }\n};\nexports.default = mergeCell;\n//# sourceMappingURL=mergeCell.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar relationship_1 = require(\"./relationship\");\nvar relationshipsFactory = {\n getTemplate: function (c) {\n var children = c.map(relationship_1.default.getTemplate);\n return {\n name: \"Relationships\",\n properties: {\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/package/2006/relationships\"\n }\n },\n children: children\n };\n }\n};\nexports.default = relationshipsFactory;\n//# sourceMappingURL=relationships.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar relationshipFactory = {\n getTemplate: function (config) {\n var Id = config.Id, Type = config.Type, Target = config.Target;\n return {\n name: \"Relationship\",\n properties: {\n rawMap: {\n Id: Id,\n Type: Type,\n Target: Target\n }\n }\n };\n }\n};\nexports.default = relationshipFactory;\n//# sourceMappingURL=relationship.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar core_2 = require(\"@ag-grid-community/core\");\nvar workbook_1 = require(\"./files/xml/workbook\");\nvar excelWorkbook_1 = require(\"./files/xml/excelWorkbook\");\nvar worksheet_1 = require(\"./files/xml/worksheet\");\nvar documentProperties_1 = require(\"./files/xml/documentProperties\");\nvar alignment_1 = require(\"./files/xml/styles/alignment\");\nvar borders_1 = require(\"./files/xml/styles/borders\");\nvar font_1 = require(\"./files/xml/styles/font\");\nvar interior_1 = require(\"./files/xml/styles/interior\");\nvar protection_1 = require(\"./files/xml/styles/protection\");\nvar numberFormat_1 = require(\"./files/xml/styles/numberFormat\");\nvar style_1 = require(\"./files/xml/styles/style\");\n/**\n * See https://msdn.microsoft.com/en-us/library/aa140066(v=office.10).aspx\n */\nvar ExcelXmlFactory = /** @class */ (function () {\n function ExcelXmlFactory() {\n }\n ExcelXmlFactory.prototype.createExcel = function (styles, worksheets, sharedStrings) {\n var header = this.excelXmlHeader();\n var docProps = documentProperties_1.default.getTemplate();\n var eWorkbook = excelWorkbook_1.default.getTemplate();\n var wb = this.workbook(docProps, eWorkbook, styles, worksheets);\n return \"\" + header + this.xmlFactory.createXml(wb, function (boolean) { return boolean ? '1' : '0'; });\n };\n ExcelXmlFactory.prototype.workbook = function (docProperties, eWorkbook, styles, worksheets) {\n var children = [\n docProperties,\n eWorkbook,\n this.stylesXmlElement(styles)\n ].concat(worksheets.map(function (it) { return worksheet_1.default.getTemplate(it); }));\n return core_1._.assign({}, workbook_1.default.getTemplate(), { children: children });\n };\n ExcelXmlFactory.prototype.excelXmlHeader = function () {\n return \"\\n \\n \";\n };\n ExcelXmlFactory.prototype.stylesXmlElement = function (styles) {\n var _this = this;\n return {\n name: 'Styles',\n children: styles ? styles.map(function (it) { return _this.styleXmlElement(it); }) : []\n };\n };\n ExcelXmlFactory.prototype.styleXmlElement = function (styleProperties) {\n var children = core_1._.compose(this.addProperty('alignment', styleProperties), this.addProperty('borders', styleProperties), this.addProperty('font', styleProperties), this.addProperty('interior', styleProperties), this.addProperty('protection', styleProperties), this.addProperty('numberFormat', styleProperties))([]);\n return core_1._.assign({}, style_1.default.getTemplate(styleProperties), { children: children });\n };\n ExcelXmlFactory.prototype.addProperty = function (property, styleProperties) {\n return function (children) {\n if (!styleProperties[property]) {\n return children;\n }\n var options = {\n alignment: alignment_1.default,\n borders: borders_1.default,\n font: font_1.default,\n interior: interior_1.default,\n numberFormat: numberFormat_1.default,\n protection: protection_1.default\n };\n return children.concat(options[property].getTemplate(styleProperties));\n };\n };\n __decorate([\n core_2.Autowired('xmlFactory')\n ], ExcelXmlFactory.prototype, \"xmlFactory\", void 0);\n ExcelXmlFactory = __decorate([\n core_2.Bean('excelXmlFactory')\n ], ExcelXmlFactory);\n return ExcelXmlFactory;\n}());\nexports.ExcelXmlFactory = ExcelXmlFactory;\n//# sourceMappingURL=excelXmlFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar workbook = {\n getTemplate: function () {\n return {\n name: \"Workbook\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n o: \"urn:schemas-microsoft-com:office:office\",\n x: \"urn:schemas-microsoft-com:office:excel\",\n ss: \"urn:schemas-microsoft-com:office:spreadsheet\",\n html: \"http://www.w3.org/TR/REC-html40\"\n },\n }],\n rawMap: {\n xmlns: \"urn:schemas-microsoft-com:office:spreadsheet\"\n }\n }\n };\n }\n};\nexports.default = workbook;\n//# sourceMappingURL=workbook.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar excelWorkbook = {\n getTemplate: function () {\n return {\n name: \"ExcelWorkbook\",\n properties: {\n rawMap: {\n xmlns: \"urn:schemas-microsoft-com:office:excel\"\n }\n },\n children: [{\n name: \"WindowHeight\",\n textNode: \"8130\"\n }, {\n name: \"WindowWidth\",\n textNode: \"15135\"\n }, {\n name: \"WindowHeight\",\n textNode: \"8130\"\n }, {\n name: \"WindowTopX\",\n textNode: \"120\"\n }, {\n name: \"WindowTopY\",\n textNode: \"45\"\n }, {\n name: \"ProtectStructure\",\n textNode: \"False\"\n }, {\n name: \"ProtectWindow\",\n textNode: \"False\"\n }]\n };\n }\n};\nexports.default = excelWorkbook;\n//# sourceMappingURL=excelWorkbook.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar column_1 = require(\"./column\");\nvar row_1 = require(\"./row\");\nvar worksheet = {\n getTemplate: function (ws) {\n var table = ws.table, name = ws.name;\n var columns = table.columns, rows = table.rows;\n var c = columns.map(function (it) { return column_1.default.getTemplate(it); });\n var r = rows.map(function (it) { return row_1.default.getTemplate(it); });\n return {\n name: \"Worksheet\",\n children: [{\n name: \"Table\",\n children: c.concat(r)\n }],\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Name: name\n }\n }]\n }\n };\n }\n};\nexports.default = worksheet;\n//# sourceMappingURL=worksheet.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar column = {\n getTemplate: function (c) {\n var width = c.width;\n return {\n name: \"Column\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Width: width\n }\n }]\n }\n };\n }\n};\nexports.default = column;\n//# sourceMappingURL=column.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cell_1 = require(\"./cell\");\nvar row = {\n getTemplate: function (r) {\n var cells = r.cells;\n return {\n name: \"Row\",\n children: cells.map(function (it) { return cell_1.default.getTemplate(it); })\n };\n }\n};\nexports.default = row;\n//# sourceMappingURL=row.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cell = {\n getTemplate: function (c) {\n var mergeAcross = c.mergeAcross, styleId = c.styleId, data = c.data;\n var properties = {};\n if (mergeAcross) {\n properties.MergeAcross = mergeAcross;\n }\n if (styleId) {\n properties.StyleID = styleId;\n }\n return {\n name: \"Cell\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: properties\n }]\n },\n children: [{\n name: \"Data\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Type: data.type\n }\n }]\n },\n textNode: data.value\n }]\n };\n }\n};\nexports.default = cell;\n//# sourceMappingURL=cell.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar documentProperties = {\n getTemplate: function () {\n return {\n name: \"DocumentProperties\",\n properties: {\n rawMap: {\n xmlns: \"urn:schemas-microsoft-com:office:office\"\n }\n },\n children: [{\n name: \"Version\",\n textNode: \"12.00\"\n }]\n };\n }\n};\nexports.default = documentProperties;\n//# sourceMappingURL=documentProperties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar alignment = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.alignment, vertical = _a.vertical, horizontal = _a.horizontal, indent = _a.indent, readingOrder = _a.readingOrder, rotate = _a.rotate, shrinkToFit = _a.shrinkToFit, verticalText = _a.verticalText, wrapText = _a.wrapText;\n return {\n name: 'Alignment',\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Vertical: vertical,\n Horizontal: horizontal,\n Indent: indent,\n ReadingOrder: readingOrder,\n Rotate: rotate,\n ShrinkToFit: shrinkToFit,\n VerticalText: verticalText,\n WrapText: wrapText\n }\n }]\n }\n };\n }\n};\nexports.default = alignment;\n//# sourceMappingURL=alignment.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar borders = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.borders, borderBottom = _a.borderBottom, borderLeft = _a.borderLeft, borderRight = _a.borderRight, borderTop = _a.borderTop;\n return {\n name: 'Borders',\n children: [borderBottom, borderLeft, borderRight, borderTop].map(function (it, index) {\n var current = index == 0 ? \"Bottom\" : index == 1 ? \"Left\" : index == 2 ? \"Right\" : \"Top\";\n return {\n name: 'Border',\n properties: {\n prefixedAttributes: [{\n prefix: 'ss:',\n map: {\n Position: current,\n LineStyle: it.lineStyle,\n Weight: it.weight,\n Color: it.color\n }\n }]\n }\n };\n })\n };\n }\n};\nexports.default = borders;\n//# sourceMappingURL=borders.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar font = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.font, bold = _a.bold, fontName = _a.fontName, italic = _a.italic, color = _a.color, outline = _a.outline, shadow = _a.shadow, size = _a.size, strikeThrough = _a.strikeThrough, underline = _a.underline, verticalAlign = _a.verticalAlign, charSet = _a.charSet, family = _a.family;\n return {\n name: \"Font\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Bold: bold,\n FontName: fontName,\n Italic: italic,\n Color: color,\n Outline: outline,\n Shadow: shadow,\n Size: size,\n StrikeThrough: strikeThrough,\n Underline: underline,\n VerticalAlign: verticalAlign\n }\n }, {\n prefix: \"x:\",\n map: {\n CharSet: charSet,\n Family: family\n }\n }]\n }\n };\n }\n};\nexports.default = font;\n//# sourceMappingURL=font.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar interior = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.interior, color = _a.color, pattern = _a.pattern, patternColor = _a.patternColor;\n return {\n name: \"Interior\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Color: color,\n Pattern: pattern,\n PatternColor: patternColor\n }\n }]\n }\n };\n }\n};\nexports.default = interior;\n//# sourceMappingURL=interior.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar protection = {\n getTemplate: function (styleProperties) {\n return {\n name: \"Protection\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Protected: styleProperties.protection.protected,\n HideFormula: styleProperties.protection.hideFormula\n }\n }]\n }\n };\n }\n};\nexports.default = protection;\n//# sourceMappingURL=protection.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar numberFormat = {\n getTemplate: function (styleProperties) {\n var format = styleProperties.numberFormat.format;\n return {\n name: \"NumberFormat\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Format: format\n }\n }]\n }\n };\n }\n};\nexports.default = numberFormat;\n//# sourceMappingURL=numberFormat.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar style = {\n getTemplate: function (styleProperties) {\n var id = styleProperties.id, name = styleProperties.name;\n return {\n name: 'Style',\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n ID: id,\n Name: name ? name : id\n }\n }]\n }\n };\n }\n};\nexports.default = style;\n//# sourceMappingURL=style.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar excelXmlSerializingSession_1 = require(\"./excelXmlSerializingSession\");\nvar excelXlsxSerializingSession_1 = require(\"./excelXlsxSerializingSession\");\nvar csv_export_1 = require(\"@ag-grid-community/csv-export\");\nvar ExcelCreator = /** @class */ (function (_super) {\n __extends(ExcelCreator, _super);\n function ExcelCreator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ExcelCreator.prototype.postConstruct = function () {\n this.setBeans({\n downloader: this.downloader,\n gridSerializer: this.gridSerializer,\n gridOptionsWrapper: this.gridOptionsWrapper\n });\n };\n ExcelCreator.prototype.exportDataAsExcel = function (params) {\n this.setExportMode(params ? params.exportMode : undefined);\n return this.export(params);\n };\n ExcelCreator.prototype.getDataAsExcelXml = function (params) {\n if (params && params.exportMode) {\n delete params.exportMode;\n }\n this.setExportMode('xml');\n return this.getData(params || {});\n };\n ExcelCreator.prototype.getMimeType = function () {\n return this.getExportMode() === 'xml' ? 'application/vnd.ms-excel' : 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n };\n ExcelCreator.prototype.getDefaultFileName = function () {\n return \"export.\" + this.getExportMode();\n };\n ExcelCreator.prototype.getDefaultFileExtension = function () {\n return this.getExportMode();\n };\n ExcelCreator.prototype.createSerializingSession = function (params) {\n var _a = this, columnController = _a.columnController, valueService = _a.valueService, gridOptionsWrapper = _a.gridOptionsWrapper;\n var isXlsx = this.getExportMode() === 'xlsx';\n var excelFactory = isXlsx ? this.xlsxFactory : this.excelXmlFactory;\n var sheetName = 'ag-grid';\n if (core_1._.exists(params.sheetName)) {\n sheetName = core_1._.utf8_encode(params.sheetName.toString().substr(0, 31));\n }\n var config = __assign(__assign({}, params), { columnController: columnController,\n valueService: valueService,\n gridOptionsWrapper: gridOptionsWrapper, headerRowHeight: params.headerRowHeight || params.rowHeight, sheetName: sheetName,\n excelFactory: excelFactory, baseExcelStyles: this.gridOptions.excelStyles || [], styleLinker: this.styleLinker.bind(this) });\n return new (isXlsx ? excelXlsxSerializingSession_1.ExcelXlsxSerializingSession : excelXmlSerializingSession_1.ExcelXmlSerializingSession)((config));\n };\n ExcelCreator.prototype.styleLinker = function (rowType, rowIndex, colIndex, value, column, node) {\n if ((rowType === csv_export_1.RowType.HEADER) || (rowType === csv_export_1.RowType.HEADER_GROUPING)) {\n return [\"header\"];\n }\n var styles = this.gridOptions.excelStyles;\n if (!styles || !styles.length) {\n return null;\n }\n var styleIds = styles.map(function (it) {\n return it.id;\n });\n var applicableStyles = [];\n this.stylingService.processAllCellClasses(column.getColDef(), {\n value: value,\n data: node.data,\n node: node,\n colDef: column.getColDef(),\n rowIndex: rowIndex,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n $scope: null,\n context: this.gridOptionsWrapper.getContext()\n }, function (className) {\n if (styleIds.indexOf(className) > -1) {\n applicableStyles.push(className);\n }\n });\n return applicableStyles.sort(function (left, right) {\n return (styleIds.indexOf(left) < styleIds.indexOf(right)) ? -1 : 1;\n });\n };\n ExcelCreator.prototype.isExportSuppressed = function () {\n return this.gridOptionsWrapper.isSuppressExcelExport();\n };\n ExcelCreator.prototype.setExportMode = function (exportMode) {\n this.exportMode = exportMode;\n };\n ExcelCreator.prototype.getExportMode = function () {\n return this.exportMode || 'xlsx';\n };\n ExcelCreator.prototype.packageFile = function (data) {\n if (this.getExportMode() === 'xml') {\n return _super.prototype.packageFile.call(this, data);\n }\n var _a = this, zipContainer = _a.zipContainer, xlsxFactory = _a.xlsxFactory;\n zipContainer.addFolders([\n 'xl/worksheets/',\n 'xl/',\n 'xl/theme/',\n 'xl/_rels/',\n 'docProps/',\n '_rels/'\n ]);\n zipContainer.addFile('xl/worksheets/sheet1.xml', data);\n zipContainer.addFile('xl/workbook.xml', xlsxFactory.createWorkbook());\n zipContainer.addFile('xl/styles.xml', xlsxFactory.createStylesheet());\n zipContainer.addFile('xl/sharedStrings.xml', xlsxFactory.createSharedStrings());\n zipContainer.addFile('xl/theme/theme1.xml', xlsxFactory.createTheme());\n zipContainer.addFile('xl/_rels/workbook.xml.rels', xlsxFactory.createWorkbookRels());\n zipContainer.addFile('docProps/core.xml', xlsxFactory.createCore());\n zipContainer.addFile('[Content_Types].xml', xlsxFactory.createContentTypes());\n zipContainer.addFile('_rels/.rels', xlsxFactory.createRels());\n return zipContainer.getContent('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\n };\n __decorate([\n core_1.Autowired('excelXmlFactory')\n ], ExcelCreator.prototype, \"excelXmlFactory\", void 0);\n __decorate([\n core_1.Autowired('excelXlsxFactory')\n ], ExcelCreator.prototype, \"xlsxFactory\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], ExcelCreator.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('valueService')\n ], ExcelCreator.prototype, \"valueService\", void 0);\n __decorate([\n core_1.Autowired('gridOptions')\n ], ExcelCreator.prototype, \"gridOptions\", void 0);\n __decorate([\n core_1.Autowired('stylingService')\n ], ExcelCreator.prototype, \"stylingService\", void 0);\n __decorate([\n core_1.Autowired('downloader')\n ], ExcelCreator.prototype, \"downloader\", void 0);\n __decorate([\n core_1.Autowired('gridSerializer')\n ], ExcelCreator.prototype, \"gridSerializer\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], ExcelCreator.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('zipContainer')\n ], ExcelCreator.prototype, \"zipContainer\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ExcelCreator.prototype, \"postConstruct\", null);\n ExcelCreator = __decorate([\n core_1.Bean('excelCreator')\n ], ExcelCreator);\n return ExcelCreator;\n}(csv_export_1.BaseCreator));\nexports.ExcelCreator = ExcelCreator;\n//# sourceMappingURL=excelCreator.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar excelXmlSerializingSession_1 = require(\"./excelXmlSerializingSession\");\nvar csv_export_1 = require(\"@ag-grid-community/csv-export\");\nvar ExcelXlsxSerializingSession = /** @class */ (function (_super) {\n __extends(ExcelXlsxSerializingSession, _super);\n function ExcelXlsxSerializingSession() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stringList = [];\n _this.stringMap = {};\n return _this;\n }\n ExcelXlsxSerializingSession.prototype.onNewHeaderGroupingRow = function () {\n var _this = this;\n var currentCells = [];\n this.rows.push({\n cells: currentCells,\n height: this.config.headerRowHeight\n });\n return {\n onColumn: function (header, index, span) {\n var styleIds = _this.config.styleLinker(csv_export_1.RowType.HEADER_GROUPING, 1, index, \"grouping-\" + header, undefined, undefined);\n currentCells.push(_this.createMergedCell((styleIds && styleIds.length > 0) ? styleIds[0] : undefined, 's', header, span));\n }\n };\n };\n ExcelXlsxSerializingSession.prototype.onNewHeaderColumn = function (rowIndex, currentCells) {\n var _this = this;\n return function (column, index, node) {\n var nameForCol = _this.extractHeaderValue(column);\n var styleIds = _this.config.styleLinker(csv_export_1.RowType.HEADER, rowIndex, index, nameForCol, column, undefined);\n currentCells.push(_this.createCell((styleIds && styleIds.length > 0) ? styleIds[0] : undefined, 's', nameForCol));\n };\n };\n ExcelXlsxSerializingSession.prototype.createExcel = function (data) {\n return this.config.excelFactory.createExcel(this.excelStyles, data, this.stringList);\n };\n ExcelXlsxSerializingSession.prototype.getDataTypeForValue = function (valueForCell) {\n return core_1._.isNumeric(valueForCell) ? 'n' : 's';\n };\n ExcelXlsxSerializingSession.prototype.getStringPosition = function (val) {\n var pos = this.stringMap[val];\n if (pos === undefined) {\n pos = this.stringMap[val] = this.stringList.length;\n this.stringList.push(val);\n }\n return pos;\n };\n ExcelXlsxSerializingSession.prototype.createCell = function (styleId, type, value) {\n var actualStyle = styleId && this.stylesByIds[styleId];\n var styleExists = actualStyle !== undefined;\n function getType() {\n if (styleExists &&\n actualStyle.dataType) {\n switch (actualStyle.dataType) {\n case 'string':\n return 's';\n case 'number':\n return 'n';\n case 'dateTime':\n return 'd';\n case 'error':\n return 'e';\n case 'boolean':\n return 'b';\n default:\n console.warn(\"ag-grid: Unrecognized data type for excel export [\" + actualStyle.id + \".dataType=\" + actualStyle.dataType + \"]\");\n }\n }\n return type;\n }\n var typeTransformed = getType();\n return {\n styleId: styleExists ? styleId : undefined,\n data: {\n type: typeTransformed,\n value: typeTransformed === 's'\n ? this.getStringPosition(value == null ? '' : value).toString()\n : typeTransformed === 'n'\n ? Number(value).toString()\n : value\n }\n };\n };\n ExcelXlsxSerializingSession.prototype.createMergedCell = function (styleId, type, value, numOfCells) {\n return {\n styleId: this.styleExists(styleId) ? styleId : undefined,\n data: {\n type: type,\n value: type === 's' ? this.getStringPosition(value == null ? '' : value).toString() : value\n },\n mergeAcross: numOfCells\n };\n };\n return ExcelXlsxSerializingSession;\n}(excelXmlSerializingSession_1.ExcelXmlSerializingSession));\nexports.ExcelXlsxSerializingSession = ExcelXlsxSerializingSession;\n//# sourceMappingURL=excelXlsxSerializingSession.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar core_2 = require(\"@ag-grid-enterprise/core\");\nvar filtersToolPanelHeaderPanel_1 = require(\"./filterToolPanel/filtersToolPanelHeaderPanel\");\nvar filtersToolPanelListPanel_1 = require(\"./filterToolPanel/filtersToolPanelListPanel\");\nvar filtersToolPanel_1 = require(\"./filterToolPanel/filtersToolPanel\");\nvar side_bar_1 = require(\"@ag-grid-enterprise/side-bar\");\nexports.FiltersToolPanelModule = {\n moduleName: core_1.ModuleNames.FiltersToolPanelModule,\n beans: [],\n agStackComponents: [\n { componentName: 'AgFiltersToolPanelHeader', componentClass: filtersToolPanelHeaderPanel_1.FiltersToolPanelHeaderPanel },\n { componentName: 'AgFiltersToolPanelList', componentClass: filtersToolPanelListPanel_1.FiltersToolPanelListPanel }\n ],\n userComponents: [\n { componentName: 'agFiltersToolPanel', componentClass: filtersToolPanel_1.FiltersToolPanel },\n ],\n dependantModules: [\n side_bar_1.SideBarModule,\n core_2.EnterpriseCoreModule\n ]\n};\n//# sourceMappingURL=filtersToolPanelModule.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar toolPanelFilterComp_1 = require(\"./toolPanelFilterComp\");\nvar toolPanelFilterGroupComp_1 = require(\"./toolPanelFilterGroupComp\");\nvar filtersToolPanelHeaderPanel_1 = require(\"./filtersToolPanelHeaderPanel\");\nvar FiltersToolPanelListPanel = /** @class */ (function (_super) {\n __extends(FiltersToolPanelListPanel, _super);\n function FiltersToolPanelListPanel() {\n var _this = _super.call(this, FiltersToolPanelListPanel.TEMPLATE) || this;\n _this.initialised = false;\n _this.filterGroupComps = [];\n return _this;\n }\n FiltersToolPanelListPanel.prototype.init = function (params) {\n var _this = this;\n this.initialised = true;\n var defaultParams = {\n suppressExpandAll: false,\n suppressFilterSearch: false,\n suppressSyncLayoutWithGrid: false,\n api: this.gridApi\n };\n core_1._.mergeDeep(defaultParams, params);\n this.params = defaultParams;\n if (!this.params.suppressSyncLayoutWithGrid) {\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_MOVED, function () { return _this.onColumnsChanged(); });\n }\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_NEW_COLUMNS_LOADED, function () { return _this.onColumnsChanged(); });\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED, function (event) {\n // when re-entering the filters tool panel we need to refresh the virtual lists in the set filters in case\n // filters have been changed elsewhere, i.e. via an api call.\n if (event.source === 'filters') {\n _this.refreshFilters();\n }\n });\n if (this.columnController.isReady()) {\n this.onColumnsChanged();\n }\n };\n FiltersToolPanelListPanel.prototype.onColumnsChanged = function () {\n var pivotModeActive = this.columnController.isPivotMode();\n var shouldSyncColumnLayoutWithGrid = !this.params.suppressSyncLayoutWithGrid && !pivotModeActive;\n shouldSyncColumnLayoutWithGrid ? this.syncFilterLayout() : this.buildTreeFromProvidedColumnDefs();\n };\n FiltersToolPanelListPanel.prototype.syncFilterLayout = function () {\n this.toolPanelColDefService.syncLayoutWithGrid(this.setFiltersLayout.bind(this));\n };\n FiltersToolPanelListPanel.prototype.buildTreeFromProvidedColumnDefs = function () {\n var _this = this;\n this.destroyFilters();\n var columnTree = this.columnController.getPrimaryColumnTree();\n this.filterGroupComps = this.recursivelyAddComps(columnTree, 0);\n var len = this.filterGroupComps.length;\n if (len) {\n this.filterGroupComps.forEach(function (comp) { return _this.appendChild(comp); });\n this.setFirstAndLastVisible(0, len - 1);\n }\n // perform search if searchFilterText exists\n if (core_1._.exists(this.searchFilterText)) {\n this.searchFilters(this.searchFilterText);\n }\n // notify header of expand\n this.fireExpandedEvent();\n };\n FiltersToolPanelListPanel.prototype.setFiltersLayout = function (colDefs) {\n var _this = this;\n this.destroyFilters();\n var columnTree = this.toolPanelColDefService.createColumnTree(colDefs);\n this.filterGroupComps = this.recursivelyAddComps(columnTree, 0);\n var len = this.filterGroupComps.length;\n if (len) {\n this.filterGroupComps.forEach(function (comp) { return _this.appendChild(comp); });\n this.setFirstAndLastVisible(0, len - 1);\n }\n // perform search if searchFilterText exists\n if (core_1._.exists(this.searchFilterText)) {\n this.searchFilters(this.searchFilterText);\n }\n // notify header of expand\n this.fireExpandedEvent();\n };\n FiltersToolPanelListPanel.prototype.recursivelyAddComps = function (tree, depth) {\n var _this = this;\n return core_1._.flatten(tree.map(function (child) {\n if (child instanceof core_1.OriginalColumnGroup) {\n return core_1._.flatten(_this.recursivelyAddFilterGroupComps(child, depth));\n }\n var column = child;\n if (!_this.shouldDisplayFilter(column)) {\n return [];\n }\n ;\n var hideFilterCompHeader = depth === 0;\n var filterComp = new toolPanelFilterComp_1.ToolPanelFilterComp(hideFilterCompHeader);\n _this.getContext().wireBean(filterComp);\n filterComp.setColumn(column);\n if (depth > 0) {\n return filterComp;\n }\n var filterGroupComp = new toolPanelFilterGroupComp_1.ToolPanelFilterGroupComp(column, [filterComp], _this.onGroupExpanded.bind(_this), depth);\n _this.getContext().wireBean(filterGroupComp);\n filterGroupComp.collapse();\n return filterGroupComp;\n }));\n };\n FiltersToolPanelListPanel.prototype.recursivelyAddFilterGroupComps = function (columnGroup, depth) {\n if (!this.filtersExistInChildren(columnGroup.getChildren()))\n return;\n if (columnGroup.getColGroupDef() && columnGroup.getColGroupDef().suppressFiltersToolPanel) {\n return [];\n }\n var newDepth = columnGroup.isPadding() ? depth : depth + 1;\n var childFilterComps = core_1._.flatten(this.recursivelyAddComps(columnGroup.getChildren(), newDepth));\n if (columnGroup.isPadding())\n return childFilterComps;\n var filterGroupComp = new toolPanelFilterGroupComp_1.ToolPanelFilterGroupComp(columnGroup, childFilterComps, this.onGroupExpanded.bind(this), depth);\n this.getContext().wireBean(filterGroupComp);\n return [filterGroupComp];\n };\n FiltersToolPanelListPanel.prototype.filtersExistInChildren = function (tree) {\n var _this = this;\n return tree.some(function (child) {\n if (child instanceof core_1.OriginalColumnGroup) {\n return _this.filtersExistInChildren(child.getChildren());\n }\n return _this.shouldDisplayFilter(child);\n });\n };\n FiltersToolPanelListPanel.prototype.shouldDisplayFilter = function (column) {\n var suppressFiltersToolPanel = column.getColDef() && column.getColDef().suppressFiltersToolPanel;\n return column.isFilterAllowed() && !suppressFiltersToolPanel;\n };\n // we don't support refreshing, but must implement because it's on the tool panel interface\n FiltersToolPanelListPanel.prototype.refresh = function () { };\n // lazy initialise the panel\n FiltersToolPanelListPanel.prototype.setVisible = function (visible) {\n _super.prototype.setDisplayed.call(this, visible);\n if (visible && !this.initialised) {\n this.init(this.params);\n }\n };\n FiltersToolPanelListPanel.prototype.expandFilterGroups = function (expand, groupIds) {\n var updatedGroupIds = [];\n var updateGroupExpandState = function (filterGroup) {\n var groupId = filterGroup.getFilterGroupId();\n var shouldExpandOrCollapse = !groupIds || core_1._.includes(groupIds, groupId);\n if (shouldExpandOrCollapse) {\n // don't expand 'column groups', i.e. top level columns wrapped in a group\n if (expand && filterGroup.isColumnGroup()) {\n filterGroup.expand();\n }\n else {\n filterGroup.collapse();\n }\n updatedGroupIds.push(groupId);\n }\n // recursively look for more groups to expand / collapse\n filterGroup.getChildren().forEach(function (child) {\n if (child instanceof toolPanelFilterGroupComp_1.ToolPanelFilterGroupComp) {\n updateGroupExpandState(child);\n }\n });\n };\n this.filterGroupComps.forEach(updateGroupExpandState);\n // update header expand / collapse icon\n this.onGroupExpanded();\n if (groupIds) {\n var unrecognisedGroupIds = groupIds.filter(function (groupId) { return updatedGroupIds.indexOf(groupId) < 0; });\n if (unrecognisedGroupIds.length > 0) {\n console.warn('ag-Grid: unable to find groups for these supplied groupIds:', unrecognisedGroupIds);\n }\n }\n };\n FiltersToolPanelListPanel.prototype.expandFilters = function (expand, colIds) {\n var updatedColIds = [];\n var updateGroupExpandState = function (filterComp) {\n if (filterComp instanceof toolPanelFilterGroupComp_1.ToolPanelFilterGroupComp) {\n var anyChildrenChanged_1 = false;\n filterComp.getChildren().forEach(function (child) {\n var childUpdated = updateGroupExpandState(child);\n if (childUpdated) {\n if (expand) {\n filterComp.expand();\n anyChildrenChanged_1 = true;\n }\n else if (!filterComp.isColumnGroup()) {\n // we only collapse columns wrapped in groups\n filterComp.collapse();\n }\n }\n });\n return anyChildrenChanged_1;\n }\n var colId = filterComp.getColumn().getColId();\n var updateFilterExpandState = !colIds || core_1._.includes(colIds, colId);\n if (updateFilterExpandState) {\n expand ? filterComp.expand() : filterComp.collapse();\n updatedColIds.push(colId);\n }\n return updateFilterExpandState;\n };\n this.filterGroupComps.forEach(updateGroupExpandState);\n // update header expand / collapse icon\n this.onGroupExpanded();\n if (colIds) {\n var unrecognisedColIds = colIds.filter(function (colId) { return updatedColIds.indexOf(colId) < 0; });\n if (unrecognisedColIds.length > 0) {\n console.warn('ag-Grid: unable to find columns for these supplied colIds:', unrecognisedColIds);\n }\n }\n };\n FiltersToolPanelListPanel.prototype.onGroupExpanded = function () {\n this.fireExpandedEvent();\n };\n FiltersToolPanelListPanel.prototype.fireExpandedEvent = function () {\n var expandedCount = 0;\n var notExpandedCount = 0;\n var updateExpandCounts = function (filterGroup) {\n if (!filterGroup.isColumnGroup())\n return;\n filterGroup.isExpanded() ? expandedCount++ : notExpandedCount++;\n filterGroup.getChildren().forEach(function (child) {\n if (child instanceof toolPanelFilterGroupComp_1.ToolPanelFilterGroupComp) {\n updateExpandCounts(child);\n }\n });\n };\n this.filterGroupComps.forEach(updateExpandCounts);\n var state;\n if (expandedCount > 0 && notExpandedCount > 0) {\n state = filtersToolPanelHeaderPanel_1.EXPAND_STATE.INDETERMINATE;\n }\n else if (notExpandedCount > 0) {\n state = filtersToolPanelHeaderPanel_1.EXPAND_STATE.COLLAPSED;\n }\n else {\n state = filtersToolPanelHeaderPanel_1.EXPAND_STATE.EXPANDED;\n }\n this.dispatchEvent({ type: 'groupExpanded', state: state });\n };\n FiltersToolPanelListPanel.prototype.performFilterSearch = function (searchText) {\n this.searchFilterText = searchText;\n this.searchFilters(searchText);\n };\n FiltersToolPanelListPanel.prototype.searchFilters = function (searchFilter) {\n var passesFilter = function (groupName) {\n return !core_1._.exists(searchFilter) || groupName.toLowerCase().indexOf(searchFilter) !== -1;\n };\n var recursivelySearch = function (filterItem, parentPasses) {\n if (!(filterItem instanceof toolPanelFilterGroupComp_1.ToolPanelFilterGroupComp)) {\n return passesFilter(filterItem.getColumnFilterName());\n }\n var children = filterItem.getChildren();\n var groupNamePasses = passesFilter(filterItem.getFilterGroupName());\n // if group or parent already passed - ensure this group and all children are visible\n var alreadyPassed = parentPasses || groupNamePasses;\n if (alreadyPassed) {\n // ensure group visible\n filterItem.hideGroup(false);\n // ensure all children are visible\n for (var i = 0; i < children.length; i++) {\n recursivelySearch(children[i], alreadyPassed);\n filterItem.hideGroupItem(false, i);\n }\n return true;\n }\n // hide group item filters\n var anyChildPasses = false;\n children.forEach(function (child, index) {\n var childPasses = recursivelySearch(child, parentPasses);\n filterItem.hideGroupItem(!childPasses, index);\n if (childPasses)\n anyChildPasses = true;\n });\n // hide group if no children pass\n filterItem.hideGroup(!anyChildPasses);\n return anyChildPasses;\n };\n var firstVisible;\n var lastVisible;\n this.filterGroupComps.forEach(function (filterGroup, idx) {\n recursivelySearch(filterGroup, false);\n if (firstVisible === undefined) {\n if (!core_1._.containsClass(filterGroup.getGui(), 'ag-hidden')) {\n firstVisible = idx;\n lastVisible = idx;\n }\n }\n else if (!core_1._.containsClass(filterGroup.getGui(), 'ag-hidden') && lastVisible !== idx) {\n lastVisible = idx;\n }\n });\n this.setFirstAndLastVisible(firstVisible, lastVisible);\n };\n FiltersToolPanelListPanel.prototype.setFirstAndLastVisible = function (firstIdx, lastIdx) {\n this.filterGroupComps.forEach(function (filterGroup, idx) {\n core_1._.removeCssClass(filterGroup.getGui(), 'ag-first-group-visible');\n core_1._.removeCssClass(filterGroup.getGui(), 'ag-last-group-visible');\n if (idx === firstIdx) {\n core_1._.addCssClass(filterGroup.getGui(), 'ag-first-group-visible');\n }\n if (idx === lastIdx) {\n core_1._.addCssClass(filterGroup.getGui(), 'ag-last-group-visible');\n }\n });\n };\n FiltersToolPanelListPanel.prototype.refreshFilters = function () {\n this.filterGroupComps.forEach(function (filterGroupComp) { return filterGroupComp.refreshFilters(); });\n };\n FiltersToolPanelListPanel.prototype.destroyFilters = function () {\n this.filterGroupComps.forEach(function (filterComp) { return filterComp.destroy(); });\n this.filterGroupComps.length = 0;\n core_1._.clearElement(this.getGui());\n };\n FiltersToolPanelListPanel.prototype.destroy = function () {\n this.destroyFilters();\n _super.prototype.destroy.call(this);\n };\n FiltersToolPanelListPanel.TEMPLATE = \"
\";\n __decorate([\n core_1.Autowired(\"gridApi\")\n ], FiltersToolPanelListPanel.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.Autowired(\"eventService\")\n ], FiltersToolPanelListPanel.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('toolPanelColDefService')\n ], FiltersToolPanelListPanel.prototype, \"toolPanelColDefService\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], FiltersToolPanelListPanel.prototype, \"columnController\", void 0);\n return FiltersToolPanelListPanel;\n}(core_1.Component));\nexports.FiltersToolPanelListPanel = FiltersToolPanelListPanel;\n//# sourceMappingURL=filtersToolPanelListPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar toolPanelFilterComp_1 = require(\"./toolPanelFilterComp\");\nvar ToolPanelFilterGroupComp = /** @class */ (function (_super) {\n __extends(ToolPanelFilterGroupComp, _super);\n function ToolPanelFilterGroupComp(columnGroup, childFilterComps, expandedCallback, depth) {\n var _this = _super.call(this) || this;\n _this.columnGroup = columnGroup;\n _this.childFilterComps = childFilterComps;\n _this.depth = depth;\n _this.expandedCallback = expandedCallback;\n return _this;\n }\n ToolPanelFilterGroupComp.prototype.preConstruct = function () {\n this.setTemplate(ToolPanelFilterGroupComp.TEMPLATE);\n };\n ToolPanelFilterGroupComp.prototype.init = function () {\n var _this = this;\n this.setGroupTitle();\n this.filterGroupComp.setAlignItems('stretch');\n core_1._.addCssClass(this.filterGroupComp.getGui(), \"ag-level-\" + this.depth);\n this.childFilterComps.forEach(function (filterComp) { return _this.filterGroupComp.addItem(filterComp); });\n if (!this.isColumnGroup()) {\n this.addTopLevelColumnGroupExpandListener();\n }\n else {\n this.addDestroyableEventListener(this.filterGroupComp, 'expanded', function () {\n _this.expandedCallback();\n });\n this.addDestroyableEventListener(this.filterGroupComp, 'collapsed', function () {\n _this.expandedCallback();\n });\n }\n this.addFilterChangedListeners();\n };\n ToolPanelFilterGroupComp.prototype.refreshFilters = function () {\n this.childFilterComps.forEach(function (filterComp) {\n if (filterComp instanceof ToolPanelFilterGroupComp) {\n filterComp.refreshFilters();\n }\n else {\n filterComp.refreshFilter();\n }\n });\n };\n ToolPanelFilterGroupComp.prototype.isColumnGroup = function () {\n return this.columnGroup instanceof core_1.OriginalColumnGroup;\n };\n ToolPanelFilterGroupComp.prototype.isExpanded = function () {\n return this.filterGroupComp.isExpanded();\n };\n ToolPanelFilterGroupComp.prototype.getChildren = function () {\n return this.childFilterComps;\n };\n ToolPanelFilterGroupComp.prototype.getFilterGroupName = function () {\n return this.filterGroupName ? this.filterGroupName : '';\n };\n ToolPanelFilterGroupComp.prototype.getFilterGroupId = function () {\n return this.columnGroup.getId();\n };\n ToolPanelFilterGroupComp.prototype.hideGroupItem = function (hide, index) {\n this.filterGroupComp.hideItem(hide, index);\n };\n ToolPanelFilterGroupComp.prototype.hideGroup = function (hide) {\n core_1._.addOrRemoveCssClass(this.getGui(), 'ag-hidden', hide);\n };\n ToolPanelFilterGroupComp.prototype.addTopLevelColumnGroupExpandListener = function () {\n var _this = this;\n this.addDestroyableEventListener(this.filterGroupComp, 'expanded', function () {\n _this.childFilterComps.forEach(function (filterComp) {\n // also need to refresh the virtual list on set filters as the filter may have been updated elsewhere\n if (filterComp instanceof toolPanelFilterComp_1.ToolPanelFilterComp) {\n filterComp.expand();\n filterComp.refreshFilter();\n }\n else {\n filterComp.refreshFilters();\n }\n });\n });\n };\n ToolPanelFilterGroupComp.prototype.addFilterChangedListeners = function () {\n var _this = this;\n if (this.columnGroup instanceof core_1.OriginalColumnGroup) {\n var group_1 = this.columnGroup;\n var anyChildFiltersActive_1 = function () { return group_1.getLeafColumns().some(function (col) { return col.isFilterActive(); }); };\n group_1.getLeafColumns().forEach(function (column) {\n _this.addDestroyableEventListener(column, core_1.Column.EVENT_FILTER_CHANGED, function () {\n core_1._.addOrRemoveCssClass(_this.filterGroupComp.getGui(), 'ag-has-filter', anyChildFiltersActive_1());\n });\n });\n }\n else {\n var column_1 = this.columnGroup;\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_FILTER_OPENED, this.onFilterOpened.bind(this));\n this.addDestroyableEventListener(column_1, core_1.Column.EVENT_FILTER_CHANGED, function () {\n core_1._.addOrRemoveCssClass(_this.filterGroupComp.getGui(), 'ag-has-filter', column_1.isFilterActive());\n });\n }\n };\n ToolPanelFilterGroupComp.prototype.onFilterOpened = function (event) {\n // when a filter is opened elsewhere, i.e. column menu we close the filter comp so we also need to collapse\n // the column group. This approach means we don't need to try and sync filter models on the same column.\n if (event.source !== 'COLUMN_MENU') {\n return;\n }\n if (event.column !== this.columnGroup) {\n return;\n }\n if (!this.isExpanded()) {\n return;\n }\n this.collapse();\n };\n ToolPanelFilterGroupComp.prototype.expand = function () {\n this.filterGroupComp.toggleGroupExpand(true);\n };\n ToolPanelFilterGroupComp.prototype.collapse = function () {\n this.filterGroupComp.toggleGroupExpand(false);\n };\n ToolPanelFilterGroupComp.prototype.setGroupTitle = function () {\n this.filterGroupName = (this.columnGroup instanceof core_1.OriginalColumnGroup) ?\n this.getColumnGroupName(this.columnGroup) : this.getColumnName(this.columnGroup);\n this.filterGroupComp.setTitle(this.filterGroupName);\n };\n ToolPanelFilterGroupComp.prototype.getColumnGroupName = function (columnGroup) {\n return this.columnController.getDisplayNameForOriginalColumnGroup(null, columnGroup, 'toolPanel');\n };\n ToolPanelFilterGroupComp.prototype.getColumnName = function (column) {\n return this.columnController.getDisplayNameForColumn(column, 'header', false);\n };\n ToolPanelFilterGroupComp.prototype.destroyFilters = function () {\n this.childFilterComps.forEach(function (filterComp) { return filterComp.destroy(); });\n this.childFilterComps.length = 0;\n core_1._.clearElement(this.getGui());\n };\n ToolPanelFilterGroupComp.prototype.destroy = function () {\n this.destroyFilters();\n _super.prototype.destroy.call(this);\n };\n ToolPanelFilterGroupComp.TEMPLATE = \"
\\n \\n
\";\n __decorate([\n core_1.RefSelector('filterGroupComp')\n ], ToolPanelFilterGroupComp.prototype, \"filterGroupComp\", void 0);\n __decorate([\n core_1.Autowired('gridApi')\n ], ToolPanelFilterGroupComp.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.Autowired('filterManager')\n ], ToolPanelFilterGroupComp.prototype, \"filterManager\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], ToolPanelFilterGroupComp.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], ToolPanelFilterGroupComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], ToolPanelFilterGroupComp.prototype, \"columnController\", void 0);\n __decorate([\n core_1.PreConstruct\n ], ToolPanelFilterGroupComp.prototype, \"preConstruct\", null);\n __decorate([\n core_1.PostConstruct\n ], ToolPanelFilterGroupComp.prototype, \"init\", null);\n return ToolPanelFilterGroupComp;\n}(core_1.Component));\nexports.ToolPanelFilterGroupComp = ToolPanelFilterGroupComp;\n//# sourceMappingURL=toolPanelFilterGroupComp.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar FiltersToolPanel = /** @class */ (function (_super) {\n __extends(FiltersToolPanel, _super);\n function FiltersToolPanel() {\n var _this = _super.call(this, FiltersToolPanel.TEMPLATE) || this;\n _this.initialised = false;\n return _this;\n }\n FiltersToolPanel.prototype.init = function (params) {\n this.initialised = true;\n var defaultParams = {\n suppressExpandAll: false,\n suppressFilterSearch: false,\n suppressSyncLayoutWithGrid: false,\n api: this.gridApi\n };\n core_1._.mergeDeep(defaultParams, params);\n this.params = defaultParams;\n this.filtersToolPanelHeaderPanel.init(this.params);\n this.filtersToolPanelListPanel.init(this.params);\n var hideExpand = this.params.suppressExpandAll;\n var hideSearch = this.params.suppressFilterSearch;\n if (hideExpand && hideSearch) {\n this.filtersToolPanelHeaderPanel.setDisplayed(false);\n }\n this.addDestroyableEventListener(this.filtersToolPanelHeaderPanel, 'expandAll', this.onExpandAll.bind(this));\n this.addDestroyableEventListener(this.filtersToolPanelHeaderPanel, 'collapseAll', this.onCollapseAll.bind(this));\n this.addDestroyableEventListener(this.filtersToolPanelHeaderPanel, 'searchChanged', this.onSearchChanged.bind(this));\n this.addDestroyableEventListener(this.filtersToolPanelListPanel, 'groupExpanded', this.onGroupExpanded.bind(this));\n };\n // lazy initialise the panel\n FiltersToolPanel.prototype.setVisible = function (visible) {\n _super.prototype.setDisplayed.call(this, visible);\n if (visible && !this.initialised) {\n this.init(this.params);\n }\n };\n FiltersToolPanel.prototype.onExpandAll = function () {\n this.filtersToolPanelListPanel.expandFilterGroups(true);\n };\n FiltersToolPanel.prototype.onCollapseAll = function () {\n this.filtersToolPanelListPanel.expandFilterGroups(false);\n };\n FiltersToolPanel.prototype.onSearchChanged = function (event) {\n this.filtersToolPanelListPanel.performFilterSearch(event.searchText);\n };\n FiltersToolPanel.prototype.setFilterLayout = function (colDefs) {\n this.filtersToolPanelListPanel.setFiltersLayout(colDefs);\n };\n FiltersToolPanel.prototype.onGroupExpanded = function (event) {\n this.filtersToolPanelHeaderPanel.setExpandState(event.state);\n };\n FiltersToolPanel.prototype.expandFilterGroups = function (groupIds) {\n this.filtersToolPanelListPanel.expandFilterGroups(true, groupIds);\n };\n FiltersToolPanel.prototype.collapseFilterGroups = function (groupIds) {\n this.filtersToolPanelListPanel.expandFilterGroups(false, groupIds);\n };\n FiltersToolPanel.prototype.expandFilters = function (colIds) {\n this.filtersToolPanelListPanel.expandFilters(true, colIds);\n };\n FiltersToolPanel.prototype.collapseFilters = function (colIds) {\n this.filtersToolPanelListPanel.expandFilters(false, colIds);\n };\n FiltersToolPanel.prototype.syncLayoutWithGrid = function () {\n this.filtersToolPanelListPanel.syncFilterLayout();\n };\n FiltersToolPanel.prototype.refresh = function () {\n this.init(this.params);\n };\n FiltersToolPanel.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n FiltersToolPanel.TEMPLATE = \"
\\n \\n \\n
\";\n __decorate([\n core_1.RefSelector('filtersToolPanelHeaderPanel')\n ], FiltersToolPanel.prototype, \"filtersToolPanelHeaderPanel\", void 0);\n __decorate([\n core_1.RefSelector('filtersToolPanelListPanel')\n ], FiltersToolPanel.prototype, \"filtersToolPanelListPanel\", void 0);\n __decorate([\n core_1.Autowired(\"gridApi\")\n ], FiltersToolPanel.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.Autowired(\"eventService\")\n ], FiltersToolPanel.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], FiltersToolPanel.prototype, \"columnController\", void 0);\n return FiltersToolPanel;\n}(core_1.Component));\nexports.FiltersToolPanel = FiltersToolPanel;\n//# sourceMappingURL=filtersToolPanel.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar core_2 = require(\"@ag-grid-enterprise/core\");\nvar chartService_1 = require(\"./chartAdaptor/chartService\");\nvar chartTranslator_1 = require(\"./chartAdaptor/chartComp/chartTranslator\");\nvar range_selection_1 = require(\"@ag-grid-enterprise/range-selection\");\nexports.GridChartsModule = {\n moduleName: core_1.ModuleNames.GridChartsModule,\n beans: [\n chartService_1.ChartService, chartTranslator_1.ChartTranslator\n ],\n dependantModules: [\n range_selection_1.RangeSelectionModule,\n core_2.EnterpriseCoreModule\n ]\n};\n//# sourceMappingURL=gridChartsModule.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar gridChartComp_1 = require(\"./chartComp/gridChartComp\");\nvar ChartService = /** @class */ (function () {\n function ChartService() {\n // we destroy all charts bound to this grid when grid is destroyed. activeCharts contains all charts, including\n // those in developer provided containers.\n this.activeCharts = new Set();\n this.activeChartComps = new Set();\n }\n ChartService.prototype.getChartModels = function () {\n var models = [];\n this.activeChartComps.forEach(function (c) { return models.push(c.getChartModel()); });\n return models;\n };\n ChartService.prototype.createChartFromCurrentRange = function (chartType) {\n if (chartType === void 0) { chartType = core_1.ChartType.GroupedColumn; }\n var selectedRange = this.getSelectedRange();\n return this.createChart(selectedRange, chartType);\n };\n ChartService.prototype.createRangeChart = function (params) {\n var cellRange = this.rangeController\n ? this.rangeController.createCellRangeFromCellRangeParams(params.cellRange)\n : undefined;\n if (!cellRange) {\n console.warn(\"ag-Grid - unable to create chart as no range is selected\");\n return;\n }\n return this.createChart(cellRange, params.chartType, params.chartPalette, false, params.suppressChartRanges, params.chartContainer, params.aggFunc, params.processChartOptions);\n };\n ChartService.prototype.createPivotChart = function (params) {\n // if required enter pivot mode\n if (!this.columnController.isPivotMode()) {\n this.columnController.setPivotMode(true, \"pivotChart\");\n }\n // pivot chart range contains all visible column without a row range to include all rows\n var chartAllRangeParams = {\n columns: this.columnController.getAllDisplayedColumns().map(function (col) { return col.getColId(); })\n };\n var cellRange = this.rangeController\n ? this.rangeController.createCellRangeFromCellRangeParams(chartAllRangeParams)\n : undefined;\n if (!cellRange) {\n console.warn(\"ag-Grid - unable to create chart as there are no columns in the grid.\");\n return;\n }\n return this.createChart(cellRange, params.chartType, params.chartPalette, true, true, params.chartContainer, undefined, params.processChartOptions);\n };\n ChartService.prototype.createChart = function (cellRange, chartType, chartPaletteName, pivotChart, suppressChartRanges, container, aggFunc, processChartOptions) {\n var _this = this;\n if (pivotChart === void 0) { pivotChart = false; }\n if (suppressChartRanges === void 0) { suppressChartRanges = false; }\n var createChartContainerFunc = this.gridOptionsWrapper.getCreateChartContainerFunc();\n var params = {\n pivotChart: pivotChart,\n cellRange: cellRange,\n chartType: chartType,\n chartPaletteName: chartPaletteName,\n insideDialog: !(container || createChartContainerFunc),\n suppressChartRanges: suppressChartRanges,\n aggFunc: aggFunc,\n processChartOptions: processChartOptions,\n };\n var chartComp = new gridChartComp_1.GridChartComp(params);\n this.context.wireBean(chartComp);\n var chartRef = this.createChartRef(chartComp);\n if (container) {\n // if container exists, means developer initiated chart create via API, so place in provided container\n container.appendChild(chartComp.getGui());\n // if the chart container was placed outside of an element that\n // has the grid's theme, we manually add the current theme to\n // make sure all styles for the chartMenu are rendered correctly\n var theme = this.environment.getTheme();\n if (theme.el && !theme.el.contains(container)) {\n core_1._.addCssClass(container, theme.theme);\n }\n }\n else if (createChartContainerFunc) {\n // otherwise user created chart via grid UI, check if developer provides containers (eg if the application\n // is using its own dialogs rather than the grid provided dialogs)\n createChartContainerFunc(chartRef);\n }\n else {\n // add listener to remove from active charts list when charts are destroyed, e.g. closing chart dialog\n chartComp.addEventListener(gridChartComp_1.GridChartComp.EVENT_DESTROYED, function () {\n _this.activeChartComps.delete(chartComp);\n _this.activeCharts.delete(chartRef);\n });\n }\n return chartRef;\n };\n ChartService.prototype.createChartRef = function (chartComp) {\n var _this = this;\n var chartRef = {\n destroyChart: function () {\n if (_this.activeCharts.has(chartRef)) {\n chartComp.destroy();\n _this.activeChartComps.delete(chartComp);\n _this.activeCharts.delete(chartRef);\n }\n },\n chartElement: chartComp.getGui()\n };\n this.activeCharts.add(chartRef);\n this.activeChartComps.add(chartComp);\n return chartRef;\n };\n ChartService.prototype.getSelectedRange = function () {\n var ranges = this.rangeController.getCellRanges();\n return ranges.length > 0 ? ranges[0] : {};\n };\n ChartService.prototype.destroyAllActiveCharts = function () {\n this.activeCharts.forEach(function (chart) { return chart.destroyChart(); });\n };\n __decorate([\n core_1.Optional('rangeController')\n ], ChartService.prototype, \"rangeController\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], ChartService.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('environment')\n ], ChartService.prototype, \"environment\", void 0);\n __decorate([\n core_1.Autowired('context')\n ], ChartService.prototype, \"context\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], ChartService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.PreDestroy\n ], ChartService.prototype, \"destroyAllActiveCharts\", null);\n ChartService = __decorate([\n core_1.Bean('chartService')\n ], ChartService);\n return ChartService;\n}());\nexports.ChartService = ChartService;\n//# sourceMappingURL=chartService.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar chartMenu_1 = require(\"./menu/chartMenu\");\nvar chartController_1 = require(\"./chartController\");\nvar chartDataModel_1 = require(\"./chartDataModel\");\nvar barChartProxy_1 = require(\"./chartProxies/cartesian/barChartProxy\");\nvar areaChartProxy_1 = require(\"./chartProxies/cartesian/areaChartProxy\");\nvar lineChartProxy_1 = require(\"./chartProxies/cartesian/lineChartProxy\");\nvar pieChartProxy_1 = require(\"./chartProxies/polar/pieChartProxy\");\nvar doughnutChartProxy_1 = require(\"./chartProxies/polar/doughnutChartProxy\");\nvar scatterChartProxy_1 = require(\"./chartProxies/cartesian/scatterChartProxy\");\nvar GridChartComp = /** @class */ (function (_super) {\n __extends(GridChartComp, _super);\n function GridChartComp(params) {\n var _this = _super.call(this, GridChartComp.TEMPLATE) || this;\n _this.getChartPaletteName = function () { return _this.chartController.getPaletteName(); };\n _this.getChartComponentsWrapper = function () { return _this.eChartComponentsWrapper; };\n _this.getDockedContainer = function () { return _this.eDockedContainer; };\n _this.getCurrentChartType = function () { return _this.chartType; };\n _this.params = params;\n return _this;\n }\n GridChartComp.prototype.init = function () {\n var modelParams = {\n pivotChart: this.params.pivotChart,\n chartType: this.params.chartType,\n aggFunc: this.params.aggFunc,\n cellRange: this.params.cellRange,\n suppressChartRanges: this.params.suppressChartRanges,\n };\n this.model = this.wireBean(new chartDataModel_1.ChartDataModel(modelParams));\n this.chartController = this.wireBean(new chartController_1.ChartController(this.model, this.params.chartPaletteName));\n this.createChart();\n if (this.params.insideDialog) {\n this.addDialog();\n }\n this.addResizeListener();\n this.addMenu();\n this.addDestroyableEventListener(this.getGui(), 'focusin', this.setActiveChartCellRange.bind(this));\n this.addDestroyableEventListener(this.chartController, chartController_1.ChartController.EVENT_CHART_UPDATED, this.refresh.bind(this));\n this.addDestroyableEventListener(this.chartMenu, chartMenu_1.ChartMenu.EVENT_DOWNLOAD_CHART, this.downloadChart.bind(this));\n this.refresh();\n };\n GridChartComp.prototype.createChart = function () {\n var width, height;\n // if chart already exists, destroy it and remove it from DOM\n if (this.chartProxy) {\n var chart = this.chartProxy.getChart();\n if (chart) {\n // preserve existing width/height\n width = chart.width;\n height = chart.height;\n }\n this.chartProxy.destroy();\n }\n var processChartOptionsFunc = this.params.processChartOptions ?\n this.params.processChartOptions : this.gridOptionsWrapper.getProcessChartOptionsFunc();\n var categorySelected = this.model.getSelectedDimension().colId !== chartDataModel_1.ChartDataModel.DEFAULT_CATEGORY;\n var chartType = this.model.getChartType();\n var isGrouping = this.model.isGrouping();\n var chartProxyParams = {\n chartType: chartType,\n processChartOptions: processChartOptionsFunc,\n getChartPaletteName: this.getChartPaletteName.bind(this),\n allowPaletteOverride: !this.params.chartPaletteName,\n isDarkTheme: this.environment.isThemeDark.bind(this.environment),\n parentElement: this.eChart,\n width: width,\n height: height,\n eventService: this.eventService,\n categorySelected: categorySelected,\n grouping: isGrouping,\n document: this.gridOptionsWrapper.getDocument()\n };\n // set local state used to detect when chart type changes\n this.chartType = chartType;\n this.chartGroupingActive = isGrouping;\n this.chartProxy = this.createChartProxy(chartProxyParams);\n this.chartController.setChartProxy(this.chartProxy);\n };\n GridChartComp.prototype.createChartProxy = function (chartProxyParams) {\n switch (chartProxyParams.chartType) {\n case core_1.ChartType.GroupedColumn:\n case core_1.ChartType.StackedColumn:\n case core_1.ChartType.NormalizedColumn:\n case core_1.ChartType.GroupedBar:\n case core_1.ChartType.StackedBar:\n case core_1.ChartType.NormalizedBar:\n return new barChartProxy_1.BarChartProxy(chartProxyParams);\n case core_1.ChartType.Pie:\n return new pieChartProxy_1.PieChartProxy(chartProxyParams);\n case core_1.ChartType.Doughnut:\n return new doughnutChartProxy_1.DoughnutChartProxy(chartProxyParams);\n case core_1.ChartType.Area:\n case core_1.ChartType.StackedArea:\n case core_1.ChartType.NormalizedArea:\n return new areaChartProxy_1.AreaChartProxy(chartProxyParams);\n case core_1.ChartType.Line:\n return new lineChartProxy_1.LineChartProxy(chartProxyParams);\n case core_1.ChartType.Scatter:\n case core_1.ChartType.Bubble:\n return new scatterChartProxy_1.ScatterChartProxy(chartProxyParams);\n }\n };\n GridChartComp.prototype.addDialog = function () {\n var _this = this;\n var title = this.chartTranslator.translate(this.params.pivotChart ? 'pivotChartTitle' : 'rangeChartTitle');\n this.chartDialog = new core_1.AgDialog({\n resizable: true,\n movable: true,\n maximizable: true,\n title: title,\n component: this,\n centered: true,\n closable: true\n });\n this.getContext().wireBean(this.chartDialog);\n this.chartDialog.addEventListener(core_1.AgDialog.EVENT_DESTROYED, function () { return _this.destroy(); });\n };\n GridChartComp.prototype.addMenu = function () {\n this.chartMenu = new chartMenu_1.ChartMenu(this.chartController);\n this.chartMenu.setParentComponent(this);\n this.getContext().wireBean(this.chartMenu);\n this.eChartComponentsWrapper.appendChild(this.chartMenu.getGui());\n };\n GridChartComp.prototype.refresh = function () {\n if (this.shouldRecreateChart()) {\n this.createChart();\n }\n this.updateChart();\n };\n GridChartComp.prototype.shouldRecreateChart = function () {\n var chartTypeChanged = this.chartType !== this.model.getChartType();\n var groupingChanged = this.chartGroupingActive !== this.model.isGrouping();\n return chartTypeChanged || groupingChanged;\n };\n GridChartComp.prototype.slideDockedOut = function (width) {\n this.eDockedContainer.style.minWidth = width + \"px\";\n };\n GridChartComp.prototype.slideDockedIn = function () {\n this.eDockedContainer.style.minWidth = '0';\n };\n GridChartComp.prototype.getChartModel = function () {\n return this.chartController.getChartModel();\n };\n GridChartComp.prototype.updateChart = function () {\n var _a = this, model = _a.model, chartProxy = _a.chartProxy;\n var selectedCols = model.getSelectedValueColState();\n var fields = selectedCols.map(function (c) { return ({ colId: c.colId, displayName: c.displayName }); });\n var data = model.getData();\n var chartEmpty = this.handleEmptyChart(data, fields);\n if (chartEmpty) {\n return;\n }\n var selectedDimension = model.getSelectedDimension();\n var chartUpdateParams = {\n data: data,\n category: {\n id: selectedDimension.colId,\n name: selectedDimension.displayName\n },\n fields: fields\n };\n chartProxy.update(chartUpdateParams);\n };\n GridChartComp.prototype.handleEmptyChart = function (data, fields) {\n var parent = this.chartProxy.getChart().parent;\n var pivotModeDisabled = this.model.isPivotChart() && !this.model.isPivotMode();\n var minFieldsRequired = 1;\n if (this.chartController.isActiveXYChart()) {\n minFieldsRequired = this.model.getChartType() === core_1.ChartType.Bubble ? 3 : 2;\n }\n var isEmptyChart = fields.length < minFieldsRequired || data.length === 0;\n if (parent) {\n core_1._.addOrRemoveCssClass(parent, 'ag-chart-empty', pivotModeDisabled || isEmptyChart);\n }\n if (pivotModeDisabled) {\n this.eEmpty.innerText = this.chartTranslator.translate('pivotChartRequiresPivotMode');\n return true;\n }\n if (isEmptyChart) {\n this.eEmpty.innerText = this.chartTranslator.translate('noDataToChart');\n return true;\n }\n return false;\n };\n GridChartComp.prototype.downloadChart = function () {\n var chart = this.chartProxy.getChart();\n var fileName = chart.title ? chart.title.text : 'chart';\n chart.scene.download(fileName);\n };\n GridChartComp.prototype.refreshCanvasSize = function () {\n var eChartWrapper = this.eChart;\n var chart = this.chartProxy.getChart();\n chart.height = core_1._.getInnerHeight(eChartWrapper);\n chart.width = core_1._.getInnerWidth(eChartWrapper);\n };\n GridChartComp.prototype.addResizeListener = function () {\n var _this = this;\n var eGui = this.getGui();\n var resizeFunc = function () {\n if (!eGui || !eGui.offsetParent) {\n observeResizeFunc();\n return;\n }\n _this.refreshCanvasSize();\n };\n var observeResizeFunc = this.resizeObserverService.observeResize(this.eChart, resizeFunc, 5);\n };\n GridChartComp.prototype.setActiveChartCellRange = function (focusEvent) {\n if (this.getGui().contains(focusEvent.relatedTarget)) {\n return;\n }\n this.chartController.setChartRange();\n };\n GridChartComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.chartController) {\n this.chartController.destroy();\n }\n if (this.chartProxy) {\n this.chartProxy.destroy();\n }\n if (this.chartMenu) {\n this.chartMenu.destroy();\n }\n // don't want to invoke destroy() on the Dialog / MessageBox (prevents destroy loop)\n if (this.chartDialog && this.chartDialog.isAlive()) {\n this.chartDialog.destroy();\n }\n // if the user is providing containers for the charts, we need to clean up, otherwise the old chart\n // data will still be visible although the chart is no longer bound to the grid\n var eGui = this.getGui();\n core_1._.clearElement(eGui);\n // remove from parent, so if user provided container, we detach from the provided dom element\n core_1._.removeFromParent(eGui);\n };\n GridChartComp.TEMPLATE = \"
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\";\n __decorate([\n core_1.RefSelector('eChart')\n ], GridChartComp.prototype, \"eChart\", void 0);\n __decorate([\n core_1.RefSelector('eChartComponentsWrapper')\n ], GridChartComp.prototype, \"eChartComponentsWrapper\", void 0);\n __decorate([\n core_1.RefSelector('eDockedContainer')\n ], GridChartComp.prototype, \"eDockedContainer\", void 0);\n __decorate([\n core_1.RefSelector('eEmpty')\n ], GridChartComp.prototype, \"eEmpty\", void 0);\n __decorate([\n core_1.Autowired('resizeObserverService')\n ], GridChartComp.prototype, \"resizeObserverService\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], GridChartComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('environment')\n ], GridChartComp.prototype, \"environment\", void 0);\n __decorate([\n core_1.Autowired('chartTranslator')\n ], GridChartComp.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], GridChartComp.prototype, \"eventService\", void 0);\n __decorate([\n core_1.PostConstruct\n ], GridChartComp.prototype, \"init\", null);\n return GridChartComp;\n}(core_1.Component));\nexports.GridChartComp = GridChartComp;\n//# sourceMappingURL=gridChartComp.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar tabbedChartMenu_1 = require(\"./tabbedChartMenu\");\nvar ChartMenu = /** @class */ (function (_super) {\n __extends(ChartMenu, _super);\n function ChartMenu(chartController) {\n var _this = _super.call(this, ChartMenu.TEMPLATE) || this;\n _this.buttons = {\n chartSettings: ['menu', function () { return _this.showMenu(\"chartSettings\"); }],\n chartData: ['menu', function () { return _this.showMenu(\"chartData\"); }],\n chartFormat: ['menu', function () { return _this.showMenu(\"chartFormat\"); }],\n chartUnlink: ['linked', function (e) { return _this.toggleDetached(e); }],\n chartDownload: ['save', function () { return _this.saveChart(); }]\n };\n _this.tabs = [];\n _this.chartController = chartController;\n return _this;\n }\n ChartMenu.prototype.postConstruct = function () {\n this.createButtons();\n };\n ChartMenu.prototype.getToolbarOptions = function () {\n var _this = this;\n var tabOptions = [\n 'chartSettings',\n 'chartData',\n 'chartFormat',\n 'chartUnlink',\n 'chartDownload'\n ];\n var toolbarItemsFunc = this.gridOptionsWrapper.getChartToolbarItemsFunc();\n if (toolbarItemsFunc) {\n var params = {\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n defaultItems: tabOptions\n };\n tabOptions = toolbarItemsFunc(params).filter(function (option) {\n if (!_this.buttons[option]) {\n console.warn(\"ag-Grid: '\" + option + \" is not a valid Chart Toolbar Option\");\n return false;\n }\n return true;\n });\n }\n // pivot charts use the column tool panel instead of the data panel\n if (this.chartController.isPivotChart()) {\n tabOptions = tabOptions.filter(function (option) { return option !== 'chartData'; });\n }\n var ignoreOptions = ['chartUnlink', 'chartDownload'];\n this.tabs = tabOptions.filter(function (option) { return ignoreOptions.indexOf(option) === -1; });\n return tabOptions.filter(function (value) {\n return ignoreOptions.indexOf(value) !== -1 ||\n (_this.tabs.length && value === _this.tabs[0]);\n });\n };\n ChartMenu.prototype.toggleDetached = function (e) {\n var target = e.target;\n var active = core_1._.containsClass(target, 'ag-icon-linked');\n core_1._.addOrRemoveCssClass(target, 'ag-icon-linked', !active);\n core_1._.addOrRemoveCssClass(target, 'ag-icon-unlinked', active);\n this.chartController.detachChartRange();\n };\n ChartMenu.prototype.createButtons = function () {\n var _this = this;\n var chartToolbarOptions = this.getToolbarOptions();\n chartToolbarOptions.forEach(function (button) {\n var buttonConfig = _this.buttons[button];\n var iconName = buttonConfig[0], callback = buttonConfig[1];\n var buttonEl = core_1._.createIconNoSpan(iconName, _this.gridOptionsWrapper, undefined, true);\n _this.addDestroyableEventListener(buttonEl, 'click', callback);\n _this.getGui().appendChild(buttonEl);\n });\n };\n ChartMenu.prototype.saveChart = function () {\n var event = { type: ChartMenu.EVENT_DOWNLOAD_CHART };\n this.dispatchEvent(event);\n };\n ChartMenu.prototype.createMenu = function (defaultTab) {\n var _this = this;\n var chartComp = this.getParentComponent();\n var dockedContainer = chartComp.getDockedContainer();\n var context = this.getContext();\n var menuPanel = this.menuPanel = new core_1.AgPanel({\n minWidth: this.gridOptionsWrapper.chartMenuPanelWidth(),\n width: this.gridOptionsWrapper.chartMenuPanelWidth(),\n height: '100%',\n closable: true,\n hideTitleBar: true\n });\n context.wireBean(this.menuPanel);\n menuPanel.setParentComponent(this);\n dockedContainer.appendChild(menuPanel.getGui());\n this.tabbedMenu = new tabbedChartMenu_1.TabbedChartMenu({\n controller: this.chartController,\n type: chartComp.getCurrentChartType(),\n panels: this.tabs\n });\n context.wireBean(this.tabbedMenu);\n this.addDestroyableEventListener(this.menuPanel, core_1.Component.EVENT_DESTROYED, function () { return _this.tabbedMenu.destroy(); });\n return new core_1.Promise(function (res) {\n window.setTimeout(function () {\n menuPanel.setBodyComponent(_this.tabbedMenu);\n _this.tabbedMenu.showTab(defaultTab);\n _this.addDestroyableEventListener(chartComp.getChartComponentsWrapper(), 'click', function () {\n if (core_1._.containsClass(chartComp.getGui(), 'ag-has-menu')) {\n _this.hideMenu();\n }\n });\n res(menuPanel);\n }, 100);\n });\n };\n ChartMenu.prototype.slideDockedContainer = function () {\n var _this = this;\n var chartComp = this.getParentComponent();\n chartComp.slideDockedOut(this.menuPanel.getWidth());\n window.setTimeout(function () {\n core_1._.addCssClass(_this.getParentComponent().getGui(), 'ag-has-menu');\n }, 500);\n };\n ChartMenu.prototype.showMenu = function (tabName) {\n var _this = this;\n var tab = this.tabs.indexOf(tabName);\n if (!this.menuPanel) {\n this.createMenu(tab).then(function () {\n _this.slideDockedContainer();\n });\n }\n else {\n this.slideDockedContainer();\n }\n };\n ChartMenu.prototype.hideMenu = function () {\n var chartComp = this.getParentComponent();\n chartComp.slideDockedIn();\n core_1._.removeCssClass(this.getParentComponent().getGui(), 'ag-has-menu');\n };\n ChartMenu.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.menuPanel && this.menuPanel.isAlive()) {\n this.menuPanel.destroy();\n }\n };\n ChartMenu.EVENT_DOWNLOAD_CHART = \"downloadChart\";\n ChartMenu.TEMPLATE = \"
\";\n __decorate([\n core_1.Autowired(\"gridOptionsWrapper\")\n ], ChartMenu.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ChartMenu.prototype, \"postConstruct\", null);\n return ChartMenu;\n}(core_1.Component));\nexports.ChartMenu = ChartMenu;\n//# sourceMappingURL=chartMenu.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar chartDataPanel_1 = require(\"./data/chartDataPanel\");\nvar chartFormattingPanel_1 = require(\"./format/chartFormattingPanel\");\nvar chartSettingsPanel_1 = require(\"./settings/chartSettingsPanel\");\nvar TabbedChartMenu = /** @class */ (function (_super) {\n __extends(TabbedChartMenu, _super);\n function TabbedChartMenu(params) {\n var _this = _super.call(this) || this;\n _this.tabs = [];\n _this.chartIcons = {};\n var controller = params.controller, type = params.type, panels = params.panels;\n _this.chartController = controller;\n _this.currentChartType = type;\n _this.panels = panels;\n return _this;\n }\n TabbedChartMenu.prototype.init = function () {\n var _this = this;\n this.panels.forEach(function (panel) {\n var panelType = panel.replace('chart', '').toLowerCase();\n var _a = _this.createTab(panel, panelType, _this.getPanelClass(panelType)), comp = _a.comp, tab = _a.tab;\n _this.tabs.push(tab);\n _this.addDestroyFunc(function () { return comp.destroy(); });\n });\n this.tabbedLayout = new core_1.TabbedLayout({\n items: this.tabs,\n cssClass: 'ag-chart-tabbed-menu'\n });\n };\n TabbedChartMenu.prototype.createTab = function (name, title, ChildClass) {\n var eWrapperDiv = document.createElement('div');\n core_1._.addCssClass(eWrapperDiv, \"ag-chart-\" + title);\n var comp = new ChildClass(this.chartController);\n this.getContext().wireBean(comp);\n eWrapperDiv.appendChild(comp.getGui());\n var titleEl = document.createElement('div');\n titleEl.innerText = this.chartTranslator.translate(title);\n return {\n comp: comp,\n tab: {\n title: titleEl,\n bodyPromise: core_1.Promise.resolve(eWrapperDiv),\n name: name\n }\n };\n };\n TabbedChartMenu.prototype.getMinDimensions = function () {\n return this.tabbedLayout.getMinDimensions();\n };\n TabbedChartMenu.prototype.updateCurrentChartType = function (chartType) {\n core_1._.removeCssClass(this.chartIcons[this.currentChartType], 'ag-selected');\n this.currentChartType = chartType;\n core_1._.addCssClass(this.chartIcons[chartType], 'ag-selected');\n };\n TabbedChartMenu.prototype.showTab = function (tab) {\n var tabItem = this.tabs[tab];\n this.tabbedLayout.showItem(tabItem);\n };\n TabbedChartMenu.prototype.getGui = function () {\n return this.tabbedLayout && this.tabbedLayout.getGui();\n };\n TabbedChartMenu.prototype.destroy = function () {\n if (this.parentComponent && this.parentComponent.isAlive()) {\n this.parentComponent.destroy();\n }\n _super.prototype.destroy.call(this);\n };\n TabbedChartMenu.prototype.getPanelClass = function (panelType) {\n switch (panelType) {\n case TabbedChartMenu.TAB_DATA:\n return chartDataPanel_1.ChartDataPanel;\n case TabbedChartMenu.TAB_FORMAT:\n return chartFormattingPanel_1.ChartFormattingPanel;\n default:\n return chartSettingsPanel_1.ChartSettingsPanel;\n }\n };\n TabbedChartMenu.EVENT_TAB_SELECTED = 'tabSelected';\n TabbedChartMenu.TAB_MAIN = 'settings';\n TabbedChartMenu.TAB_DATA = 'data';\n TabbedChartMenu.TAB_FORMAT = 'format';\n __decorate([\n core_1.Autowired('chartTranslator')\n ], TabbedChartMenu.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], TabbedChartMenu.prototype, \"init\", null);\n return TabbedChartMenu;\n}(core_1.Component));\nexports.TabbedChartMenu = TabbedChartMenu;\n//# sourceMappingURL=tabbedChartMenu.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar chartController_1 = require(\"../../chartController\");\nvar ChartDataPanel = /** @class */ (function (_super) {\n __extends(ChartDataPanel, _super);\n function ChartDataPanel(chartController) {\n var _this = _super.call(this, ChartDataPanel.TEMPLATE) || this;\n _this.columnComps = new Map();\n _this.chartController = chartController;\n return _this;\n }\n ChartDataPanel.prototype.init = function () {\n this.updatePanels();\n this.addDestroyableEventListener(this.chartController, chartController_1.ChartController.EVENT_CHART_UPDATED, this.updatePanels.bind(this));\n };\n ChartDataPanel.prototype.destroy = function () {\n this.clearComponents();\n _super.prototype.destroy.call(this);\n };\n ChartDataPanel.prototype.updatePanels = function () {\n var _this = this;\n var currentChartType = this.chartType;\n var _a = this.chartController.getColStateForMenu(), dimensionCols = _a.dimensionCols, valueCols = _a.valueCols;\n var colIds = dimensionCols.map(function (c) { return c.colId; }).concat(valueCols.map(function (c) { return c.colId; }));\n this.chartType = this.chartController.getChartType();\n if (core_1._.areEqual(core_1._.keys(this.columnComps), colIds) && this.chartType === currentChartType) {\n // if possible, we just update existing components\n __spreadArrays(dimensionCols, valueCols).forEach(function (col) {\n _this.columnComps.get(col.colId).setValue(col.selected, true);\n });\n if (this.chartController.isActiveXYChart()) {\n var getSeriesLabel_1 = this.generateGetSeriesLabel();\n valueCols.forEach(function (col) {\n _this.columnComps.get(col.colId).setLabel(getSeriesLabel_1(col));\n });\n }\n }\n else {\n // otherwise we re-create everything\n this.clearComponents();\n this.createCategoriesGroupComponent(dimensionCols);\n this.createSeriesGroupComponent(valueCols);\n }\n };\n ChartDataPanel.prototype.addComponent = function (parent, component) {\n var eDiv = document.createElement('div');\n eDiv.appendChild(component.getGui());\n parent.appendChild(eDiv);\n };\n ChartDataPanel.prototype.addChangeListener = function (component, columnState) {\n var _this = this;\n this.addDestroyableEventListener(component, core_1.AgAbstractField.EVENT_CHANGED, function () {\n columnState.selected = component.getValue();\n _this.chartController.updateForPanelChange(columnState);\n });\n };\n ChartDataPanel.prototype.createCategoriesGroupComponent = function (columns) {\n var _this = this;\n this.categoriesGroupComp = this.wireBean(new core_1.AgGroupComponent({\n title: this.getCategoryGroupTitle(),\n enabled: true,\n suppressEnabledCheckbox: true,\n suppressOpenCloseIcons: false\n }));\n var inputName = \"chartDimension\" + this.getCompId();\n columns.forEach(function (col) {\n var comp = _this.categoriesGroupComp.wireDependentBean(new core_1.AgRadioButton());\n comp.setLabel(core_1._.escape(col.displayName));\n comp.setValue(col.selected);\n comp.setInputName(inputName);\n _this.addChangeListener(comp, col);\n _this.categoriesGroupComp.addItem(comp);\n _this.columnComps.set(col.colId, comp);\n });\n this.addComponent(this.getGui(), this.categoriesGroupComp);\n };\n ChartDataPanel.prototype.createSeriesGroupComponent = function (columns) {\n var _this = this;\n this.seriesGroupComp = this.wireDependentBean(new core_1.AgGroupComponent({\n title: this.getSeriesGroupTitle(),\n enabled: true,\n suppressEnabledCheckbox: true,\n suppressOpenCloseIcons: false\n }));\n if (this.chartController.isActiveXYChart()) {\n var pairedModeToggle = this.seriesGroupComp.wireDependentBean(new core_1.AgToggleButton());\n var chartProxy_1 = this.chartController.getChartProxy();\n pairedModeToggle\n .setLabel(this.chartTranslator.translate('paired'))\n .setLabelAlignment('left')\n .setLabelWidth('flex')\n .setInputWidth(40)\n .setValue(chartProxy_1.getSeriesOption('paired') || false)\n .onValueChange(function (newValue) {\n chartProxy_1.setSeriesOption('paired', newValue);\n _this.chartController.updateForGridChange();\n });\n this.seriesGroupComp.addItem(pairedModeToggle);\n }\n var getSeriesLabel = this.generateGetSeriesLabel();\n columns.forEach(function (col) {\n var comp = _this.seriesGroupComp.wireDependentBean(new core_1.AgCheckbox());\n comp.addCssClass('ag-data-select-checkbox');\n var label = getSeriesLabel(col);\n comp.setLabel(label);\n comp.setValue(col.selected);\n _this.addChangeListener(comp, col);\n _this.seriesGroupComp.addItem(comp);\n _this.columnComps.set(col.colId, comp);\n _this.addDragHandle(comp, col);\n });\n this.addComponent(this.getGui(), this.seriesGroupComp);\n var dropTarget = {\n getContainer: this.getGui.bind(this),\n onDragging: this.onDragging.bind(this),\n isInterestedIn: this.isInterestedIn.bind(this),\n };\n this.dragAndDropService.addDropTarget(dropTarget);\n };\n ChartDataPanel.prototype.addDragHandle = function (comp, col) {\n var _this = this;\n var eDragHandle = core_1._.createIconNoSpan('columnDrag', this.gridOptionsWrapper);\n core_1._.addCssClass(eDragHandle, 'ag-column-drag');\n comp.getGui().insertAdjacentElement('beforeend', eDragHandle);\n var dragSource = {\n type: core_1.DragSourceType.ChartPanel,\n eElement: eDragHandle,\n dragItemName: col.displayName,\n getDragItem: function () { return ({ columns: [col.column] }); },\n onDragStopped: function () { _this.insertIndex = undefined; }\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n };\n ChartDataPanel.prototype.generateGetSeriesLabel = function () {\n if (!this.chartController.isActiveXYChart()) {\n return function (col) { return core_1._.escape(col.displayName); };\n }\n var isBubble = this.chartType === core_1.ChartType.Bubble;\n var isInPairedMode = this.isInPairedMode();\n var selectedValuesCount = 0;\n var indexToAxisLabel = new Map();\n indexToAxisLabel.set(0, 'X');\n indexToAxisLabel.set(1, 'Y');\n indexToAxisLabel.set(2, 'size');\n return function (col) {\n var escapedLabel = core_1._.escape(col.displayName);\n if (!col.selected) {\n return escapedLabel;\n }\n var axisLabel;\n if (isInPairedMode) {\n axisLabel = indexToAxisLabel.get(selectedValuesCount % (isBubble ? 3 : 2));\n }\n else {\n if (selectedValuesCount === 0) {\n axisLabel = 'X';\n }\n else {\n axisLabel = isBubble && selectedValuesCount % 2 === 0 ? 'size' : 'Y';\n }\n }\n selectedValuesCount++;\n return escapedLabel + \" (\" + axisLabel + \")\";\n };\n };\n ChartDataPanel.prototype.getCategoryGroupTitle = function () {\n return this.chartTranslator.translate(this.chartController.isActiveXYChart() ? 'labels' : 'categories');\n };\n ChartDataPanel.prototype.getSeriesGroupTitle = function () {\n return this.chartTranslator.translate(this.chartController.isActiveXYChart() ? 'xyValues' : 'series');\n };\n ChartDataPanel.prototype.isInPairedMode = function () {\n return this.chartController.isActiveXYChart() && this.chartController.getChartProxy().getSeriesOption('paired');\n };\n ChartDataPanel.prototype.clearComponents = function () {\n core_1._.clearElement(this.getGui());\n if (this.categoriesGroupComp) {\n this.categoriesGroupComp.destroy();\n this.categoriesGroupComp = undefined;\n }\n if (this.seriesGroupComp) {\n this.seriesGroupComp.destroy();\n this.seriesGroupComp = undefined;\n }\n this.columnComps.clear();\n };\n ChartDataPanel.prototype.onDragging = function (draggingEvent) {\n var _this = this;\n if (this.checkInsertIndex(draggingEvent)) {\n var column_1 = draggingEvent.dragItem.columns[0];\n var _a = this.chartController.getColStateForMenu(), dimensionCols = _a.dimensionCols, valueCols = _a.valueCols;\n __spreadArrays(dimensionCols, valueCols).filter(function (state) { return state.column === column_1; })\n .forEach(function (state) {\n state.order = _this.insertIndex;\n _this.chartController.updateForPanelChange(state);\n });\n }\n };\n ChartDataPanel.prototype.checkInsertIndex = function (draggingEvent) {\n if (core_1._.missing(draggingEvent.vDirection)) {\n return false;\n }\n var newIndex = 0;\n var mouseEvent = draggingEvent.event;\n this.columnComps.forEach(function (comp) {\n var rect = comp.getGui().getBoundingClientRect();\n var verticalFit = mouseEvent.clientY >= (draggingEvent.vDirection === core_1.VerticalDirection.Down ? rect.top : rect.bottom);\n if (verticalFit) {\n newIndex++;\n }\n });\n var changed = this.insertIndex !== undefined && newIndex !== this.insertIndex;\n this.insertIndex = newIndex;\n return changed;\n };\n ChartDataPanel.prototype.isInterestedIn = function (type) {\n return type === core_1.DragSourceType.ChartPanel;\n };\n ChartDataPanel.TEMPLATE = \"
\";\n __decorate([\n core_1.Autowired('dragAndDropService')\n ], ChartDataPanel.prototype, \"dragAndDropService\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], ChartDataPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('chartTranslator')\n ], ChartDataPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ChartDataPanel.prototype, \"init\", null);\n return ChartDataPanel;\n}(core_1.Component));\nexports.ChartDataPanel = ChartDataPanel;\n//# sourceMappingURL=chartDataPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar chartDataModel_1 = require(\"./chartDataModel\");\nvar array_1 = require(\"../../charts/util/array\");\nvar ChartDatasource = /** @class */ (function (_super) {\n __extends(ChartDatasource, _super);\n function ChartDatasource() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChartDatasource.prototype.getData = function (params) {\n var result = this.extractRowsFromGridRowModel(params);\n result.data = this.aggregateRowsByDimension(params, result.data);\n return result;\n };\n ChartDatasource.prototype.extractRowsFromGridRowModel = function (params) {\n var _this = this;\n var extractedRowData = [];\n var columnNames = {};\n // maps used to keep track of expanded groups that need to be removed\n var groupNodeIndexes = {};\n var groupsToRemove = {};\n // make sure enough rows in range to chart. if user filters and less rows, then end row will be\n // the last displayed row, not where the range ends.\n var modelLastRow = this.gridRowModel.getRowCount() - 1;\n var rangeLastRow = params.endRow > 0 ? Math.min(params.endRow, modelLastRow) : modelLastRow;\n var numRows = rangeLastRow - params.startRow + 1;\n var _loop_1 = function (i) {\n var data = {};\n var rowNode = this_1.gridRowModel.getRow(i + params.startRow);\n // first get data for dimensions columns\n params.dimensionCols.forEach(function (col) {\n var colId = col.colId;\n var column = _this.columnController.getGridColumn(colId);\n if (column) {\n var valueObject = _this.valueService.getValue(column, rowNode);\n // when grouping we also need to build up multi category labels for charts\n if (params.grouping) {\n var valueString = valueObject && valueObject.toString ? String(valueObject.toString()) : '';\n // traverse parents to extract group label path\n var labels = _this.getGroupLabels(rowNode, valueString);\n if (params.multiCategories) {\n // add group labels to group column for multi category charts\n data[colId] = { labels: labels, toString: function () { return array_1.find(this.labels, function (v) { return !!v; }) || ''; } };\n }\n else {\n // concat group keys from the top group key down (used when grouping Pie charts)\n data[colId] = labels.slice().reverse().join(' - ');\n }\n // keep track of group node indexes so they can be padded when other groups are expanded\n if (rowNode.group) {\n groupNodeIndexes[labels.toString()] = i;\n }\n // if node (group or leaf) has parents then it is expanded and should be removed\n var groupKey = labels.slice(1, labels.length).toString();\n if (groupKey) {\n groupsToRemove[groupKey] = groupNodeIndexes[groupKey];\n }\n }\n else {\n // leaf nodes can be directly added to dimension columns\n data[colId] = valueObject;\n }\n }\n else {\n // introduce a default category when no dimensions exist with a value based off row index (+1)\n data[chartDataModel_1.ChartDataModel.DEFAULT_CATEGORY] = i + 1;\n }\n });\n // then get data for value columns\n params.valueCols.forEach(function (col) {\n var columnNamesArr = [];\n // pivot keys should be added first\n var pivotKeys = col.getColDef().pivotKeys;\n if (pivotKeys) {\n columnNamesArr = pivotKeys.slice();\n }\n // then add column header name to results\n var headerName = col.getColDef().headerName;\n if (headerName) {\n columnNamesArr.push(headerName);\n }\n // add array of column names to results\n if (columnNamesArr.length > 0) {\n columnNames[col.getId()] = columnNamesArr;\n }\n // add data value to value column\n var value = _this.valueService.getValue(col, rowNode);\n data[col.getId()] = value != null && typeof value.toNumber === 'function' ? value.toNumber() : value;\n });\n // add data to results\n extractedRowData.push(data);\n };\n var this_1 = this;\n for (var i = 0; i < numRows; i++) {\n _loop_1(i);\n }\n if (params.grouping) {\n var groupIndexesToRemove_1 = core_1._.values(groupsToRemove);\n extractedRowData = extractedRowData.filter(function (_1, index) { return !core_1._.includes(groupIndexesToRemove_1, index); });\n }\n return { data: extractedRowData, columnNames: columnNames };\n };\n ChartDatasource.prototype.aggregateRowsByDimension = function (params, dataFromGrid) {\n var _this = this;\n var dimensionCols = params.dimensionCols;\n if (!params.aggFunc || dimensionCols.length === 0) {\n return dataFromGrid;\n }\n var lastCol = core_1._.last(dimensionCols);\n var lastColId = lastCol && lastCol.colId;\n var map = {};\n var dataAggregated = [];\n dataFromGrid.forEach(function (data) {\n var currentMap = map;\n dimensionCols.forEach(function (col) {\n var colId = col.colId;\n var key = data[colId];\n if (colId === lastColId) {\n var groupItem_1 = currentMap[key];\n if (!groupItem_1) {\n groupItem_1 = { __children: [] };\n dimensionCols.forEach(function (col) {\n var colId = col.colId;\n groupItem_1[colId] = data[colId];\n });\n currentMap[key] = groupItem_1;\n dataAggregated.push(groupItem_1);\n }\n groupItem_1.__children.push(data);\n }\n else {\n // map of maps\n if (!currentMap[key]) {\n currentMap[key] = {};\n }\n currentMap = currentMap[key];\n }\n });\n });\n dataAggregated.forEach(function (groupItem) { return params.valueCols.forEach(function (col) {\n var dataToAgg = groupItem.__children.map(function (child) { return child[col.getId()]; });\n var aggResult = 0;\n if (core_1.ModuleRegistry.assertRegistered(core_1.ModuleNames.RowGroupingModule, 'Charting Aggregation')) {\n aggResult = _this.aggregationStage.aggregateValues(dataToAgg, params.aggFunc);\n }\n groupItem[col.getId()] = aggResult && typeof aggResult.value !== 'undefined' ? aggResult.value : aggResult;\n }); });\n return dataAggregated;\n };\n ChartDatasource.prototype.getGroupLabels = function (rowNode, initialLabel) {\n var labels = [initialLabel];\n while (rowNode.level !== 0) {\n rowNode = rowNode.parent;\n labels.push(rowNode.key);\n }\n return labels;\n };\n __decorate([\n core_1.Autowired('rowModel')\n ], ChartDatasource.prototype, \"gridRowModel\", void 0);\n __decorate([\n core_1.Autowired('valueService')\n ], ChartDatasource.prototype, \"valueService\", void 0);\n __decorate([\n core_1.Optional('aggregationStage')\n ], ChartDatasource.prototype, \"aggregationStage\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], ChartDatasource.prototype, \"columnController\", void 0);\n return ChartDatasource;\n}(core_1.BeanStub));\nexports.ChartDatasource = ChartDatasource;\n//# sourceMappingURL=chartDatasource.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar chartController_1 = require(\"../../chartController\");\nvar legendPanel_1 = require(\"./legend/legendPanel\");\nvar barSeriesPanel_1 = require(\"./series/barSeriesPanel\");\nvar axisPanel_1 = require(\"./axis/axisPanel\");\nvar lineSeriesPanel_1 = require(\"./series/lineSeriesPanel\");\nvar pieSeriesPanel_1 = require(\"./series/pieSeriesPanel\");\nvar chartPanel_1 = require(\"./chart/chartPanel\");\nvar areaSeriesPanel_1 = require(\"./series/areaSeriesPanel\");\nvar scatterSeriesPanel_1 = require(\"./series/scatterSeriesPanel\");\nvar ChartFormattingPanel = /** @class */ (function (_super) {\n __extends(ChartFormattingPanel, _super);\n function ChartFormattingPanel(chartController) {\n var _this = _super.call(this, ChartFormattingPanel.TEMPLATE) || this;\n _this.panels = [];\n _this.chartController = chartController;\n return _this;\n }\n ChartFormattingPanel.prototype.init = function () {\n this.createPanels();\n this.addDestroyableEventListener(this.chartController, chartController_1.ChartController.EVENT_CHART_UPDATED, this.createPanels.bind(this));\n };\n ChartFormattingPanel.prototype.createPanels = function () {\n var chartType = this.chartController.getChartType();\n if (chartType === this.chartType) {\n // same chart type, so keep existing panels\n return;\n }\n this.destroyPanels();\n this.addComponent(new chartPanel_1.ChartPanel(this.chartController));\n this.addComponent(new legendPanel_1.LegendPanel(this.chartController));\n switch (chartType) {\n case core_1.ChartType.GroupedColumn:\n case core_1.ChartType.StackedColumn:\n case core_1.ChartType.NormalizedColumn:\n case core_1.ChartType.GroupedBar:\n case core_1.ChartType.StackedBar:\n case core_1.ChartType.NormalizedBar:\n this.addComponent(new axisPanel_1.AxisPanel(this.chartController));\n this.addComponent(new barSeriesPanel_1.BarSeriesPanel(this.chartController));\n break;\n case core_1.ChartType.Pie:\n case core_1.ChartType.Doughnut:\n this.addComponent(new pieSeriesPanel_1.PieSeriesPanel(this.chartController));\n break;\n case core_1.ChartType.Line:\n this.addComponent(new axisPanel_1.AxisPanel(this.chartController));\n this.addComponent(new lineSeriesPanel_1.LineSeriesPanel(this.chartController));\n break;\n case core_1.ChartType.Scatter:\n case core_1.ChartType.Bubble:\n this.addComponent(new axisPanel_1.AxisPanel(this.chartController));\n this.addComponent(new scatterSeriesPanel_1.ScatterSeriesPanel(this.chartController));\n break;\n case core_1.ChartType.Area:\n case core_1.ChartType.StackedArea:\n case core_1.ChartType.NormalizedArea:\n this.addComponent(new axisPanel_1.AxisPanel(this.chartController));\n this.addComponent(new areaSeriesPanel_1.AreaSeriesPanel(this.chartController));\n break;\n default:\n console.warn(\"ag-Grid: ChartFormattingPanel - unexpected chart type index: \" + chartType + \" supplied\");\n }\n this.chartType = chartType;\n };\n ChartFormattingPanel.prototype.addComponent = function (component) {\n this.wireBean(component);\n this.panels.push(component);\n this.getGui().appendChild(component.getGui());\n };\n ChartFormattingPanel.prototype.destroyPanels = function () {\n this.panels.forEach(function (panel) {\n core_1._.removeFromParent(panel.getGui());\n panel.destroy();\n });\n };\n ChartFormattingPanel.prototype.destroy = function () {\n this.destroyPanels();\n _super.prototype.destroy.call(this);\n };\n ChartFormattingPanel.TEMPLATE = \"
\";\n __decorate([\n core_1.PostConstruct\n ], ChartFormattingPanel.prototype, \"init\", null);\n return ChartFormattingPanel;\n}(core_1.Component));\nexports.ChartFormattingPanel = ChartFormattingPanel;\n//# sourceMappingURL=chartFormattingPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar fontPanel_1 = require(\"../fontPanel\");\nvar LegendPanel = /** @class */ (function (_super) {\n __extends(LegendPanel, _super);\n function LegendPanel(chartController) {\n var _this = _super.call(this) || this;\n _this.activePanels = [];\n _this.chartController = chartController;\n return _this;\n }\n LegendPanel.prototype.init = function () {\n this.setTemplate(LegendPanel.TEMPLATE);\n this.initLegendGroup();\n this.initLegendPosition();\n this.initLegendPadding();\n this.initLegendItems();\n this.initLabelPanel();\n };\n LegendPanel.prototype.initLegendGroup = function () {\n var _this = this;\n this.legendGroup\n .setTitle(this.chartTranslator.translate(\"legend\"))\n .hideEnabledCheckbox(false)\n .setEnabled(this.chartController.getChartProxy().getChartOption(\"legend.enabled\") || false)\n .toggleGroupExpand(false)\n .onEnableChange(function (enabled) {\n _this.chartController.getChartProxy().setChartOption(\"legend.enabled\", enabled);\n _this.legendGroup.toggleGroupExpand(true);\n });\n };\n LegendPanel.prototype.initLegendPosition = function () {\n var _this = this;\n var positions = [\"top\", \"right\", \"bottom\", \"left\"];\n this.legendPositionSelect\n .setLabel(this.chartTranslator.translate(\"position\"))\n .setLabelWidth(\"flex\")\n .setInputWidth(80)\n .addOptions(positions.map(function (position) { return ({\n value: position,\n text: _this.chartTranslator.translate(position)\n }); }))\n .setValue(this.chartController.getChartProxy().getChartOption(\"legend.position\"))\n .onValueChange(function (newValue) { return _this.chartController.getChartProxy().setChartOption(\"legend.position\", newValue); });\n };\n LegendPanel.prototype.initLegendPadding = function () {\n var _this = this;\n this.legendPaddingSlider\n .setLabel(this.chartTranslator.translate(\"padding\"))\n .setValue(this.chartController.getChartProxy().getChartOption(\"legend.padding\"))\n .setTextFieldWidth(45)\n .setMaxValue(200)\n .onValueChange(function (newValue) { return _this.chartController.getChartProxy().setChartOption(\"legend.padding\", newValue); });\n };\n LegendPanel.prototype.initLegendItems = function () {\n var _this = this;\n var initSlider = function (expression, labelKey, input, maxValue) {\n input.setLabel(_this.chartTranslator.translate(labelKey))\n .setValue(_this.chartController.getChartProxy().getChartOption(\"legend.\" + expression))\n .setMaxValue(maxValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartController.getChartProxy().setChartOption(\"legend.\" + expression, newValue); });\n };\n initSlider(\"item.marker.size\", \"markerSize\", this.markerSizeSlider, 40);\n initSlider(\"item.marker.strokeWidth\", \"markerStroke\", this.markerStrokeSlider, 10);\n initSlider(\"item.marker.padding\", \"markerPadding\", this.markerPaddingSlider, 20);\n initSlider(\"item.paddingX\", \"itemPaddingX\", this.itemPaddingXSlider, 50);\n initSlider(\"item.paddingY\", \"itemPaddingY\", this.itemPaddingYSlider, 50);\n };\n LegendPanel.prototype.initLabelPanel = function () {\n var _this = this;\n var chartProxy = this.chartController.getChartProxy();\n var initialFont = {\n family: chartProxy.getChartOption(\"legend.item.label.fontFamily\"),\n style: chartProxy.getChartOption(\"legend.item.label.fontStyle\"),\n weight: chartProxy.getChartOption(\"legend.item.label.fontWeight\"),\n size: chartProxy.getChartOption(\"legend.item.label.fontSize\"),\n color: chartProxy.getChartOption(\"legend.item.label.color\")\n };\n var setFont = function (font) {\n var chartProxy = _this.chartController.getChartProxy();\n if (font.family) {\n chartProxy.setChartOption(\"legend.item.label.fontFamily\", font.family);\n }\n if (font.weight) {\n chartProxy.setChartOption(\"legend.item.label.fontWeight\", font.weight);\n }\n if (font.style) {\n chartProxy.setChartOption(\"legend.item.label.fontStyle\", font.style);\n }\n if (font.size) {\n chartProxy.setChartOption(\"legend.item.label.fontSize\", font.size);\n }\n if (font.color) {\n chartProxy.setChartOption(\"legend.item.label.color\", font.color);\n }\n };\n var params = {\n enabled: true,\n suppressEnabledCheckbox: true,\n initialFont: initialFont,\n setFont: setFont\n };\n var fontPanelComp = this.wireBean(new fontPanel_1.FontPanel(params));\n this.legendGroup.addItem(fontPanelComp);\n this.activePanels.push(fontPanelComp);\n };\n LegendPanel.prototype.destroyActivePanels = function () {\n this.activePanels.forEach(function (panel) {\n core_1._.removeFromParent(panel.getGui());\n panel.destroy();\n });\n };\n LegendPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n LegendPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\";\n __decorate([\n core_1.RefSelector('legendGroup')\n ], LegendPanel.prototype, \"legendGroup\", void 0);\n __decorate([\n core_1.RefSelector('legendPositionSelect')\n ], LegendPanel.prototype, \"legendPositionSelect\", void 0);\n __decorate([\n core_1.RefSelector('legendPaddingSlider')\n ], LegendPanel.prototype, \"legendPaddingSlider\", void 0);\n __decorate([\n core_1.RefSelector('markerSizeSlider')\n ], LegendPanel.prototype, \"markerSizeSlider\", void 0);\n __decorate([\n core_1.RefSelector('markerStrokeSlider')\n ], LegendPanel.prototype, \"markerStrokeSlider\", void 0);\n __decorate([\n core_1.RefSelector('markerPaddingSlider')\n ], LegendPanel.prototype, \"markerPaddingSlider\", void 0);\n __decorate([\n core_1.RefSelector('itemPaddingXSlider')\n ], LegendPanel.prototype, \"itemPaddingXSlider\", void 0);\n __decorate([\n core_1.RefSelector('itemPaddingYSlider')\n ], LegendPanel.prototype, \"itemPaddingYSlider\", void 0);\n __decorate([\n core_1.Autowired('chartTranslator')\n ], LegendPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], LegendPanel.prototype, \"init\", null);\n return LegendPanel;\n}(core_1.Component));\nexports.LegendPanel = LegendPanel;\n//# sourceMappingURL=legendPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar shadowPanel_1 = require(\"./shadowPanel\");\nvar fontPanel_1 = require(\"../fontPanel\");\nvar BarSeriesPanel = /** @class */ (function (_super) {\n __extends(BarSeriesPanel, _super);\n function BarSeriesPanel(chartController) {\n var _this = _super.call(this) || this;\n _this.activePanels = [];\n _this.chartController = chartController;\n return _this;\n }\n BarSeriesPanel.prototype.init = function () {\n this.setTemplate(BarSeriesPanel.TEMPLATE);\n this.seriesGroup\n .setTitle(this.chartTranslator.translate(\"series\"))\n .toggleGroupExpand(false)\n .hideEnabledCheckbox(true);\n this.initSeriesTooltips();\n this.initSeriesStrokeWidth();\n this.initOpacity();\n this.initLabelPanel();\n this.initShadowPanel();\n };\n BarSeriesPanel.prototype.initSeriesTooltips = function () {\n var _this = this;\n this.seriesTooltipsToggle\n .setLabel(this.chartTranslator.translate(\"tooltips\"))\n .setLabelAlignment(\"left\")\n .setLabelWidth(\"flex\")\n .setInputWidth(40)\n .setValue(this.getChartProxy().getSeriesOption(\"tooltip.enabled\") || false)\n .onValueChange(function (newValue) { return _this.getChartProxy().setSeriesOption(\"tooltip.enabled\", newValue); });\n };\n BarSeriesPanel.prototype.initSeriesStrokeWidth = function () {\n var _this = this;\n this.seriesStrokeWidthSlider\n .setLabel(this.chartTranslator.translate(\"strokeWidth\"))\n .setMaxValue(10)\n .setTextFieldWidth(45)\n .setValue(this.getChartProxy().getSeriesOption(\"stroke.width\"))\n .onValueChange(function (newValue) { return _this.getChartProxy().setSeriesOption(\"stroke.width\", newValue); });\n };\n BarSeriesPanel.prototype.initOpacity = function () {\n var _this = this;\n this.seriesLineOpacitySlider\n .setLabel(this.chartTranslator.translate(\"strokeOpacity\"))\n .setStep(0.05)\n .setMaxValue(1)\n .setTextFieldWidth(45)\n .setValue(this.getChartProxy().getSeriesOption(\"stroke.opacity\") || \"1\")\n .onValueChange(function (newValue) { return _this.getChartProxy().setSeriesOption(\"stroke.opacity\", newValue); });\n this.seriesFillOpacitySlider\n .setLabel(this.chartTranslator.translate(\"fillOpacity\"))\n .setStep(0.05)\n .setMaxValue(1)\n .setTextFieldWidth(45)\n .setValue(this.getChartProxy().getSeriesOption(\"fill.opacity\") || \"1\")\n .onValueChange(function (newValue) { return _this.getChartProxy().setSeriesOption(\"fill.opacity\", newValue); });\n };\n BarSeriesPanel.prototype.initLabelPanel = function () {\n var _this = this;\n var chartProxy = this.getChartProxy();\n var initialFont = {\n family: chartProxy.getSeriesOption(\"label.fontFamily\"),\n style: chartProxy.getSeriesOption(\"label.fontStyle\"),\n weight: chartProxy.getSeriesOption(\"label.fontWeight\"),\n size: chartProxy.getSeriesOption(\"label.fontSize\"),\n color: chartProxy.getSeriesOption(\"label.color\")\n };\n var setFont = function (font) {\n var chartProxy = _this.getChartProxy();\n if (font.family) {\n chartProxy.setSeriesOption(\"label.fontFamily\", font.family);\n }\n if (font.weight) {\n chartProxy.setSeriesOption(\"label.fontWeight\", font.weight);\n }\n if (font.style) {\n chartProxy.setSeriesOption(\"label.fontStyle\", font.style);\n }\n if (font.size) {\n chartProxy.setSeriesOption(\"label.fontSize\", font.size);\n }\n if (font.color) {\n chartProxy.setSeriesOption(\"label.color\", font.color);\n }\n };\n var params = {\n name: this.chartTranslator.translate('labels'),\n enabled: chartProxy.getSeriesOption(\"label.enabled\") || false,\n setEnabled: function (enabled) { return _this.getChartProxy().setSeriesOption(\"label.enabled\", enabled); },\n suppressEnabledCheckbox: false,\n initialFont: initialFont,\n setFont: setFont\n };\n var labelPanelComp = this.wireBean(new fontPanel_1.FontPanel(params));\n this.activePanels.push(labelPanelComp);\n this.seriesGroup.addItem(labelPanelComp);\n };\n BarSeriesPanel.prototype.initShadowPanel = function () {\n var shadowPanelComp = this.wireBean(new shadowPanel_1.ShadowPanel(this.chartController));\n this.seriesGroup.addItem(shadowPanelComp);\n this.activePanels.push(shadowPanelComp);\n };\n BarSeriesPanel.prototype.destroyActivePanels = function () {\n this.activePanels.forEach(function (panel) {\n core_1._.removeFromParent(panel.getGui());\n panel.destroy();\n });\n };\n BarSeriesPanel.prototype.getChartProxy = function () {\n return this.chartController.getChartProxy();\n };\n BarSeriesPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n BarSeriesPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n \\n
\";\n __decorate([\n core_1.RefSelector('seriesGroup')\n ], BarSeriesPanel.prototype, \"seriesGroup\", void 0);\n __decorate([\n core_1.RefSelector('seriesTooltipsToggle')\n ], BarSeriesPanel.prototype, \"seriesTooltipsToggle\", void 0);\n __decorate([\n core_1.RefSelector('seriesStrokeWidthSlider')\n ], BarSeriesPanel.prototype, \"seriesStrokeWidthSlider\", void 0);\n __decorate([\n core_1.RefSelector('seriesLineOpacitySlider')\n ], BarSeriesPanel.prototype, \"seriesLineOpacitySlider\", void 0);\n __decorate([\n core_1.RefSelector('seriesFillOpacitySlider')\n ], BarSeriesPanel.prototype, \"seriesFillOpacitySlider\", void 0);\n __decorate([\n core_1.Autowired('chartTranslator')\n ], BarSeriesPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], BarSeriesPanel.prototype, \"init\", null);\n return BarSeriesPanel;\n}(core_1.Component));\nexports.BarSeriesPanel = BarSeriesPanel;\n//# sourceMappingURL=barSeriesPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar axisTicksPanel_1 = require(\"./axisTicksPanel\");\nvar fontPanel_1 = require(\"../fontPanel\");\nvar array_1 = require(\"../../../../../charts/util/array\");\nvar chartAxis_1 = require(\"../../../../../charts/chart/chartAxis\");\nvar AxisPanel = /** @class */ (function (_super) {\n __extends(AxisPanel, _super);\n function AxisPanel(chartController) {\n var _this = _super.call(this) || this;\n _this.activePanels = [];\n _this.chartController = chartController;\n return _this;\n }\n AxisPanel.prototype.init = function () {\n this.setTemplate(AxisPanel.TEMPLATE);\n this.initAxis();\n this.initAxisTicks();\n this.initAxisLabels();\n };\n AxisPanel.prototype.initAxis = function () {\n var _this = this;\n this.axisGroup\n .setTitle(this.chartTranslator.translate(\"axis\"))\n .toggleGroupExpand(false)\n .hideEnabledCheckbox(true);\n this.axisColorInput\n .setLabel(this.chartTranslator.translate(\"color\"))\n .setLabelWidth(\"flex\")\n .setInputWidth(45)\n .setValue(this.getChartProxy().getAxisProperty(\"line.color\"))\n .onValueChange(function (newColor) { return _this.getChartProxy().setAxisProperty(\"line.color\", newColor); });\n this.axisLineWidthSlider\n .setLabel(this.chartTranslator.translate(\"thickness\"))\n .setMaxValue(10)\n .setTextFieldWidth(45)\n .setValue(this.getChartProxy().getAxisProperty(\"line.width\"))\n .onValueChange(function (newValue) { return _this.getChartProxy().setAxisProperty(\"line.width\", newValue); });\n };\n AxisPanel.prototype.initAxisTicks = function () {\n var axisTicksComp = this.wireBean(new axisTicksPanel_1.AxisTicksPanel(this.chartController));\n this.axisGroup.addItem(axisTicksComp);\n this.activePanels.push(axisTicksComp);\n };\n AxisPanel.prototype.initAxisLabels = function () {\n var _this = this;\n var chartProxy = this.getChartProxy();\n var initialFont = {\n family: chartProxy.getAxisProperty(\"label.fontFamily\"),\n style: chartProxy.getAxisProperty(\"label.fontStyle\"),\n weight: chartProxy.getAxisProperty(\"label.fontWeight\"),\n size: chartProxy.getAxisProperty(\"label.fontSize\"),\n color: chartProxy.getAxisProperty(\"label.color\")\n };\n var setFont = function (font) {\n var chartProxy = _this.getChartProxy();\n if (font.family) {\n chartProxy.setAxisProperty(\"label.fontFamily\", font.family);\n }\n if (font.weight) {\n chartProxy.setAxisProperty(\"label.fontWeight\", font.weight);\n }\n if (font.style) {\n chartProxy.setAxisProperty(\"label.fontStyle\", font.style);\n }\n if (font.size) {\n chartProxy.setAxisProperty(\"label.fontSize\", font.size);\n }\n if (font.color) {\n chartProxy.setAxisProperty(\"label.color\", font.color);\n }\n chartProxy.getChart().performLayout();\n };\n var params = {\n enabled: true,\n suppressEnabledCheckbox: true,\n initialFont: initialFont,\n setFont: setFont\n };\n var labelPanelComp = this.wireBean(new fontPanel_1.FontPanel(params));\n this.axisGroup.addItem(labelPanelComp);\n this.activePanels.push(labelPanelComp);\n this.addAdditionalLabelComps(labelPanelComp);\n };\n AxisPanel.prototype.addAdditionalLabelComps = function (labelPanelComp) {\n var _this = this;\n var createAngleComp = function (label, initialValue, updateFunc) {\n var rotationInput = _this.wireBean(new core_1.AgAngleSelect()\n .setLabel(label)\n .setLabelWidth(\"flex\")\n .setValue(initialValue || 0)\n .onValueChange(updateFunc));\n labelPanelComp.addCompToPanel(rotationInput);\n };\n var degreesSymbol = String.fromCharCode(176);\n var createLabelUpdateFunc = function (axisPosition) { return function (newValue) {\n var chart = _this.getChartProxy().getChart();\n var axis = array_1.find(chart.axes, function (axis) { return axis.position === axisPosition; });\n if (axis) {\n axis.label.rotation = newValue;\n chart.performLayout();\n }\n }; };\n var xRotationLabel = this.chartTranslator.translate(\"xRotation\") + \" \" + degreesSymbol;\n var yRotationLabel = this.chartTranslator.translate(\"yRotation\") + \" \" + degreesSymbol;\n createAngleComp(xRotationLabel, this.getChartProxy().getChartOption(\"xAxis.label.rotation\"), createLabelUpdateFunc(chartAxis_1.ChartAxisPosition.Bottom));\n createAngleComp(yRotationLabel, this.getChartProxy().getChartOption(\"yAxis.label.rotation\"), createLabelUpdateFunc(chartAxis_1.ChartAxisPosition.Left));\n var labelPaddingSlider = this.wireBean(new core_1.AgSlider());\n labelPaddingSlider.setLabel(this.chartTranslator.translate(\"padding\"))\n .setValue(this.getChartProxy().getAxisProperty(\"label.padding\"))\n .setMaxValue(30)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.getChartProxy().setAxisProperty(\"label.padding\", newValue); });\n labelPanelComp.addCompToPanel(labelPaddingSlider);\n };\n AxisPanel.prototype.destroyActivePanels = function () {\n this.activePanels.forEach(function (panel) {\n core_1._.removeFromParent(panel.getGui());\n panel.destroy();\n });\n };\n AxisPanel.prototype.getChartProxy = function () {\n return this.chartController.getChartProxy();\n };\n AxisPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n AxisPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n
\";\n __decorate([\n core_1.RefSelector('axisGroup')\n ], AxisPanel.prototype, \"axisGroup\", void 0);\n __decorate([\n core_1.RefSelector('axisLineWidthSlider')\n ], AxisPanel.prototype, \"axisLineWidthSlider\", void 0);\n __decorate([\n core_1.RefSelector('axisColorInput')\n ], AxisPanel.prototype, \"axisColorInput\", void 0);\n __decorate([\n core_1.Autowired('chartTranslator')\n ], AxisPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], AxisPanel.prototype, \"init\", null);\n return AxisPanel;\n}(core_1.Component));\nexports.AxisPanel = AxisPanel;\n//# sourceMappingURL=axisPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar AxisTicksPanel = /** @class */ (function (_super) {\n __extends(AxisTicksPanel, _super);\n function AxisTicksPanel(chartController) {\n var _this = _super.call(this) || this;\n _this.chartController = chartController;\n return _this;\n }\n AxisTicksPanel.prototype.init = function () {\n this.setTemplate(AxisTicksPanel.TEMPLATE);\n this.initAxisTicks();\n };\n AxisTicksPanel.prototype.initAxisTicks = function () {\n var _this = this;\n this.axisTicksGroup\n .setTitle(this.chartTranslator.translate(\"ticks\"))\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(true);\n this.axisTicksColorPicker\n .setLabel(this.chartTranslator.translate(\"color\"))\n .setLabelWidth(\"flex\")\n .setInputWidth(45)\n .setValue(this.getChartProxy().getAxisProperty(\"tick.color\"))\n .onValueChange(function (newColor) { return _this.getChartProxy().setAxisProperty(\"tick.color\", newColor); });\n var initInput = function (expression, input, label, maxValue) {\n input.setLabel(label)\n .setValue(_this.getChartProxy().getAxisProperty(expression))\n .setMaxValue(maxValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.getChartProxy().setAxisProperty(expression, newValue); });\n };\n initInput(\"tick.width\", this.axisTicksWidthSlider, this.chartTranslator.translate(\"width\"), 10);\n initInput(\"tick.size\", this.axisTicksSizeSlider, this.chartTranslator.translate(\"length\"), 30);\n };\n AxisTicksPanel.prototype.getChartProxy = function () {\n return this.chartController.getChartProxy();\n };\n AxisTicksPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n
\";\n __decorate([\n core_1.RefSelector('axisTicksGroup')\n ], AxisTicksPanel.prototype, \"axisTicksGroup\", void 0);\n __decorate([\n core_1.RefSelector('axisTicksColorPicker')\n ], AxisTicksPanel.prototype, \"axisTicksColorPicker\", void 0);\n __decorate([\n core_1.RefSelector('axisTicksWidthSlider')\n ], AxisTicksPanel.prototype, \"axisTicksWidthSlider\", void 0);\n __decorate([\n core_1.RefSelector('axisTicksSizeSlider')\n ], AxisTicksPanel.prototype, \"axisTicksSizeSlider\", void 0);\n __decorate([\n core_1.Autowired('chartTranslator')\n ], AxisTicksPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], AxisTicksPanel.prototype, \"init\", null);\n return AxisTicksPanel;\n}(core_1.Component));\nexports.AxisTicksPanel = AxisTicksPanel;\n//# sourceMappingURL=axisTicksPanel.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar polyRoots_1 = require(\"./polyRoots\");\n/**\n * Returns the intersection point for the given pair of line segments, or null,\n * if the segments are parallel or don't intersect.\n * Based on http://paulbourke.net/geometry/pointlineplane/\n */\nfunction segmentIntersection(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2) {\n var d = (ax2 - ax1) * (by2 - by1) - (ay2 - ay1) * (bx2 - bx1);\n if (d === 0) { // The lines are parallel.\n return null;\n }\n var ua = ((bx2 - bx1) * (ay1 - by1) - (ax1 - bx1) * (by2 - by1)) / d;\n var ub = ((ax2 - ax1) * (ay1 - by1) - (ay2 - ay1) * (ax1 - bx1)) / d;\n if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {\n return {\n x: ax1 + ua * (ax2 - ax1),\n y: ay1 + ua * (ay2 - ay1)\n };\n }\n return null; // The intersection point is outside either or both segments.\n}\nexports.segmentIntersection = segmentIntersection;\n/**\n * Returns intersection points of the given cubic curve and the line segment.\n * Takes in x/y components of cubic control points and line segment start/end points\n * as parameters.\n */\nfunction cubicSegmentIntersections(px1, py1, px2, py2, px3, py3, px4, py4, x1, y1, x2, y2) {\n var intersections = [];\n // Find line equation coefficients.\n var A = y1 - y2;\n var B = x2 - x1;\n var C = x1 * (y2 - y1) - y1 * (x2 - x1);\n // Find cubic Bezier curve equation coefficients from control points.\n var bx = bezierCoefficients(px1, px2, px3, px4);\n var by = bezierCoefficients(py1, py2, py3, py4);\n var a = A * bx[0] + B * by[0]; // t^3\n var b = A * bx[1] + B * by[1]; // t^2\n var c = A * bx[2] + B * by[2]; // t\n var d = A * bx[3] + B * by[3] + C; // 1\n var roots = polyRoots_1.cubicRoots(a, b, c, d);\n // Verify that the roots are within bounds of the linear segment.\n for (var i = 0; i < roots.length; i++) {\n var t = roots[i];\n var tt = t * t;\n var ttt = t * tt;\n // Find the cartesian plane coordinates for the parametric root `t`.\n var x = bx[0] * ttt + bx[1] * tt + bx[2] * t + bx[3];\n var y = by[0] * ttt + by[1] * tt + by[2] * t + by[3];\n // The parametric cubic roots we found are intersection points\n // with an infinite line, and so the x/y coordinates above are as well.\n // Make sure the x/y is also within the bounds of the given segment.\n var s = void 0;\n if (x1 !== x2) {\n s = (x - x1) / (x2 - x1);\n }\n else { // the line is vertical\n s = (y - y1) / (y2 - y1);\n }\n if (s >= 0 && s <= 1) {\n intersections.push({ x: x, y: y });\n }\n }\n return intersections;\n}\nexports.cubicSegmentIntersections = cubicSegmentIntersections;\n/**\n * Returns the given coordinates vector multiplied by the coefficient matrix\n * of the parametric cubic Bézier equation.\n */\nfunction bezierCoefficients(P1, P2, P3, P4) {\n return [\n -P1 + 3 * P2 - 3 * P3 + P4,\n 3 * P1 - 6 * P2 + 3 * P3,\n -3 * P1 + 3 * P2,\n P1 // | 1 0 0 0| |P4|\n ];\n}\nexports.bezierCoefficients = bezierCoefficients;\n//# sourceMappingURL=intersection.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// @ts-ignore Suppress tsc error: Property 'sign' does not exist on type 'Math'\nvar sign = Math.sign ? Math.sign : function (x) {\n x = +x;\n if (x === 0 || isNaN(x)) {\n return x;\n }\n return x > 0 ? 1 : -1;\n};\n/**\n * Finds the roots of a parametric linear equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n */\nfunction linearRoot(a, b) {\n var t = -b / a;\n return (a !== 0 && t >= 0 && t <= 1) ? [t] : [];\n}\nexports.linearRoot = linearRoot;\n/**\n * Finds the roots of a parametric quadratic equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n */\nfunction quadraticRoots(a, b, c) {\n if (a === 0) {\n return linearRoot(b, c);\n }\n var D = b * b - 4 * a * c; // The polynomial's discriminant.\n var roots = [];\n if (D === 0) { // A single real root.\n var t = -b / (2 * a);\n if (t >= 0 && t <= 1) {\n roots.push(t);\n }\n }\n else if (D > 0) { // A pair of distinct real roots.\n var rD = Math.sqrt(D);\n var t1 = (-b - rD) / (2 * a);\n var t2 = (-b + rD) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n roots.push(t2);\n }\n }\n // else -> Complex roots.\n return roots;\n}\nexports.quadraticRoots = quadraticRoots;\n/**\n * Finds the roots of a parametric cubic equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n * Returns an array of parametric intersection locations along the cubic,\n * excluding out-of-bounds intersections (before or after the end point\n * or in the imaginary plane).\n * An adaptation of http://www.particleincell.com/blog/2013/cubic-line-intersection/\n */\nfunction cubicRoots(a, b, c, d) {\n if (a === 0) {\n return quadraticRoots(b, c, d);\n }\n var A = b / a;\n var B = c / a;\n var C = d / a;\n var Q = (3 * B - A * A) / 9;\n var R = (9 * A * B - 27 * C - 2 * A * A * A) / 54;\n var D = Q * Q * Q + R * R; // The polynomial's discriminant.\n var third = 1 / 3;\n var roots = [];\n if (D >= 0) { // Complex or duplicate roots.\n var rD = Math.sqrt(D);\n var S = sign(R + rD) * Math.pow(Math.abs(R + rD), third);\n var T = sign(R - rD) * Math.pow(Math.abs(R - rD), third);\n var Im = Math.abs(Math.sqrt(3) * (S - T) / 2); // Complex part of the root pair.\n var t = -third * A + (S + T); // A real root.\n if (t >= 0 && t <= 1) {\n roots.push(t);\n }\n if (Im === 0) {\n var t_1 = -third * A - (S + T) / 2; // The real part of a complex root.\n if (t_1 >= 0 && t_1 <= 1) {\n roots.push(t_1);\n }\n }\n }\n else { // Distinct real roots.\n var theta = Math.acos(R / Math.sqrt(-Q * Q * Q));\n var thirdA = third * A;\n var twoSqrtQ = 2 * Math.sqrt(-Q);\n var t1 = twoSqrtQ * Math.cos(third * theta) - thirdA;\n var t2 = twoSqrtQ * Math.cos(third * (theta + 2 * Math.PI)) - thirdA;\n var t3 = twoSqrtQ * Math.cos(third * (theta + 4 * Math.PI)) - thirdA;\n if (t1 >= 0 && t1 <= 1) {\n roots.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n roots.push(t2);\n }\n if (t3 >= 0 && t3 <= 1) {\n roots.push(t3);\n }\n }\n return roots;\n}\nexports.cubicRoots = cubicRoots;\n//# sourceMappingURL=polyRoots.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar markersPanel_1 = require(\"./markersPanel\");\nvar LineSeriesPanel = /** @class */ (function (_super) {\n __extends(LineSeriesPanel, _super);\n function LineSeriesPanel(chartController) {\n var _this = _super.call(this) || this;\n _this.activePanels = [];\n _this.chartController = chartController;\n return _this;\n }\n LineSeriesPanel.prototype.init = function () {\n this.setTemplate(LineSeriesPanel.TEMPLATE);\n this.initSeriesGroup();\n this.initSeriesTooltips();\n this.initSeriesLineWidth();\n this.initMarkersPanel();\n };\n LineSeriesPanel.prototype.initSeriesGroup = function () {\n this.seriesGroup\n .setTitle(this.chartTranslator.translate(\"series\"))\n .toggleGroupExpand(false)\n .hideEnabledCheckbox(true);\n };\n LineSeriesPanel.prototype.initSeriesTooltips = function () {\n var _this = this;\n this.seriesTooltipsToggle\n .setLabel(this.chartTranslator.translate(\"tooltips\"))\n .setLabelAlignment(\"left\")\n .setLabelWidth(\"flex\")\n .setInputWidth(40)\n .setValue(this.getChartProxy().getSeriesOption(\"tooltip.enabled\") || false)\n .onValueChange(function (newValue) { return _this.getChartProxy().setSeriesOption(\"tooltip.enabled\", newValue); });\n };\n LineSeriesPanel.prototype.initSeriesLineWidth = function () {\n var _this = this;\n this.seriesLineWidthSlider\n .setLabel(this.chartTranslator.translate('lineWidth'))\n .setMaxValue(10)\n .setTextFieldWidth(45)\n .setValue(this.getChartProxy().getSeriesOption(\"stroke.width\"))\n .onValueChange(function (newValue) { return _this.getChartProxy().setSeriesOption(\"stroke.width\", newValue); });\n };\n LineSeriesPanel.prototype.initMarkersPanel = function () {\n var markersPanelComp = this.wireBean(new markersPanel_1.MarkersPanel(this.chartController));\n this.seriesGroup.addItem(markersPanelComp);\n this.activePanels.push(markersPanelComp);\n };\n LineSeriesPanel.prototype.destroyActivePanels = function () {\n this.activePanels.forEach(function (panel) {\n core_1._.removeFromParent(panel.getGui());\n panel.destroy();\n });\n };\n LineSeriesPanel.prototype.getChartProxy = function () {\n return this.chartController.getChartProxy();\n };\n LineSeriesPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n LineSeriesPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n
\";\n __decorate([\n core_1.RefSelector('seriesGroup')\n ], LineSeriesPanel.prototype, \"seriesGroup\", void 0);\n __decorate([\n core_1.RefSelector('seriesTooltipsToggle')\n ], LineSeriesPanel.prototype, \"seriesTooltipsToggle\", void 0);\n __decorate([\n core_1.RefSelector('seriesLineWidthSlider')\n ], LineSeriesPanel.prototype, \"seriesLineWidthSlider\", void 0);\n __decorate([\n core_1.Autowired('chartTranslator')\n ], LineSeriesPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], LineSeriesPanel.prototype, \"init\", null);\n return LineSeriesPanel;\n}(core_1.Component));\nexports.LineSeriesPanel = LineSeriesPanel;\n//# sourceMappingURL=lineSeriesPanel.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Wraps the native Canvas element and overrides its CanvasRenderingContext2D to\n * provide resolution independent rendering based on `window.devicePixelRatio`.\n */\nvar HdpiCanvas = /** @class */ (function () {\n // The width/height attributes of the Canvas element default to\n // 300/150 according to w3.org.\n function HdpiCanvas(document) {\n if (document === void 0) { document = window.document; }\n this._parent = undefined;\n // `NaN` is deliberate here, so that overrides are always applied\n // and the `resetTransform` inside the `resize` method works in IE11.\n this._pixelRatio = NaN;\n this.document = document;\n this.tempCanvas = document.createElement('canvas');\n this.element = document.createElement('canvas');\n this.element.style.userSelect = 'none';\n this.context = this.element.getContext('2d');\n this.updatePixelRatio(0, false);\n this.resize(this._width = 300, this._height = 150);\n }\n Object.defineProperty(HdpiCanvas.prototype, \"parent\", {\n get: function () {\n return this._parent;\n },\n set: function (value) {\n if (this._parent !== value) {\n this.remove();\n if (value) {\n value.appendChild(this.element);\n }\n this._parent = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n HdpiCanvas.prototype.remove = function () {\n var parent = this.element.parentNode;\n if (parent != null) {\n parent.removeChild(this.element);\n }\n };\n HdpiCanvas.prototype.destroy = function () {\n this.element.remove();\n this._canvas = undefined;\n Object.freeze(this);\n };\n HdpiCanvas.prototype.toImage = function () {\n var img = this.document.createElement('img');\n img.src = this.element.toDataURL();\n return img;\n };\n /**\n * @param options.fileName The `.png` extension is going to be added automatically.\n * @param [options.background] Defaults to `white`.\n */\n HdpiCanvas.prototype.download = function (fileName) {\n fileName = ((fileName || '').trim() || 'image') + '.png';\n // Chart images saved as JPEG are a few times larger at 50% quality than PNG images,\n // so we don't support saving to JPEG.\n var type = 'image/png';\n var dataUrl = this.element.toDataURL(type);\n var document = this.document;\n if (navigator.msSaveOrOpenBlob) { // IE11\n var binary = atob(dataUrl.split(',')[1]); // strip the `data:image/png;base64,` part\n var array = [];\n for (var i = 0, n = binary.length; i < n; i++) {\n array.push(binary.charCodeAt(i));\n }\n var blob = new Blob([new Uint8Array(array)], { type: type });\n navigator.msSaveOrOpenBlob(blob, fileName);\n }\n else {\n var a = document.createElement('a');\n a.href = dataUrl;\n a.download = fileName;\n a.style.display = 'none';\n document.body.appendChild(a); // required for the `click` to work in Firefox\n a.click();\n document.body.removeChild(a);\n }\n };\n Object.defineProperty(HdpiCanvas.prototype, \"pixelRatio\", {\n get: function () {\n return this._pixelRatio;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Updates the pixel ratio of the Canvas element with the given value,\n * or uses the window.devicePixelRatio (default), then resizes the Canvas\n * element accordingly (default).\n * @param ratio\n * @param resize\n */\n HdpiCanvas.prototype.updatePixelRatio = function (ratio, resize) {\n if (ratio === void 0) { ratio = 0; }\n if (resize === void 0) { resize = true; }\n var pixelRatio = ratio || window.devicePixelRatio;\n if (pixelRatio === this.pixelRatio) {\n return;\n }\n var canvas = this.element;\n var ctx = this.context;\n var overrides = this.overrides = HdpiCanvas.makeHdpiOverrides(pixelRatio);\n for (var name_1 in overrides) {\n if (overrides.hasOwnProperty(name_1)) {\n // Save native methods under prefixed names,\n // if this hasn't been done by the previous overrides already.\n if (!ctx['$' + name_1]) {\n ctx['$' + name_1] = ctx[name_1];\n }\n // Replace native methods with overrides,\n // or previous overrides with the new ones.\n ctx[name_1] = overrides[name_1];\n }\n }\n if (resize) {\n var logicalWidth = canvas.width / this.pixelRatio;\n var logicalHeight = canvas.height / this.pixelRatio;\n canvas.width = Math.round(logicalWidth * pixelRatio);\n canvas.height = Math.round(logicalHeight * pixelRatio);\n canvas.style.width = Math.round(logicalWidth) + 'px';\n canvas.style.height = Math.round(logicalHeight) + 'px';\n ctx.resetTransform(); // should be called every time Canvas size changes\n }\n this._pixelRatio = pixelRatio;\n };\n Object.defineProperty(HdpiCanvas.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n enumerable: true,\n configurable: true\n });\n HdpiCanvas.prototype.resize = function (width, height) {\n var canvas = this.element;\n var context = this.context;\n var tempCanvas = this.tempCanvas;\n this._width = width;\n this._height = height;\n tempCanvas.width = canvas.width;\n tempCanvas.height = canvas.height;\n var tempContext = tempCanvas.getContext('2d');\n tempContext.drawImage(context.canvas, 0, 0);\n canvas.width = Math.round(width * this.pixelRatio);\n canvas.height = Math.round(height * this.pixelRatio);\n canvas.style.width = Math.round(width) + 'px';\n canvas.style.height = Math.round(height) + 'px';\n context.drawImage(tempContext.canvas, 0, 0);\n context.resetTransform();\n };\n Object.defineProperty(HdpiCanvas.prototype, \"textMeasuringContext\", {\n get: function () {\n if (this._textMeasuringContext) {\n return this._textMeasuringContext;\n }\n var canvas = document.createElement('canvas');\n return this._textMeasuringContext = canvas.getContext('2d');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"svgText\", {\n get: function () {\n if (this._svgText) {\n return this._svgText;\n }\n var xmlns = 'http://www.w3.org/2000/svg';\n var svg = document.createElementNS(xmlns, 'svg');\n svg.setAttribute('width', '100');\n svg.setAttribute('height', '100');\n // Add a descriptive class name in case someone sees this SVG element\n // in devtools and wonders about its purpose:\n if (svg.classList) {\n svg.classList.add('text-measuring-svg');\n }\n else {\n svg.setAttribute('class', 'text-measuring-svg');\n }\n svg.style.position = 'absolute';\n svg.style.top = '-1000px';\n svg.style.visibility = 'hidden';\n var svgText = document.createElementNS(xmlns, 'text');\n svgText.setAttribute('x', '0');\n svgText.setAttribute('y', '30');\n svgText.setAttribute('text', 'black');\n svg.appendChild(svgText);\n document.body.appendChild(svg);\n this._svgText = svgText;\n return svgText;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"has\", {\n get: function () {\n if (this._has) {\n return this._has;\n }\n return this._has = Object.freeze({\n textMetrics: this.textMeasuringContext.measureText('test')\n .actualBoundingBoxDescent !== undefined,\n getTransform: this.textMeasuringContext.getTransform !== undefined,\n flicker: !!window.safari\n });\n },\n enumerable: true,\n configurable: true\n });\n HdpiCanvas.prototype.measureText = function (text, font, textBaseline, textAlign) {\n var ctx = this.textMeasuringContext;\n ctx.font = font;\n ctx.textBaseline = textBaseline;\n ctx.textAlign = textAlign;\n return ctx.measureText(text);\n };\n /**\n * Returns the width and height of the measured text.\n * @param text The single-line text to measure.\n * @param font The font shorthand string.\n */\n HdpiCanvas.prototype.getTextSize = function (text, font) {\n if (this.has.textMetrics) {\n var ctx = this.textMeasuringContext;\n ctx.font = font;\n var metrics = ctx.measureText(text);\n return {\n width: metrics.width,\n height: metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent\n };\n }\n else {\n return this.measureSvgText(text, font);\n }\n };\n HdpiCanvas.prototype.measureSvgText = function (text, font) {\n var cache = HdpiCanvas.textSizeCache;\n var fontCache = cache[font];\n // Note: consider not caching the size of numeric strings.\n // For example: if (isNaN(+text)) { // skip\n if (fontCache) {\n var size_1 = fontCache[text];\n if (size_1) {\n return size_1;\n }\n }\n else {\n cache[font] = {};\n }\n var svgText = this.svgText;\n svgText.style.font = font;\n svgText.textContent = text;\n // `getBBox` returns an instance of `SVGRect` with the same `width` and `height`\n // measurements as `DOMRect` instance returned by the `getBoundingClientRect`.\n // But the `SVGRect` instance has half the properties of the `DOMRect`,\n // so we use the `getBBox` method.\n var bbox = svgText.getBBox();\n var size = {\n width: bbox.width,\n height: bbox.height\n };\n cache[font][text] = size;\n return size;\n };\n HdpiCanvas.makeHdpiOverrides = function (pixelRatio) {\n var depth = 0;\n return {\n save: function () {\n this.$save();\n depth++;\n },\n restore: function () {\n if (depth > 0) {\n this.$restore();\n depth--;\n }\n },\n setTransform: function (a, b, c, d, e, f) {\n this.$setTransform(a * pixelRatio, b * pixelRatio, c * pixelRatio, d * pixelRatio, e * pixelRatio, f * pixelRatio);\n },\n resetTransform: function () {\n // As of Jan 8, 2019, `resetTransform` is still an \"experimental technology\",\n // and doesn't work in IE11 and Edge 44.\n this.$setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n this.save();\n depth = 0;\n // The scale above will be impossible to restore,\n // because we override the `ctx.restore` above and\n // check `depth` there.\n }\n };\n };\n HdpiCanvas.textSizeCache = {};\n return HdpiCanvas;\n}());\nexports.HdpiCanvas = HdpiCanvas;\n//# sourceMappingURL=hdpiCanvas.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar group_1 = require(\"../scene/group\");\nvar selection_1 = require(\"../scene/selection\");\nvar markerLabel_1 = require(\"./markerLabel\");\nvar square_1 = require(\"./marker/square\");\nvar observable_1 = require(\"../util/observable\");\nvar Orientation;\n(function (Orientation) {\n Orientation[Orientation[\"Vertical\"] = 0] = \"Vertical\";\n Orientation[Orientation[\"Horizontal\"] = 1] = \"Horizontal\";\n})(Orientation = exports.Orientation || (exports.Orientation = {}));\nvar Legend = /** @class */ (function (_super) {\n __extends(Legend, _super);\n function Legend() {\n var _this = _super.call(this) || this;\n _this.group = new group_1.Group();\n _this.itemSelection = selection_1.Selection.select(_this.group).selectAll();\n _this.oldSize = [0, 0];\n _this.data = [];\n _this.enabled = true;\n _this.orientation = Orientation.Vertical;\n _this.position = 'right';\n _this.padding = 20;\n _this.itemPaddingX = 16;\n _this.itemPaddingY = 8;\n _this.markerPadding = markerLabel_1.MarkerLabel.defaults.padding;\n _this.markerSize = markerLabel_1.MarkerLabel.defaults.markerSize;\n _this.markerStrokeWidth = 1;\n _this.labelColor = markerLabel_1.MarkerLabel.defaults.labelColor;\n _this.labelFontStyle = markerLabel_1.MarkerLabel.defaults.labelFontStyle;\n _this.labelFontWeight = markerLabel_1.MarkerLabel.defaults.labelFontWeight;\n _this.labelFontSize = markerLabel_1.MarkerLabel.defaults.labelFontSize;\n _this.labelFontFamily = markerLabel_1.MarkerLabel.defaults.labelFontFamily;\n _this._size = [0, 0];\n _this.addPropertyListener('data', function (event) {\n var legend = event.source, data = event.value;\n legend.group.visible = legend.enabled && data.length > 0;\n });\n _this.addPropertyListener('enabled', function (event) {\n var legend = event.source, value = event.value;\n legend.group.visible = value && legend.data.length > 0;\n });\n _this.addPropertyListener('position', function (event) {\n var legend = event.source, position = event.value;\n switch (position) {\n case 'right':\n case 'left':\n legend.orientation = Orientation.Vertical;\n break;\n case 'bottom':\n case 'top':\n legend.orientation = Orientation.Horizontal;\n break;\n }\n });\n _this.addEventListener('change', function () { return _this.update(); });\n return _this;\n }\n Object.defineProperty(Legend.prototype, \"size\", {\n get: function () {\n return this._size;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * The method is given the desired size of the legend, which only serves as a hint.\n * The vertically oriented legend will take as much horizontal space as needed, but will\n * respect the height constraints, and the horizontal legend will take as much vertical\n * space as needed in an attempt not to exceed the given width.\n * After the layout is done, the {@link size} will contain the actual size of the legend.\n * If the actual size is not the same as the previous actual size, the legend will fire\n * the 'layoutChange' event to communicate that another layout is needed, and the above\n * process should be repeated.\n * @param width\n * @param height\n */\n Legend.prototype.performLayout = function (width, height) {\n var _this = this;\n var markerType = this.markerType;\n var updateSelection = this.itemSelection.setData(this.data, function (_, datum) {\n var itemMarkerType = markerType || datum.marker.type;\n var itemMarkerName = itemMarkerType ? itemMarkerType.name : 'Square';\n return datum.id + '-' + datum.itemId + '-' + itemMarkerName;\n });\n updateSelection.exit.remove();\n var enterSelection = updateSelection.enter.append(markerLabel_1.MarkerLabel).each(function (node, datum) {\n var Marker = markerType || datum.marker.type || square_1.Square;\n node.marker = new Marker();\n });\n var itemSelection = this.itemSelection = updateSelection.merge(enterSelection);\n var itemCount = itemSelection.size;\n var itemPaddingX = this.itemPaddingX;\n var itemPaddingY = this.itemPaddingY;\n // Update properties that affect the size of the legend items and measure them.\n var bboxes = [];\n itemSelection.each(function (markerLabel, datum) {\n // TODO: measure only when one of these properties or data change (in a separate routine)\n markerLabel.markerSize = _this.markerSize;\n markerLabel.labelFontStyle = _this.labelFontStyle;\n markerLabel.labelFontWeight = _this.labelFontWeight;\n markerLabel.labelFontSize = _this.labelFontSize;\n markerLabel.labelFontFamily = _this.labelFontFamily;\n markerLabel.labelText = datum.label.text;\n markerLabel.padding = _this.markerPadding;\n bboxes.push(markerLabel.computeBBox());\n });\n var itemHeight = bboxes.length && bboxes[0].height;\n var rowCount = 0;\n var columnWidth = 0;\n var paddedItemsWidth = 0;\n var paddedItemsHeight = 0;\n switch (this.orientation) {\n case Orientation.Horizontal:\n if (!(isFinite(width) && width > 0)) {\n return false;\n }\n rowCount = 0;\n var columnCount = 0;\n // Split legend items into columns until the width is suitable.\n do {\n var itemsWidth = 0;\n columnCount = 0;\n columnWidth = 0;\n rowCount++;\n var i = 0;\n while (i < itemCount) {\n var bbox = bboxes[i];\n if (bbox.width > columnWidth) {\n columnWidth = bbox.width;\n }\n i++;\n if (i % rowCount === 0) {\n itemsWidth += columnWidth;\n columnWidth = 0;\n columnCount++;\n }\n }\n if (i % rowCount !== 0) {\n itemsWidth += columnWidth;\n columnCount++;\n }\n paddedItemsWidth = itemsWidth + (columnCount - 1) * itemPaddingX;\n } while (paddedItemsWidth > width && columnCount > 1);\n paddedItemsHeight = itemHeight * rowCount + (rowCount - 1) * itemPaddingY;\n break;\n case Orientation.Vertical:\n if (!(isFinite(height) && height > 0)) {\n return false;\n }\n rowCount = itemCount * 2;\n // Split legend items into columns until the height is suitable.\n do {\n rowCount = (rowCount >> 1) + (rowCount % 2);\n columnWidth = 0;\n var itemsWidth = 0;\n var itemsHeight = 0;\n var columnCount_1 = 0;\n var i = 0;\n while (i < itemCount) {\n var bbox = bboxes[i];\n if (!columnCount_1) {\n itemsHeight += bbox.height;\n }\n if (bbox.width > columnWidth) {\n columnWidth = bbox.width;\n }\n i++;\n if (i % rowCount === 0) {\n itemsWidth += columnWidth;\n columnWidth = 0;\n columnCount_1++;\n }\n }\n if (i % rowCount !== 0) {\n itemsWidth += columnWidth;\n columnCount_1++;\n }\n paddedItemsWidth = itemsWidth + (columnCount_1 - 1) * itemPaddingX;\n paddedItemsHeight = itemsHeight + (rowCount - 1) * itemPaddingY;\n } while (paddedItemsHeight > height && rowCount > 1);\n break;\n }\n // Top-left corner of the first legend item.\n var startX = (width - paddedItemsWidth) / 2;\n var startY = (height - paddedItemsHeight) / 2;\n var x = 0;\n var y = 0;\n columnWidth = 0;\n // Position legend items using the layout computed above.\n itemSelection.each(function (markerLabel, datum, i) {\n // Round off for pixel grid alignment to work properly.\n markerLabel.translationX = Math.floor(startX + x);\n markerLabel.translationY = Math.floor(startY + y);\n var bbox = bboxes[i];\n if (bbox.width > columnWidth) {\n columnWidth = bbox.width;\n }\n if ((i + 1) % rowCount === 0) {\n x += columnWidth + itemPaddingX;\n y = 0;\n columnWidth = 0;\n }\n else {\n y += bbox.height + itemPaddingY;\n }\n });\n // Update legend item properties that don't affect the layout.\n this.update();\n var size = this._size;\n var oldSize = this.oldSize;\n size[0] = paddedItemsWidth;\n size[1] = paddedItemsHeight;\n if (size[0] !== oldSize[0] || size[1] !== oldSize[1]) {\n oldSize[0] = size[0];\n oldSize[1] = size[1];\n }\n };\n Legend.prototype.update = function () {\n var _this = this;\n this.itemSelection.each(function (markerLabel, datum) {\n var marker = datum.marker;\n markerLabel.markerFill = marker.fill;\n markerLabel.markerStroke = marker.stroke;\n markerLabel.markerStrokeWidth = _this.markerStrokeWidth;\n markerLabel.markerFillOpacity = marker.fillOpacity;\n markerLabel.markerStrokeOpacity = marker.strokeOpacity;\n markerLabel.opacity = datum.enabled ? 1 : 0.5;\n markerLabel.labelColor = _this.labelColor;\n });\n };\n Legend.prototype.datumForPoint = function (x, y) {\n var node = this.group.pickNode(x, y);\n if (node && node.parent) {\n return node.parent.datum;\n }\n };\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], Legend.prototype, \"data\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], Legend.prototype, \"enabled\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], Legend.prototype, \"orientation\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], Legend.prototype, \"position\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], Legend.prototype, \"padding\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], Legend.prototype, \"itemPaddingX\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], Legend.prototype, \"itemPaddingY\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], Legend.prototype, \"markerType\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], Legend.prototype, \"markerPadding\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], Legend.prototype, \"markerSize\", void 0);\n __decorate([\n observable_1.reactive(['change'])\n ], Legend.prototype, \"markerStrokeWidth\", void 0);\n __decorate([\n observable_1.reactive(['change'])\n ], Legend.prototype, \"labelColor\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], Legend.prototype, \"labelFontStyle\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], Legend.prototype, \"labelFontWeight\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], Legend.prototype, \"labelFontSize\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], Legend.prototype, \"labelFontFamily\", void 0);\n return Legend;\n}(observable_1.Observable));\nexports.Legend = Legend;\n//# sourceMappingURL=legend.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar group_1 = require(\"../scene/group\");\nvar text_1 = require(\"../scene/shape/text\");\nvar square_1 = require(\"./marker/square\");\nvar MarkerLabel = /** @class */ (function (_super) {\n __extends(MarkerLabel, _super);\n function MarkerLabel() {\n var _this = _super.call(this) || this;\n _this.label = new text_1.Text();\n _this._marker = new square_1.Square();\n _this._markerSize = MarkerLabel.defaults.markerSize;\n _this._padding = MarkerLabel.defaults.padding;\n var label = _this.label;\n label.textBaseline = 'middle';\n label.fontStyle = MarkerLabel.defaults.labelFontStyle;\n label.fontWeight = MarkerLabel.defaults.labelFontWeight;\n label.fontSize = MarkerLabel.defaults.labelFontSize;\n label.fontFamily = MarkerLabel.defaults.labelFontFamily;\n label.fill = MarkerLabel.defaults.labelColor;\n label.y = 2; // for better looking vertical alignment of labels to markers\n _this.append([_this.marker, label]);\n _this.update();\n return _this;\n }\n Object.defineProperty(MarkerLabel.prototype, \"labelText\", {\n get: function () {\n return this.label.text;\n },\n set: function (value) {\n this.label.text = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"labelFontStyle\", {\n get: function () {\n return this.label.fontStyle;\n },\n set: function (value) {\n this.label.fontStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"labelFontWeight\", {\n get: function () {\n return this.label.fontWeight;\n },\n set: function (value) {\n this.label.fontWeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"labelFontSize\", {\n get: function () {\n return this.label.fontSize;\n },\n set: function (value) {\n this.label.fontSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"labelFontFamily\", {\n get: function () {\n return this.label.fontFamily;\n },\n set: function (value) {\n this.label.fontFamily = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"labelColor\", {\n get: function () {\n return this.label.fill;\n },\n set: function (value) {\n this.label.fill = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"marker\", {\n get: function () {\n return this._marker;\n },\n set: function (value) {\n if (this._marker !== value) {\n this.removeChild(this._marker);\n this._marker = value;\n this.appendChild(value);\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerSize\", {\n get: function () {\n return this._markerSize;\n },\n set: function (value) {\n if (this._markerSize !== value) {\n this._markerSize = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerFill\", {\n get: function () {\n return this.marker.fill;\n },\n set: function (value) {\n this.marker.fill = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerStroke\", {\n get: function () {\n return this.marker.stroke;\n },\n set: function (value) {\n this.marker.stroke = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerStrokeWidth\", {\n get: function () {\n return this.marker.strokeWidth;\n },\n set: function (value) {\n this.marker.strokeWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerFillOpacity\", {\n get: function () {\n return this.marker.fillOpacity;\n },\n set: function (value) {\n this.marker.fillOpacity = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerStrokeOpacity\", {\n get: function () {\n return this.marker.strokeOpacity;\n },\n set: function (value) {\n this.marker.strokeOpacity = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"opacity\", {\n get: function () {\n return this.marker.opacity;\n },\n set: function (value) {\n this.marker.opacity = value;\n this.label.opacity = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"padding\", {\n get: function () {\n return this._padding;\n },\n set: function (value) {\n if (this._padding !== value) {\n this._padding = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n MarkerLabel.prototype.update = function () {\n var marker = this.marker;\n var markerSize = this.markerSize;\n marker.size = markerSize;\n this.label.x = markerSize / 2 + this.padding;\n };\n MarkerLabel.className = 'MarkerLabel';\n MarkerLabel.defaults = Object.freeze({\n padding: 8,\n markerSize: 15,\n labelFont: '12px Verdana, sans-serif',\n labelFontStyle: undefined,\n labelFontWeight: undefined,\n labelFontSize: 12,\n labelFontFamily: 'Verdana, sans-serif',\n labelColor: 'black'\n });\n return MarkerLabel;\n}(group_1.Group));\nexports.MarkerLabel = MarkerLabel;\n//# sourceMappingURL=markerLabel.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar array_1 = require(\"../util/array\");\n/**\n * The tree layout is calculated in abstract x/y coordinates, where the root is at (0, 0)\n * and the tree grows downward from the root.\n */\nvar TreeNode = /** @class */ (function () {\n function TreeNode(label, parent, number) {\n if (label === void 0) { label = ''; }\n if (number === void 0) { number = 0; }\n this.x = 0;\n this.y = 0;\n this.subtreeLeft = NaN;\n this.subtreeRight = NaN;\n this.screenX = 0;\n this.screenY = 0;\n this.children = [];\n this.leafCount = 0;\n this.prelim = 0;\n this.mod = 0;\n this.ancestor = this;\n this.change = 0;\n this.shift = 0;\n this.label = label;\n // screenX and screenY are meant to be recomputed from (layout) x and y\n // when the tree is resized (without performing another layout)\n this.parent = parent;\n this.depth = parent ? parent.depth + 1 : 0;\n this.number = number;\n }\n TreeNode.prototype.getLeftSibling = function () {\n return this.number > 0 && this.parent ? this.parent.children[this.number - 1] : undefined;\n };\n TreeNode.prototype.getLeftmostSibling = function () {\n return this.number > 0 && this.parent ? this.parent.children[0] : undefined;\n };\n // traverse the left contour of a subtree, return the successor of v on this contour\n TreeNode.prototype.nextLeft = function () {\n return this.children ? this.children[0] : this.thread;\n };\n // traverse the right contour of a subtree, return the successor of v on this contour\n TreeNode.prototype.nextRight = function () {\n return this.children ? this.children[this.children.length - 1] : this.thread;\n };\n TreeNode.prototype.getSiblings = function () {\n var _this = this;\n return this.parent ? this.parent.children.filter(function (_, i) { return i !== _this.number; }) : [];\n };\n return TreeNode;\n}());\n/**\n * Converts an array of ticks, where each tick has an array of labels, to a label tree.\n * If `pad` is `true`, will ensure that every branch matches the depth of the tree by\n * creating empty labels.\n */\nfunction ticksToTree(ticks, pad) {\n if (pad === void 0) { pad = true; }\n var root = new TreeNode();\n var depth = 0;\n if (pad) {\n ticks.forEach(function (tick) { return depth = Math.max(depth, tick.labels.length); });\n }\n ticks.forEach(function (tick) {\n if (pad) {\n while (tick.labels.length < depth) {\n tick.labels.unshift('');\n }\n }\n insertTick(root, tick);\n });\n return root;\n}\nexports.ticksToTree = ticksToTree;\nfunction insertTick(root, tick) {\n var pathParts = tick.labels.slice().reverse(); // path elements from root to leaf label\n var lastPartIndex = pathParts.length - 1;\n pathParts.forEach(function (pathPart, partIndex) {\n var children = root.children;\n var existingNode = array_1.find(children, function (child) { return child.label === pathPart; });\n var isNotLeaf = partIndex !== lastPartIndex;\n if (existingNode && isNotLeaf) { // the isNotLeaf check is to allow duplicate leafs\n root = existingNode;\n }\n else {\n var node = new TreeNode(pathPart, root);\n node.number = children.length;\n children.push(node);\n if (isNotLeaf) {\n root = node;\n }\n }\n });\n}\n// Shift the subtree.\nfunction moveSubtree(wm, wp, shift) {\n var subtrees = wp.number - wm.number;\n var ratio = shift / subtrees;\n wp.change -= ratio;\n wp.shift += shift;\n wm.change += ratio;\n wp.prelim += shift;\n wp.mod += shift;\n}\nfunction ancestor(vim, v, defaultAncestor) {\n return v.getSiblings().indexOf(vim.ancestor) >= 0 ? vim.ancestor : defaultAncestor;\n}\n// Spaces out the children.\nfunction executeShifts(v) {\n var children = v.children;\n if (children) {\n var shift = 0;\n var change = 0;\n for (var i = children.length - 1; i >= 0; i--) {\n var w = children[i];\n w.prelim += shift;\n w.mod += shift;\n change += w.change;\n shift += w.shift + change;\n }\n }\n}\n// Moves current subtree with v as the root if some nodes are conflicting in space.\nfunction apportion(v, defaultAncestor, distance) {\n var w = v.getLeftSibling();\n if (w) {\n var vop = v;\n var vip = v;\n var vim = w;\n var vom = vip.getLeftmostSibling();\n var sip = vip.mod;\n var sop = vop.mod;\n var sim = vim.mod;\n var som = vom.mod;\n while (vim.nextRight() && vip.nextLeft()) {\n vim = vim.nextRight();\n vip = vip.nextLeft();\n vom = vom.nextLeft();\n vop = vop.nextRight();\n vop.ancestor = v;\n var shift = (vim.prelim + sim) - (vip.prelim + sip) + distance;\n if (shift > 0) {\n moveSubtree(ancestor(vim, v, defaultAncestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.mod;\n sip += vip.mod;\n som += vom.mod;\n sop += vop.mod;\n }\n if (vim.nextRight() && !vop.nextRight()) {\n vop.thread = vim.nextRight();\n vop.mod += sim - sop;\n }\n else {\n if (vip.nextLeft() && !vom.nextLeft()) {\n vom.thread = vip.nextLeft();\n vom.mod += sip - som;\n }\n defaultAncestor = v;\n }\n }\n return defaultAncestor;\n}\n// Compute the preliminary x-coordinate of node and its children (recursively).\nfunction firstWalk(node, distance) {\n var children = node.children;\n if (children.length) {\n var defaultAncestor_1 = children[0];\n children.forEach(function (child) {\n firstWalk(child, distance);\n defaultAncestor_1 = apportion(child, defaultAncestor_1, distance);\n });\n executeShifts(node);\n var midpoint = (children[0].prelim + children[children.length - 1].prelim) / 2;\n var leftSibling = node.getLeftSibling();\n if (leftSibling) {\n node.prelim = leftSibling.prelim + distance;\n node.mod = node.prelim - midpoint;\n }\n else {\n node.prelim = midpoint;\n }\n }\n else {\n var leftSibling = node.getLeftSibling();\n node.prelim = leftSibling ? leftSibling.prelim + distance : 0;\n }\n}\nvar Dimensions = /** @class */ (function () {\n function Dimensions() {\n this.top = Infinity;\n this.right = -Infinity;\n this.bottom = -Infinity;\n this.left = Infinity;\n }\n Dimensions.prototype.update = function (node, xy) {\n var _a = xy(node), x = _a.x, y = _a.y;\n if (x > this.right) {\n this.right = x;\n }\n if (x < this.left) {\n this.left = x;\n }\n if (y > this.bottom) {\n this.bottom = y;\n }\n if (y < this.top) {\n this.top = y;\n }\n };\n return Dimensions;\n}());\nfunction secondWalk(v, m, layout) {\n v.x = v.prelim + m;\n v.y = v.depth;\n layout.update(v);\n v.children.forEach(function (w) { return secondWalk(w, m + v.mod, layout); });\n}\n// After the second walk the parent nodes are positioned at the center of their immediate children.\n// If we want the parent nodes to be positioned at the center of the subtree for which they are roots,\n// we need a third walk to adjust the positions.\nfunction thirdWalk(v) {\n var children = v.children;\n var leafCount = 0;\n children.forEach(function (w) {\n thirdWalk(w);\n if (w.children.length) {\n leafCount += w.leafCount;\n }\n else {\n leafCount++;\n }\n });\n v.leafCount = leafCount;\n if (children.length) {\n v.subtreeLeft = children[0].subtreeLeft;\n v.subtreeRight = children[v.children.length - 1].subtreeRight;\n v.x = (v.subtreeLeft + v.subtreeRight) / 2;\n }\n else {\n v.subtreeLeft = v.x;\n v.subtreeRight = v.x;\n }\n}\nfunction treeLayout(root) {\n var layout = new TreeLayout;\n firstWalk(root, 1);\n secondWalk(root, -root.prelim, layout);\n thirdWalk(root);\n return layout;\n}\nexports.treeLayout = treeLayout;\nvar TreeLayout = /** @class */ (function () {\n function TreeLayout() {\n this.dimensions = new Dimensions;\n this.leafCount = 0;\n this.nodes = [];\n // One might want to process leaf nodes separately from the rest of the tree.\n // For example, position labels corresponding to leafs vertically, rather than horizontally.\n this.leafNodes = [];\n this.nonLeafNodes = [];\n this.depth = 0;\n }\n TreeLayout.prototype.update = function (node) {\n this.dimensions.update(node, function (node) { return ({ x: node.x, y: node.y }); });\n if (!node.children.length) {\n this.leafCount++;\n this.leafNodes.push(node);\n }\n else {\n this.nonLeafNodes.push(node);\n }\n if (node.depth > this.depth) {\n this.depth = node.depth;\n }\n this.nodes.push(node);\n };\n TreeLayout.prototype.resize = function (width, height, shiftX, shiftY, flipX) {\n if (shiftX === void 0) { shiftX = 0; }\n if (shiftY === void 0) { shiftY = 0; }\n if (flipX === void 0) { flipX = false; }\n var xSteps = this.leafCount - 1;\n var ySteps = this.depth;\n var dimensions = this.dimensions;\n var scalingX = 1;\n var scalingY = 1;\n if (width > 0 && xSteps) {\n var existingSpacingX = (dimensions.right - dimensions.left) / xSteps;\n var desiredSpacingX = width / xSteps;\n scalingX = desiredSpacingX / existingSpacingX;\n if (flipX) {\n scalingX = -scalingX;\n }\n }\n if (height > 0 && ySteps) {\n var existingSpacingY = (dimensions.bottom - dimensions.top) / ySteps;\n var desiredSpacingY = height / ySteps;\n scalingY = desiredSpacingY / existingSpacingY;\n }\n var screenDimensions = new Dimensions();\n this.nodes.forEach(function (node) {\n node.screenX = node.x * scalingX;\n node.screenY = node.y * scalingY;\n screenDimensions.update(node, function (node) { return ({ x: node.screenX, y: node.screenY }); });\n });\n // Normalize so that root top and leftmost leaf left start at zero.\n var offsetX = -screenDimensions.left;\n var offsetY = -screenDimensions.top;\n this.nodes.forEach(function (node) {\n node.screenX += offsetX + shiftX;\n node.screenY += offsetY + shiftY;\n });\n };\n return TreeLayout;\n}());\nexports.TreeLayout = TreeLayout;\nfunction logTree(root, formatter) {\n root.children.forEach(function (child) { return logTree(child, formatter); });\n if (formatter) {\n console.log(formatter(root));\n }\n else {\n console.log(root);\n }\n}\n//# sourceMappingURL=tree.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar chart_1 = require(\"./chart\");\nvar polarSeries_1 = require(\"./series/polar/polarSeries\");\nvar PolarChart = /** @class */ (function (_super) {\n __extends(PolarChart, _super);\n function PolarChart(document) {\n if (document === void 0) { document = window.document; }\n var _this = _super.call(this, document) || this;\n _this.scene.root.append(_this.legend.group);\n return _this;\n }\n Object.defineProperty(PolarChart.prototype, \"seriesRoot\", {\n get: function () {\n return this.scene.root;\n },\n enumerable: true,\n configurable: true\n });\n PolarChart.prototype.performLayout = function () {\n var shrinkRect = {\n x: 0,\n y: 0,\n width: this.width,\n height: this.height\n };\n this.positionCaptions();\n this.positionLegend();\n var captionAutoPadding = this.captionAutoPadding;\n shrinkRect.y += captionAutoPadding;\n shrinkRect.height -= captionAutoPadding;\n if (this.legend.enabled && this.legend.data.length) {\n var legendAutoPadding = this.legendAutoPadding;\n shrinkRect.x += legendAutoPadding.left;\n shrinkRect.y += legendAutoPadding.top;\n shrinkRect.width -= legendAutoPadding.left + legendAutoPadding.right;\n shrinkRect.height -= legendAutoPadding.top + legendAutoPadding.bottom;\n var legendPadding = this.legend.padding;\n switch (this.legend.position) {\n case 'right':\n shrinkRect.width -= legendPadding;\n break;\n case 'bottom':\n shrinkRect.height -= legendPadding;\n break;\n case 'left':\n shrinkRect.x += legendPadding;\n shrinkRect.width -= legendPadding;\n break;\n case 'top':\n shrinkRect.y += legendPadding;\n shrinkRect.height -= legendPadding;\n break;\n }\n }\n var padding = this.padding;\n shrinkRect.x += padding.left;\n shrinkRect.y += padding.top;\n shrinkRect.width -= padding.left + padding.right;\n shrinkRect.height -= padding.top + padding.bottom;\n var centerX = shrinkRect.x + shrinkRect.width / 2;\n var centerY = shrinkRect.y + shrinkRect.height / 2;\n var radius = Math.min(shrinkRect.width, shrinkRect.height) / 2;\n this.series.forEach(function (series) {\n if (series instanceof polarSeries_1.PolarSeries) {\n series.centerX = centerX;\n series.centerY = centerY;\n series.radius = radius;\n series.update();\n }\n });\n };\n PolarChart.className = 'PolarChart';\n return PolarChart;\n}(chart_1.Chart));\nexports.PolarChart = PolarChart;\n//# sourceMappingURL=polarChart.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar path_1 = require(\"../../../scene/shape/path\");\nvar continuousScale_1 = require(\"../../../scale/continuousScale\");\nvar selection_1 = require(\"../../../scene/selection\");\nvar group_1 = require(\"../../../scene/group\");\nvar palettes_1 = require(\"../../palettes\");\nvar array_1 = require(\"../../../util/array\");\nvar number_1 = require(\"../../../util/number\");\nvar node_1 = require(\"../../../scene/node\");\nvar marker_1 = require(\"../../marker/marker\");\nvar cartesianSeries_1 = require(\"./cartesianSeries\");\nvar chartAxis_1 = require(\"../../chartAxis\");\nvar LineSeries = /** @class */ (function (_super) {\n __extends(LineSeries, _super);\n function LineSeries() {\n var _this = _super.call(this) || this;\n _this.xDomain = [];\n _this.yDomain = [];\n _this.xData = [];\n _this.yData = [];\n _this.lineNode = new path_1.Path();\n // We use groups for this selection even though each group only contains a marker ATM\n // because in the future we might want to add label support as well.\n _this.groupSelection = selection_1.Selection.select(_this.group).selectAll();\n _this.marker = new cartesianSeries_1.CartesianSeriesMarker();\n _this._xKey = '';\n _this._xName = '';\n _this._yKey = '';\n _this._yName = '';\n _this._fill = palettes_1.default.fills[0];\n _this._stroke = palettes_1.default.strokes[0];\n _this._strokeWidth = 2;\n _this._fillOpacity = 1;\n _this._strokeOpacity = 1;\n _this.highlightStyle = { fill: 'yellow' };\n var lineNode = _this.lineNode;\n lineNode.fill = undefined;\n lineNode.lineJoin = 'round';\n lineNode.pointerEvents = node_1.PointerEvents.None;\n _this.group.append(lineNode);\n var marker = _this.marker;\n marker.addPropertyListener('type', function () { return _this.onMarkerTypeChange(); });\n marker.addPropertyListener('enabled', function (event) {\n if (!event.value) {\n _this.groupSelection = _this.groupSelection.setData([]);\n _this.groupSelection.exit.remove();\n }\n });\n marker.addEventListener('change', function () { return _this.update(); });\n return _this;\n }\n LineSeries.prototype.onMarkerTypeChange = function () {\n this.groupSelection = this.groupSelection.setData([]);\n this.groupSelection.exit.remove();\n this.update();\n this.fireEvent({ type: 'legendChange' });\n };\n Object.defineProperty(LineSeries.prototype, \"title\", {\n get: function () {\n return this._title;\n },\n set: function (value) {\n if (this._title !== value) {\n this._title = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineSeries.prototype, \"xKey\", {\n get: function () {\n return this._xKey;\n },\n set: function (value) {\n if (this._xKey !== value) {\n this._xKey = value;\n this.xData = [];\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineSeries.prototype, \"xName\", {\n get: function () {\n return this._xName;\n },\n set: function (value) {\n if (this._xName !== value) {\n this._xName = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineSeries.prototype, \"yKey\", {\n get: function () {\n return this._yKey;\n },\n set: function (value) {\n if (this._yKey !== value) {\n this._yKey = value;\n this.yData = [];\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineSeries.prototype, \"yName\", {\n get: function () {\n return this._yName;\n },\n set: function (value) {\n if (this._yName !== value) {\n this._yName = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n LineSeries.prototype.processData = function () {\n var _a = this, xAxis = _a.xAxis, xKey = _a.xKey, yKey = _a.yKey, xData = _a.xData, yData = _a.yData;\n var data = xKey && yKey ? this.data : [];\n if (!xAxis) {\n return false;\n }\n var isContinuousX = xAxis.scale instanceof continuousScale_1.default;\n xData.length = 0;\n yData.length = 0;\n for (var i = 0, n = data.length; i < n; i++) {\n var datum = data[i];\n var x = datum[xKey];\n var y = datum[yKey];\n if (x == null || (isContinuousX && isNaN(x)) || y == null || isNaN(y)) {\n continue;\n }\n xData.push(x);\n yData.push(y);\n }\n this.xDomain = isContinuousX ? this.fixNumericExtent(array_1.numericExtent(xData), 'x') : xData;\n this.yDomain = this.fixNumericExtent(array_1.numericExtent(yData), 'y');\n return true;\n };\n LineSeries.prototype.getDomain = function (direction) {\n if (direction === chartAxis_1.ChartAxisDirection.X) {\n return this.xDomain;\n }\n else {\n return this.yDomain;\n }\n };\n Object.defineProperty(LineSeries.prototype, \"fill\", {\n get: function () {\n return this._fill;\n },\n set: function (value) {\n if (this._fill !== value) {\n this._fill = value;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineSeries.prototype, \"stroke\", {\n get: function () {\n return this._stroke;\n },\n set: function (value) {\n if (this._stroke !== value) {\n this._stroke = value;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineSeries.prototype, \"strokeWidth\", {\n get: function () {\n return this._strokeWidth;\n },\n set: function (value) {\n if (this._strokeWidth !== value) {\n this._strokeWidth = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineSeries.prototype, \"fillOpacity\", {\n get: function () {\n return this._fillOpacity;\n },\n set: function (value) {\n if (this._fillOpacity !== value) {\n this._fillOpacity = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineSeries.prototype, \"strokeOpacity\", {\n get: function () {\n return this._strokeOpacity;\n },\n set: function (value) {\n if (this._strokeOpacity !== value) {\n this._strokeOpacity = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n LineSeries.prototype.highlightNode = function (node) {\n if (!(node instanceof marker_1.Marker)) {\n return;\n }\n this.highlightedNode = node;\n this.scheduleLayout();\n };\n LineSeries.prototype.dehighlightNode = function () {\n this.highlightedNode = undefined;\n this.scheduleLayout();\n };\n LineSeries.prototype.update = function () {\n var _a = this, chart = _a.chart, xAxis = _a.xAxis, yAxis = _a.yAxis;\n this.group.visible = this.visible;\n if (!xAxis || !yAxis || !chart || chart.layoutPending || chart.dataPending) {\n return;\n }\n var xScale = xAxis.scale;\n var yScale = yAxis.scale;\n var xOffset = (xScale.bandwidth || 0) / 2;\n var yOffset = (yScale.bandwidth || 0) / 2;\n var _b = this, data = _b.data, xData = _b.xData, yData = _b.yData, marker = _b.marker, lineNode = _b.lineNode;\n var groupSelectionData = [];\n var linePath = lineNode.path;\n linePath.clear();\n xData.forEach(function (xDatum, i) {\n var yDatum = yData[i];\n var x = xScale.convert(xDatum) + xOffset;\n var y = yScale.convert(yDatum) + yOffset;\n if (i > 0) {\n linePath.lineTo(x, y);\n }\n else {\n linePath.moveTo(x, y);\n }\n if (marker) {\n groupSelectionData.push({\n seriesDatum: data[i],\n x: x,\n y: y\n });\n }\n });\n lineNode.stroke = this.stroke;\n lineNode.strokeWidth = this.strokeWidth;\n this.updateGroupSelection(groupSelectionData);\n };\n LineSeries.prototype.updateGroupSelection = function (groupSelectionData) {\n var _a = this, marker = _a.marker, xKey = _a.xKey, yKey = _a.yKey, highlightedNode = _a.highlightedNode, fill = _a.fill, stroke = _a.stroke, strokeWidth = _a.strokeWidth;\n var groupSelection = this.groupSelection;\n var Marker = marker.type;\n var updateGroups = groupSelection.setData(groupSelectionData);\n updateGroups.exit.remove();\n var enterGroups = updateGroups.enter.append(group_1.Group);\n enterGroups.append(Marker);\n var _b = this.highlightStyle, highlightFill = _b.fill, highlightStroke = _b.stroke;\n var markerFormatter = marker.formatter;\n var markerSize = marker.size;\n var markerStrokeWidth = marker.strokeWidth !== undefined ? marker.strokeWidth : strokeWidth;\n groupSelection = updateGroups.merge(enterGroups);\n groupSelection.selectByClass(Marker)\n .each(function (node, datum) {\n var isHighlightedNode = node === highlightedNode;\n var markerFill = isHighlightedNode && highlightFill !== undefined ? highlightFill : marker.fill || fill;\n var markerStroke = isHighlightedNode && highlightStroke !== undefined ? highlightStroke : marker.stroke || stroke;\n var markerFormat = undefined;\n if (markerFormatter) {\n markerFormat = markerFormatter({\n datum: datum.seriesDatum,\n xKey: xKey,\n yKey: yKey,\n fill: markerFill,\n stroke: markerStroke,\n strokeWidth: markerStrokeWidth,\n size: markerSize,\n highlighted: isHighlightedNode\n });\n }\n node.fill = markerFormat && markerFormat.fill || markerFill;\n node.stroke = markerFormat && markerFormat.stroke || markerStroke;\n node.strokeWidth = markerFormat && markerFormat.strokeWidth !== undefined\n ? markerFormat.strokeWidth\n : markerStrokeWidth;\n node.size = markerFormat && markerFormat.size !== undefined\n ? markerFormat.size\n : markerSize;\n node.translationX = datum.x;\n node.translationY = datum.y;\n node.visible = marker.enabled && node.size > 0;\n });\n this.groupSelection = groupSelection;\n };\n LineSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a = this, xKey = _a.xKey, yKey = _a.yKey;\n if (!xKey || !yKey) {\n return '';\n }\n var _b = this, xName = _b.xName, yName = _b.yName, color = _b.fill, title = _b.title, tooltipRenderer = _b.tooltipRenderer;\n if (tooltipRenderer) {\n return tooltipRenderer({\n datum: nodeDatum.seriesDatum,\n xKey: xKey,\n xName: xName,\n yKey: yKey,\n yName: yName,\n title: title,\n color: color,\n });\n }\n else {\n var titleStyle = \"style=\\\"color: white; background-color: \" + color + \"\\\"\";\n var titleString = title ? \"
\" + title + \"
\" : '';\n var seriesDatum = nodeDatum.seriesDatum;\n var xValue = seriesDatum[xKey];\n var yValue = seriesDatum[yKey];\n var xString = typeof xValue === 'number' ? number_1.toFixed(xValue) : String(xValue);\n var yString = typeof yValue === 'number' ? number_1.toFixed(yValue) : String(yValue);\n return titleString + \"
\" + xString + \": \" + yString + \"
\";\n }\n };\n LineSeries.prototype.listSeriesItems = function (data) {\n var _a = this, id = _a.id, xKey = _a.xKey, yKey = _a.yKey, yName = _a.yName, title = _a.title, visible = _a.visible, marker = _a.marker, fill = _a.fill, stroke = _a.stroke, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity;\n if (this.data.length && xKey && yKey) {\n data.push({\n id: id,\n itemId: undefined,\n enabled: visible,\n label: {\n text: title || yName || yKey\n },\n marker: {\n type: marker.type,\n fill: marker.fill || fill,\n stroke: marker.stroke || stroke,\n fillOpacity: fillOpacity,\n strokeOpacity: strokeOpacity\n }\n });\n }\n };\n LineSeries.className = 'LineSeries';\n return LineSeries;\n}(cartesianSeries_1.CartesianSeries));\nexports.LineSeries = LineSeries;\n//# sourceMappingURL=lineSeries.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = (function (x) { return function () { return x; }; });\n//# sourceMappingURL=constant.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction default_1(a, b) {\n var date = new Date;\n var msA = +a;\n var msB = +b - msA;\n return function (t) {\n date.setTime(msA + msB * t);\n return date;\n };\n}\nexports.default = default_1;\n//# sourceMappingURL=date.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar value_1 = require(\"./value\");\nfunction default_1(a, b) {\n var nb = b ? b.length : 0;\n var na = a ? Math.min(nb, a.length) : 0;\n var x = new Array(na);\n var c = new Array(nb);\n var i;\n for (i = 0; i < na; ++i) {\n x[i] = value_1.default(a[i], b[i]);\n }\n for (; i < nb; ++i) {\n c[i] = b[i];\n }\n return function (t) {\n for (i = 0; i < na; ++i) {\n c[i] = x[i](t);\n }\n return c;\n };\n}\nexports.default = default_1;\n//# sourceMappingURL=array.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar value_1 = require(\"./value\");\nfunction default_1(a, b) {\n var i = {};\n var c = {};\n var k;\n if (a === null || typeof a !== 'object') {\n a = {};\n }\n if (b === null || typeof b !== 'object') {\n b = {};\n }\n for (k in b) {\n if (k in a) {\n i[k] = value_1.default(a[k], b[k]);\n }\n else {\n c[k] = b[k];\n }\n }\n return function (t) {\n for (k in i) {\n c[k] = i[k](t);\n }\n return c;\n };\n}\nexports.default = default_1;\n//# sourceMappingURL=object.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar selection_1 = require(\"../../../scene/selection\");\nvar group_1 = require(\"../../../scene/group\");\nvar array_1 = require(\"../../../util/array\");\nvar number_1 = require(\"../../../util/number\");\nvar linearScale_1 = require(\"../../../scale/linearScale\");\nvar marker_1 = require(\"../../marker/marker\");\nvar observable_1 = require(\"../../../util/observable\");\nvar cartesianSeries_1 = require(\"./cartesianSeries\");\nvar chartAxis_1 = require(\"../../chartAxis\");\nvar palettes_1 = require(\"../../palettes\");\nvar ScatterSeries = /** @class */ (function (_super) {\n __extends(ScatterSeries, _super);\n function ScatterSeries() {\n var _this = _super.call(this) || this;\n _this.xDomain = [];\n _this.yDomain = [];\n _this.xData = [];\n _this.yData = [];\n _this.sizeData = [];\n _this.sizeScale = linearScale_1.default();\n _this.groupSelection = selection_1.Selection.select(_this.group).selectAll();\n _this.marker = new cartesianSeries_1.CartesianSeriesMarker();\n _this._fill = palettes_1.default.fills[0];\n _this._stroke = palettes_1.default.strokes[0];\n _this._strokeWidth = 2;\n _this._fillOpacity = 1;\n _this._strokeOpacity = 1;\n _this.highlightStyle = {\n fill: 'yellow'\n };\n _this.xKey = '';\n _this.yKey = '';\n _this.xName = 'X';\n _this.yName = 'Y';\n _this.sizeName = 'Size';\n _this.labelName = 'Label';\n var marker = _this.marker;\n marker.addPropertyListener('type', function () { return _this.onMarkerTypeChange(); });\n marker.addEventListener('change', function () { return _this.update(); });\n _this.addPropertyListener('xKey', function () { return _this.xData = []; });\n _this.addPropertyListener('yKey', function () { return _this.yData = []; });\n _this.addPropertyListener('sizeKey', function () { return _this.sizeData = []; });\n return _this;\n }\n Object.defineProperty(ScatterSeries.prototype, \"fill\", {\n get: function () {\n return this._fill;\n },\n set: function (value) {\n if (this._fill !== value) {\n this._fill = value;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScatterSeries.prototype, \"stroke\", {\n get: function () {\n return this._stroke;\n },\n set: function (value) {\n if (this._stroke !== value) {\n this._stroke = value;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScatterSeries.prototype, \"strokeWidth\", {\n get: function () {\n return this._strokeWidth;\n },\n set: function (value) {\n if (this._strokeWidth !== value) {\n this._strokeWidth = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScatterSeries.prototype, \"fillOpacity\", {\n get: function () {\n return this._fillOpacity;\n },\n set: function (value) {\n if (this._fillOpacity !== value) {\n this._fillOpacity = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScatterSeries.prototype, \"strokeOpacity\", {\n get: function () {\n return this._strokeOpacity;\n },\n set: function (value) {\n if (this._strokeOpacity !== value) {\n this._strokeOpacity = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n ScatterSeries.prototype.onMarkerTypeChange = function () {\n this.groupSelection = this.groupSelection.setData([]);\n this.groupSelection.exit.remove();\n this.update();\n this.fireEvent({ type: 'legendChange' });\n };\n ScatterSeries.prototype.processData = function () {\n var _a = this, xKey = _a.xKey, yKey = _a.yKey, sizeKey = _a.sizeKey;\n var data = xKey && yKey ? this.data : [];\n this.xData = data.map(function (d) { return d[xKey]; });\n this.yData = data.map(function (d) { return d[yKey]; });\n if (sizeKey) {\n this.sizeData = data.map(function (d) { return d[sizeKey]; });\n }\n else {\n this.sizeData = [];\n }\n this.sizeScale.domain = array_1.numericExtent(this.sizeData) || [1, 1];\n this.xDomain = this.fixNumericExtent(array_1.numericExtent(this.xData), 'x');\n this.yDomain = this.fixNumericExtent(array_1.numericExtent(this.yData), 'y');\n return true;\n };\n ScatterSeries.prototype.getDomain = function (direction) {\n if (direction === chartAxis_1.ChartAxisDirection.X) {\n return this.xDomain;\n }\n else {\n return this.yDomain;\n }\n };\n ScatterSeries.prototype.highlightNode = function (node) {\n if (!(node instanceof marker_1.Marker)) {\n return;\n }\n this.highlightedNode = node;\n this.scheduleLayout();\n };\n ScatterSeries.prototype.dehighlightNode = function () {\n this.highlightedNode = undefined;\n this.scheduleLayout();\n };\n ScatterSeries.prototype.update = function () {\n var _a = this, visible = _a.visible, chart = _a.chart, xAxis = _a.xAxis, yAxis = _a.yAxis;\n this.group.visible = visible;\n if (!xAxis || !yAxis || !visible || !chart || chart.layoutPending || chart.dataPending) {\n return;\n }\n var xScale = xAxis.scale;\n var yScale = yAxis.scale;\n var xOffset = (xScale.bandwidth || 0) / 2;\n var yOffset = (yScale.bandwidth || 0) / 2;\n var _b = this, data = _b.data, xData = _b.xData, yData = _b.yData, sizeData = _b.sizeData, xKey = _b.xKey, yKey = _b.yKey, sizeScale = _b.sizeScale, marker = _b.marker, fill = _b.fill, stroke = _b.stroke, strokeWidth = _b.strokeWidth, fillOpacity = _b.fillOpacity, strokeOpacity = _b.strokeOpacity, highlightedNode = _b.highlightedNode;\n var Marker = marker.type;\n var markerFormatter = marker.formatter;\n this.sizeScale.range = [marker.minSize, marker.size];\n var groupSelectionData = xData.map(function (xDatum, i) { return ({\n seriesDatum: data[i],\n x: xScale.convert(xDatum) + xOffset,\n y: yScale.convert(yData[i]) + yOffset,\n size: sizeData.length ? sizeScale.convert(sizeData[i]) : marker.size\n }); });\n var updateGroups = this.groupSelection.setData(groupSelectionData);\n updateGroups.exit.remove();\n var enterGroups = updateGroups.enter.append(group_1.Group);\n enterGroups.append(Marker);\n var groupSelection = updateGroups.merge(enterGroups);\n var _c = this.highlightStyle, highlightFill = _c.fill, highlightStroke = _c.stroke;\n var markerStrokeWidth = marker.strokeWidth !== undefined ? marker.strokeWidth : strokeWidth;\n groupSelection.selectByClass(Marker)\n .each(function (node, datum) {\n var isHighlightedNode = node === highlightedNode;\n var markerFill = isHighlightedNode && highlightFill !== undefined ? highlightFill : marker.fill || fill;\n var markerStroke = isHighlightedNode && highlightStroke !== undefined ? highlightStroke : marker.stroke || stroke;\n var markerFormat = undefined;\n if (markerFormatter) {\n markerFormat = markerFormatter({\n datum: datum.seriesDatum,\n xKey: xKey,\n yKey: yKey,\n fill: markerFill,\n stroke: markerStroke,\n strokeWidth: markerStrokeWidth,\n size: datum.size,\n highlighted: isHighlightedNode\n });\n }\n node.fill = markerFormat && markerFormat.fill || markerFill;\n node.stroke = markerFormat && markerFormat.stroke || markerStroke;\n node.strokeWidth = markerFormat && markerFormat.strokeWidth !== undefined\n ? markerFormat.strokeWidth\n : markerStrokeWidth;\n node.size = markerFormat && markerFormat.size !== undefined\n ? markerFormat.size\n : datum.size;\n node.fillOpacity = fillOpacity;\n node.strokeOpacity = strokeOpacity;\n node.translationX = datum.x;\n node.translationY = datum.y;\n node.visible = marker.enabled && node.size > 0;\n });\n this.groupSelection = groupSelection;\n };\n ScatterSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a = this, xKey = _a.xKey, yKey = _a.yKey;\n if (!xKey || !yKey) {\n return '';\n }\n var _b = this, title = _b.title, tooltipRenderer = _b.tooltipRenderer, xName = _b.xName, yName = _b.yName, sizeKey = _b.sizeKey, sizeName = _b.sizeName, labelKey = _b.labelKey, labelName = _b.labelName, fill = _b.fill;\n var color = fill || 'gray';\n if (tooltipRenderer) {\n return tooltipRenderer({\n datum: nodeDatum.seriesDatum,\n xKey: xKey,\n yKey: yKey,\n sizeKey: sizeKey,\n labelKey: labelKey,\n xName: xName,\n yName: yName,\n sizeName: sizeName,\n labelName: labelName,\n title: title,\n color: color\n });\n }\n else {\n var titleStyle = \"style=\\\"color: white; background-color: \" + color + \"\\\"\";\n var titleHtml = title ? \"
\" + title + \"
\" : '';\n var seriesDatum = nodeDatum.seriesDatum;\n var xValue = seriesDatum[xKey];\n var yValue = seriesDatum[yKey];\n var contentHtml = \"\" + xName + \": \" + number_1.toFixed(xValue) + \"
\" + yName + \": \" + number_1.toFixed(yValue);\n if (sizeKey) {\n contentHtml += \"
\" + sizeName + \": \" + seriesDatum[sizeKey];\n }\n if (labelKey) {\n contentHtml = \"\" + labelName + \": \" + seriesDatum[labelKey] + \"
\" + contentHtml;\n }\n return titleHtml + \"
\" + contentHtml + \"
\";\n }\n };\n ScatterSeries.prototype.listSeriesItems = function (data) {\n var _a = this, id = _a.id, title = _a.title, visible = _a.visible, xKey = _a.xKey, yKey = _a.yKey, yName = _a.yName, marker = _a.marker, fill = _a.fill, stroke = _a.stroke, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity;\n if (this.data.length && xKey && yKey) {\n data.push({\n id: id,\n itemId: undefined,\n enabled: visible,\n label: {\n text: title || yName || yKey\n },\n marker: {\n type: marker.type,\n fill: marker.fill || fill,\n stroke: marker.stroke || stroke,\n fillOpacity: fillOpacity,\n strokeOpacity: strokeOpacity\n }\n });\n }\n };\n ScatterSeries.className = 'ScatterSeries';\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], ScatterSeries.prototype, \"title\", void 0);\n __decorate([\n observable_1.reactive(['dataChange'])\n ], ScatterSeries.prototype, \"xKey\", void 0);\n __decorate([\n observable_1.reactive(['dataChange'])\n ], ScatterSeries.prototype, \"yKey\", void 0);\n __decorate([\n observable_1.reactive(['dataChange'])\n ], ScatterSeries.prototype, \"sizeKey\", void 0);\n __decorate([\n observable_1.reactive(['dataChange'])\n ], ScatterSeries.prototype, \"labelKey\", void 0);\n return ScatterSeries;\n}(cartesianSeries_1.CartesianSeries));\nexports.ScatterSeries = ScatterSeries;\n//# sourceMappingURL=scatterSeries.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar group_1 = require(\"../../../scene/group\");\nvar selection_1 = require(\"../../../scene/selection\");\nvar rect_1 = require(\"../../../scene/shape/rect\");\nvar text_1 = require(\"../../../scene/shape/text\");\nvar bandScale_1 = require(\"../../../scale/bandScale\");\nvar palettes_1 = require(\"../../palettes\");\nvar label_1 = require(\"../../label\");\nvar node_1 = require(\"../../../scene/node\");\nvar array_1 = require(\"../../../util/array\");\nvar number_1 = require(\"../../../util/number\");\nvar observable_1 = require(\"../../../util/observable\");\nvar cartesianSeries_1 = require(\"./cartesianSeries\");\nvar chartAxis_1 = require(\"../../chartAxis\");\nvar ColumnSeriesNodeTag;\n(function (ColumnSeriesNodeTag) {\n ColumnSeriesNodeTag[ColumnSeriesNodeTag[\"Column\"] = 0] = \"Column\";\n ColumnSeriesNodeTag[ColumnSeriesNodeTag[\"Label\"] = 1] = \"Label\";\n})(ColumnSeriesNodeTag || (ColumnSeriesNodeTag = {}));\nvar ColumnSeriesLabel = /** @class */ (function (_super) {\n __extends(ColumnSeriesLabel, _super);\n function ColumnSeriesLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n observable_1.reactive(['change'])\n ], ColumnSeriesLabel.prototype, \"formatter\", void 0);\n return ColumnSeriesLabel;\n}(label_1.Label));\nvar ColumnSeries = /** @class */ (function (_super) {\n __extends(ColumnSeries, _super);\n function ColumnSeries() {\n var _a;\n var _this = _super.call(this) || this;\n // Need to put column and label nodes into separate groups, because even though label nodes are\n // created after the column nodes, this only guarantees that labels will always be on top of columns\n // on the first run. If on the next run more columns are added, they might clip the labels\n // rendered during the previous run.\n _this.rectGroup = _this.group.appendChild(new group_1.Group);\n _this.textGroup = _this.group.appendChild(new group_1.Group);\n _this.rectSelection = selection_1.Selection.select(_this.rectGroup).selectAll();\n _this.textSelection = selection_1.Selection.select(_this.textGroup).selectAll();\n _this.xData = [];\n _this.yData = [];\n _this.yDomain = [];\n _this.label = new ColumnSeriesLabel();\n /**\n * The assumption is that the values will be reset (to `true`)\n * in the {@link yKeys} setter.\n */\n _this.yKeyEnabled = new Map();\n _this.fills = palettes_1.default.fills;\n _this.strokes = palettes_1.default.strokes;\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n /**\n * Used to get the position of columns within each group.\n */\n _this.groupScale = new bandScale_1.BandScale();\n _this.directionKeys = (_a = {},\n _a[chartAxis_1.ChartAxisDirection.X] = ['xKey'],\n _a[chartAxis_1.ChartAxisDirection.Y] = ['yKeys'],\n _a);\n _this.flipXY = false;\n _this._xKey = '';\n _this._xName = '';\n /**\n * With a single value in the `yKeys` array we get the regular column series.\n * With multiple values, we get the stacked column series.\n * If the {@link grouped} set to `true`, we get the grouped column series.\n * @param values\n */\n _this._yKeys = [];\n _this._yNames = [];\n _this._grouped = false;\n _this._strokeWidth = 1;\n _this.highlightStyle = {\n fill: 'yellow'\n };\n _this.label.enabled = false;\n _this.label.addEventListener('change', function () { return _this.update(); });\n return _this;\n }\n ColumnSeries.prototype.getKeys = function (direction) {\n var _this = this;\n var directionKeys = this.directionKeys;\n var keys = directionKeys && directionKeys[this.flipXY ? chartAxis_1.flipChartAxisDirection(direction) : direction];\n var values = [];\n if (keys) {\n keys.forEach(function (key) {\n var value = _this[key];\n if (value) {\n if (Array.isArray(value)) {\n values.push.apply(values, value);\n }\n else {\n values.push(value);\n }\n }\n });\n }\n return values;\n };\n Object.defineProperty(ColumnSeries.prototype, \"xKey\", {\n get: function () {\n return this._xKey;\n },\n set: function (value) {\n if (this._xKey !== value) {\n this._xKey = value;\n this.xData = [];\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColumnSeries.prototype, \"xName\", {\n get: function () {\n return this._xName;\n },\n set: function (value) {\n if (this._xName !== value) {\n this._xName = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColumnSeries.prototype, \"yKeys\", {\n get: function () {\n return this._yKeys;\n },\n set: function (values) {\n this._yKeys = values;\n this.yData = [];\n var yKeyEnabled = this.yKeyEnabled;\n yKeyEnabled.clear();\n values.forEach(function (key) { return yKeyEnabled.set(key, true); });\n var groupScale = this.groupScale;\n groupScale.domain = values;\n groupScale.padding = 0.1;\n groupScale.round = true;\n this.scheduleData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColumnSeries.prototype, \"yNames\", {\n get: function () {\n return this._yNames;\n },\n set: function (values) {\n this._yNames = values;\n this.update();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColumnSeries.prototype, \"grouped\", {\n get: function () {\n return this._grouped;\n },\n set: function (value) {\n if (this._grouped !== value) {\n this._grouped = value;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColumnSeries.prototype, \"normalizedTo\", {\n get: function () {\n return this._normalizedTo;\n },\n set: function (value) {\n var absValue = value ? Math.abs(value) : undefined;\n if (this._normalizedTo !== absValue) {\n this._normalizedTo = absValue;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColumnSeries.prototype, \"strokeWidth\", {\n get: function () {\n return this._strokeWidth;\n },\n set: function (value) {\n if (this._strokeWidth !== value) {\n this._strokeWidth = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColumnSeries.prototype, \"shadow\", {\n get: function () {\n return this._shadow;\n },\n set: function (value) {\n if (this._shadow !== value) {\n this._shadow = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n ColumnSeries.prototype.highlightNode = function (node) {\n if (!(node instanceof rect_1.Rect)) {\n return;\n }\n this.highlightedNode = node;\n this.scheduleLayout();\n };\n ColumnSeries.prototype.dehighlightNode = function () {\n this.highlightedNode = undefined;\n this.scheduleLayout();\n };\n ColumnSeries.prototype.processData = function () {\n var _a = this, xKey = _a.xKey, yKeys = _a.yKeys, yKeyEnabled = _a.yKeyEnabled;\n var data = xKey && yKeys.length ? this.data : [];\n // If the data is an array of rows like so:\n //\n // [{\n // xKey: 'Jan',\n // yKey1: 5,\n // yKey2: 7,\n // yKey3: -9,\n // }, {\n // xKey: 'Feb',\n // yKey1: 10,\n // yKey2: -15,\n // yKey3: 20\n // }]\n //\n var keysFound = true; // only warn once\n this.xData = data.map(function (datum) {\n if (keysFound && !(xKey in datum)) {\n keysFound = false;\n console.warn(\"The key '\" + xKey + \"' was not found in the data: \", datum);\n }\n return datum[xKey];\n });\n this.yData = data.map(function (datum) { return yKeys.map(function (yKey) {\n if (keysFound && !(yKey in datum)) {\n keysFound = false;\n console.warn(\"The key '\" + yKey + \"' was not found in the data: \", datum);\n }\n var value = datum[yKey];\n return isFinite(value) && yKeyEnabled.get(yKey) ? value : 0;\n }); });\n // xData: ['Jan', 'Feb']\n //\n // yData: [\n // [5, 7, -9],\n // [10, -15, 20]\n // ]\n var ySums = this.yData.map(function (values) { return array_1.sumPositiveValues(values); }); // used for normalization of stacked columns\n var _b = this, yData = _b.yData, normalizedTo = _b.normalizedTo;\n var yMin = Infinity;\n var yMax = -Infinity;\n if (this.grouped) {\n // Find the tallest positive/negative column in each group,\n // then find the tallest positive/negative column overall.\n // The `yMin` should always be <= 0,\n // otherwise with the `yData` like [300, 200, 100] the last column\n // will have zero height, because the y-axis range is [100, 300].\n yMin = Math.min.apply(Math, __spreadArrays([0], yData.map(function (values) { return Math.min.apply(Math, values); })));\n yMax = Math.max.apply(Math, yData.map(function (values) { return Math.max.apply(Math, values); }));\n }\n else { // stacked or regular\n if (normalizedTo && isFinite(normalizedTo)) {\n yMin = 0;\n yMax = normalizedTo;\n yData.forEach(function (stackValues, i) { return stackValues.forEach(function (y, j) { return stackValues[j] = y / ySums[i] * normalizedTo; }); });\n }\n else {\n // Find the height of each stack in the positive and negative directions,\n // then find the tallest stacks in both directions.\n yMin = Math.min.apply(Math, __spreadArrays([0], yData.map(function (values) { return values.reduce(function (min, value) { return value < 0 ? min - value : min; }, 0); })));\n yMax = Math.max.apply(Math, yData.map(function (values) { return values.reduce(function (max, value) { return value > 0 ? max + value : max; }, 0); }));\n }\n }\n this.yDomain = this.fixNumericExtent([yMin, yMax], 'y');\n this.fireEvent({ type: 'dataProcessed' });\n return true;\n };\n ColumnSeries.prototype.getDomain = function (direction) {\n if (this.flipXY) {\n direction = chartAxis_1.flipChartAxisDirection(direction);\n }\n if (direction === chartAxis_1.ChartAxisDirection.X) {\n return this.xData;\n }\n else {\n return this.yDomain;\n }\n };\n ColumnSeries.prototype.update = function () {\n var _a = this, visible = _a.visible, chart = _a.chart, xAxis = _a.xAxis, yAxis = _a.yAxis, xData = _a.xData, yData = _a.yData;\n this.group.visible = visible;\n if (!xAxis || !yAxis || !visible || !chart || chart.layoutPending || chart.dataPending || !xData.length || !yData.length) {\n return;\n }\n var selectionData = this.generateSelectionData();\n this.updateRectSelection(selectionData);\n this.updateTextSelection(selectionData);\n };\n ColumnSeries.prototype.generateSelectionData = function () {\n var _a = this, xAxis = _a.xAxis, yAxis = _a.yAxis, flipXY = _a.flipXY;\n var xScale = (flipXY ? yAxis : xAxis).scale;\n var yScale = (flipXY ? xAxis : yAxis).scale;\n var _b = this, groupScale = _b.groupScale, yKeys = _b.yKeys, fills = _b.fills, strokes = _b.strokes, grouped = _b.grouped, strokeWidth = _b.strokeWidth, yKeyEnabled = _b.yKeyEnabled, data = _b.data, xData = _b.xData, yData = _b.yData;\n var label = this.label;\n var labelFontStyle = label.fontStyle;\n var labelFontWeight = label.fontWeight;\n var labelFontSize = label.fontSize;\n var labelFontFamily = label.fontFamily;\n var labelColor = label.color;\n var labelFormatter = label.formatter;\n groupScale.range = [0, xScale.bandwidth];\n var columnWidth = grouped ? groupScale.bandwidth : xScale.bandwidth;\n var selectionData = [];\n xData.forEach(function (category, i) {\n var values = yData[i];\n var seriesDatum = data[i];\n var x = xScale.convert(category);\n var prev = 0;\n values.forEach(function (curr, j) {\n var yKey = yKeys[j];\n var columnX = grouped ? x + groupScale.convert(yKey) : x;\n var y = yScale.convert(grouped ? curr : prev + curr);\n var bottomY = yScale.convert(grouped ? 0 : prev);\n var yValue = seriesDatum[yKey]; // unprocessed y-value\n var yValueIsNumber = typeof yValue === 'number';\n var labelText;\n if (labelFormatter) {\n labelText = labelFormatter({ value: yValueIsNumber ? yValue : undefined });\n }\n else {\n labelText = yValueIsNumber && isFinite(yValue) ? yValue.toFixed(2) : '';\n }\n selectionData.push({\n seriesDatum: seriesDatum,\n yValue: yValue,\n yKey: yKey,\n x: flipXY ? Math.min(y, bottomY) : columnX,\n y: flipXY ? columnX : Math.min(y, bottomY),\n width: flipXY ? Math.abs(bottomY - y) : columnWidth,\n height: flipXY ? columnWidth : Math.abs(bottomY - y),\n fill: fills[j % fills.length],\n stroke: strokes[j % strokes.length],\n strokeWidth: strokeWidth,\n label: yKeyEnabled.get(yKey) && labelText ? {\n text: labelText,\n fontStyle: labelFontStyle,\n fontWeight: labelFontWeight,\n fontSize: labelFontSize,\n fontFamily: labelFontFamily,\n fill: labelColor,\n x: flipXY ? y + (yValue >= 0 ? -1 : 1) * Math.abs(bottomY - y) / 2 : columnX + columnWidth / 2,\n y: flipXY ? columnX + columnWidth / 2 : y + (yValue >= 0 ? 1 : -1) * Math.abs(bottomY - y) / 2\n } : undefined\n });\n if (grouped) {\n prev = curr;\n }\n else {\n prev += curr;\n }\n });\n });\n return selectionData;\n };\n ColumnSeries.prototype.updateRectSelection = function (selectionData) {\n var _a = this, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity, shadow = _a.shadow, highlightedNode = _a.highlightedNode, _b = _a.highlightStyle, fill = _b.fill, stroke = _b.stroke;\n var updateRects = this.rectSelection.setData(selectionData);\n updateRects.exit.remove();\n var enterRects = updateRects.enter.append(rect_1.Rect).each(function (rect) {\n rect.tag = ColumnSeriesNodeTag.Column;\n rect.crisp = true;\n });\n var rectSelection = updateRects.merge(enterRects);\n rectSelection.each(function (rect, datum) {\n rect.x = datum.x;\n rect.y = datum.y;\n rect.width = datum.width;\n rect.height = datum.height;\n rect.fill = rect === highlightedNode && fill !== undefined ? fill : datum.fill;\n rect.stroke = rect === highlightedNode && stroke !== undefined ? stroke : datum.stroke;\n rect.fillOpacity = fillOpacity;\n rect.strokeOpacity = strokeOpacity;\n rect.strokeWidth = datum.strokeWidth;\n rect.fillShadow = shadow;\n rect.visible = datum.height > 0; // prevent stroke from rendering for zero height columns\n });\n this.rectSelection = rectSelection;\n };\n ColumnSeries.prototype.updateTextSelection = function (selectionData) {\n var labelEnabled = this.label.enabled;\n var updateTexts = this.textSelection.setData(selectionData);\n updateTexts.exit.remove();\n var enterTexts = updateTexts.enter.append(text_1.Text).each(function (text) {\n text.tag = ColumnSeriesNodeTag.Label;\n text.pointerEvents = node_1.PointerEvents.None;\n text.textAlign = 'center';\n text.textBaseline = 'middle';\n });\n var textSelection = updateTexts.merge(enterTexts);\n textSelection.each(function (text, datum) {\n var label = datum.label;\n if (label && labelEnabled) {\n text.fontStyle = label.fontStyle;\n text.fontWeight = label.fontWeight;\n text.fontSize = label.fontSize;\n text.fontFamily = label.fontFamily;\n text.text = label.text;\n text.x = label.x;\n text.y = label.y;\n text.fill = label.fill;\n text.visible = true;\n }\n else {\n text.visible = false;\n }\n });\n this.textSelection = textSelection;\n };\n ColumnSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var xKey = this.xKey;\n var yKey = nodeDatum.yKey;\n if (!xKey || !yKey) {\n return '';\n }\n var _a = this, xName = _a.xName, yKeys = _a.yKeys, yNames = _a.yNames, fills = _a.fills, tooltipRenderer = _a.tooltipRenderer;\n var datum = nodeDatum.seriesDatum;\n var yKeyIndex = yKeys.indexOf(yKey);\n var yName = yNames[yKeyIndex];\n var color = fills[yKeyIndex % fills.length];\n var title = yName;\n if (tooltipRenderer) {\n return tooltipRenderer({\n datum: datum,\n xKey: xKey,\n xName: xName,\n yKey: yKey,\n yName: yName,\n title: title,\n color: color,\n });\n }\n else {\n var titleStyle = \"style=\\\"color: white; background-color: \" + color + \"\\\"\";\n var titleString = title ? \"
\" + title + \"
\" : '';\n var xValue = datum[xKey];\n var yValue = datum[yKey];\n var xString = typeof xValue === 'number' ? number_1.toFixed(xValue) : String(xValue);\n var yString = typeof yValue === 'number' ? number_1.toFixed(yValue) : String(yValue);\n return titleString + \"
\" + xString + \": \" + yString + \"
\";\n }\n };\n ColumnSeries.prototype.listSeriesItems = function (data) {\n var _this = this;\n if (this.data.length && this.xKey && this.yKeys.length) {\n var _a = this, fills_1 = _a.fills, strokes_1 = _a.strokes, id_1 = _a.id;\n this.yKeys.forEach(function (yKey, index) {\n data.push({\n id: id_1,\n itemId: yKey,\n enabled: _this.yKeyEnabled.get(yKey) || false,\n label: {\n text: _this.yNames[index] || _this.yKeys[index]\n },\n marker: {\n fill: fills_1[index % fills_1.length],\n stroke: strokes_1[index % strokes_1.length],\n fillOpacity: _this.fillOpacity,\n strokeOpacity: _this.strokeOpacity\n }\n });\n });\n }\n };\n ColumnSeries.prototype.toggleSeriesItem = function (itemId, enabled) {\n this.yKeyEnabled.set(itemId, enabled);\n var enabledYKeys = [];\n this.yKeyEnabled.forEach(function (enabled, yKey) {\n if (enabled) {\n enabledYKeys.push(yKey);\n }\n });\n this.groupScale.domain = enabledYKeys;\n this.scheduleData();\n };\n ColumnSeries.className = 'ColumnSeries';\n __decorate([\n observable_1.reactive(['dataChange'])\n ], ColumnSeries.prototype, \"fills\", void 0);\n __decorate([\n observable_1.reactive(['dataChange'])\n ], ColumnSeries.prototype, \"strokes\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], ColumnSeries.prototype, \"fillOpacity\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], ColumnSeries.prototype, \"strokeOpacity\", void 0);\n __decorate([\n observable_1.reactive(['layoutChange'])\n ], ColumnSeries.prototype, \"flipXY\", void 0);\n return ColumnSeries;\n}(cartesianSeries_1.CartesianSeries));\nexports.ColumnSeries = ColumnSeries;\n//# sourceMappingURL=columnSeries.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar group_1 = require(\"../../../scene/group\");\nvar selection_1 = require(\"../../../scene/selection\");\nvar node_1 = require(\"../../../scene/node\");\nvar array_1 = require(\"../../../util/array\");\nvar number_1 = require(\"../../../util/number\");\nvar path_1 = require(\"../../../scene/shape/path\");\nvar palettes_1 = require(\"../../palettes\");\nvar marker_1 = require(\"../../marker/marker\");\nvar cartesianSeries_1 = require(\"./cartesianSeries\");\nvar chartAxis_1 = require(\"../../chartAxis\");\nvar AreaSeries = /** @class */ (function (_super) {\n __extends(AreaSeries, _super);\n function AreaSeries() {\n var _this = _super.call(this) || this;\n _this.areaGroup = _this.group.appendChild(new group_1.Group);\n _this.strokeGroup = _this.group.appendChild(new group_1.Group);\n _this.markerGroup = _this.group.appendChild(new group_1.Group);\n _this.areaSelection = selection_1.Selection.select(_this.areaGroup).selectAll();\n _this.strokeSelection = selection_1.Selection.select(_this.strokeGroup).selectAll();\n _this.markerSelection = selection_1.Selection.select(_this.markerGroup).selectAll();\n /**\n * The assumption is that the values will be reset (to `true`)\n * in the {@link yKeys} setter.\n */\n _this.yKeyEnabled = new Map();\n _this.marker = new cartesianSeries_1.CartesianSeriesMarker();\n _this._fills = palettes_1.default.fills;\n _this._strokes = palettes_1.default.strokes;\n _this._fillOpacity = 1;\n _this._strokeOpacity = 1;\n _this.xData = [];\n _this.yData = [];\n _this.yDomain = [];\n _this.directionKeys = {\n x: ['xKey'],\n y: ['yKeys']\n };\n _this._xKey = '';\n _this._xName = '';\n _this._yKeys = [];\n _this._yNames = [];\n _this._strokeWidth = 2;\n _this.highlightStyle = {\n fill: 'yellow'\n };\n _this.marker.enabled = false;\n _this.marker.addPropertyListener('type', function () { return _this.onMarkerTypeChange(); });\n _this.marker.addEventListener('change', function () { return _this.update(); });\n return _this;\n }\n AreaSeries.prototype.onMarkerTypeChange = function () {\n this.markerSelection = this.markerSelection.setData([]);\n this.markerSelection.exit.remove();\n this.update();\n this.fireEvent({ type: 'legendChange' });\n };\n Object.defineProperty(AreaSeries.prototype, \"fills\", {\n get: function () {\n return this._fills;\n },\n set: function (values) {\n this._fills = values;\n this.scheduleData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AreaSeries.prototype, \"strokes\", {\n get: function () {\n return this._strokes;\n },\n set: function (values) {\n this._strokes = values;\n this.scheduleData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AreaSeries.prototype, \"fillOpacity\", {\n get: function () {\n return this._fillOpacity;\n },\n set: function (value) {\n if (this._fillOpacity !== value) {\n this._fillOpacity = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AreaSeries.prototype, \"strokeOpacity\", {\n get: function () {\n return this._strokeOpacity;\n },\n set: function (value) {\n if (this._strokeOpacity !== value) {\n this._strokeOpacity = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AreaSeries.prototype, \"xKey\", {\n get: function () {\n return this._xKey;\n },\n set: function (value) {\n if (this._xKey !== value) {\n this._xKey = value;\n this.xData = [];\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AreaSeries.prototype, \"xName\", {\n get: function () {\n return this._xName;\n },\n set: function (value) {\n this._xName = value;\n this.update();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AreaSeries.prototype, \"yKeys\", {\n get: function () {\n return this._yKeys;\n },\n set: function (values) {\n this._yKeys = values;\n this.yData = [];\n var yKeyEnabled = this.yKeyEnabled;\n yKeyEnabled.clear();\n values.forEach(function (key) { return yKeyEnabled.set(key, true); });\n this.scheduleData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AreaSeries.prototype, \"yNames\", {\n get: function () {\n return this._yNames;\n },\n set: function (values) {\n this._yNames = values;\n this.update();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AreaSeries.prototype, \"normalizedTo\", {\n get: function () {\n return this._normalizedTo;\n },\n set: function (value) {\n var absValue = value ? Math.abs(value) : undefined;\n if (this._normalizedTo !== absValue) {\n this._normalizedTo = absValue;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AreaSeries.prototype, \"strokeWidth\", {\n get: function () {\n return this._strokeWidth;\n },\n set: function (value) {\n if (this._strokeWidth !== value) {\n this._strokeWidth = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AreaSeries.prototype, \"shadow\", {\n get: function () {\n return this._shadow;\n },\n set: function (value) {\n if (this._shadow !== value) {\n this._shadow = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n AreaSeries.prototype.highlightNode = function (node) {\n if (!(node instanceof marker_1.Marker)) {\n return;\n }\n this.highlightedNode = node;\n this.scheduleLayout();\n };\n AreaSeries.prototype.dehighlightNode = function () {\n this.highlightedNode = undefined;\n this.scheduleLayout();\n };\n AreaSeries.prototype.processData = function () {\n var _a = this, xKey = _a.xKey, yKeys = _a.yKeys, yKeyEnabled = _a.yKeyEnabled;\n var data = xKey && yKeys.length ? this.data : [];\n // if (!(chart && chart.xAxis && chart.yAxis)) {\n // return false;\n // }\n // If the data is an array of rows like so:\n //\n // [{\n // xKy: 'Jan',\n // yKey1: 5,\n // yKey2: 7,\n // yKey3: -9,\n // }, {\n // xKey: 'Feb',\n // yKey1: 10,\n // yKey2: -15,\n // yKey3: 20\n // }]\n //\n var keysFound = true; // only warn once\n this.xData = data.map(function (datum) {\n if (keysFound && !(xKey in datum)) {\n keysFound = false;\n console.warn(\"The key '\" + xKey + \"' was not found in the data: \", datum);\n }\n return datum[xKey];\n });\n this.yData = data.map(function (datum) { return yKeys.map(function (yKey) {\n if (keysFound && !(yKey in datum)) {\n keysFound = false;\n console.warn(\"The key '\" + yKey + \"' was not found in the data: \", datum);\n }\n var value = datum[yKey];\n return isFinite(value) && yKeyEnabled.get(yKey) ? Math.abs(value) : 0;\n }); });\n // xData: ['Jan', 'Feb']\n //\n // yData: [\n // [5, 7, -9],\n // [10, -15, 20]\n // ]\n var _b = this, yData = _b.yData, normalizedTo = _b.normalizedTo;\n var ySums = yData.map(function (values) { return array_1.sumPositiveValues(values); }); // used for normalization\n var yMin;\n var yMax;\n if (normalizedTo && isFinite(normalizedTo)) {\n yMin = 0;\n yMax = normalizedTo;\n yData.forEach(function (stack, i) { return stack.forEach(function (y, j) { return stack[j] = y / ySums[i] * normalizedTo; }); });\n }\n else {\n // Find the height of each stack in the positive and negative directions,\n // then find the tallest stacks in both directions.\n yMin = Math.min.apply(Math, __spreadArrays([0], yData.map(function (values) { return values.reduce(function (min, value) { return value < 0 ? min - value : min; }, 0); })));\n yMax = Math.max.apply(Math, yData.map(function (values) { return values.reduce(function (max, value) { return value > 0 ? max + value : max; }, 0); }));\n }\n if (yMin === 0 && yMax === 0) {\n yMax = 1;\n }\n this.yDomain = this.fixNumericExtent([yMin, yMax], 'y');\n this.fireEvent({ type: 'dataProcessed' });\n return true;\n };\n AreaSeries.prototype.getDomain = function (direction) {\n if (direction === chartAxis_1.ChartAxisDirection.X) {\n return this.xData;\n }\n else {\n return this.yDomain;\n }\n };\n AreaSeries.prototype.update = function () {\n var _a = this, visible = _a.visible, chart = _a.chart, xAxis = _a.xAxis, yAxis = _a.yAxis, xData = _a.xData, yData = _a.yData;\n this.group.visible = visible && !!(xData.length && yData.length);\n if (!xAxis || !yAxis || !visible || !chart || chart.layoutPending || chart.dataPending || !xData.length || !yData.length) {\n return;\n }\n var _b = this.generateSelectionData(), areaSelectionData = _b.areaSelectionData, markerSelectionData = _b.markerSelectionData;\n this.updateAreaSelection(areaSelectionData);\n this.updateStrokeSelection(areaSelectionData);\n this.updateMarkerSelection(markerSelectionData);\n };\n AreaSeries.prototype.generateSelectionData = function () {\n var _a = this, yKeys = _a.yKeys, yNames = _a.yNames, data = _a.data, xData = _a.xData, yData = _a.yData, marker = _a.marker, fills = _a.fills, strokes = _a.strokes, xScale = _a.xAxis.scale, yScale = _a.yAxis.scale;\n var xOffset = (xScale.bandwidth || 0) / 2;\n var yOffset = (yScale.bandwidth || 0) / 2;\n var areaSelectionData = [];\n var markerSelectionData = [];\n var last = xData.length * 2 - 1;\n xData.forEach(function (xDatum, i) {\n var yDatum = yData[i];\n var seriesDatum = data[i];\n var x = xScale.convert(xDatum) + xOffset;\n var prev = 0;\n yDatum.forEach(function (curr, j) {\n var y = yScale.convert(prev + curr) + yOffset;\n var yKey = yKeys[j];\n var yValue = seriesDatum[yKey];\n if (marker) {\n markerSelectionData.push({\n seriesDatum: seriesDatum,\n yValue: yValue,\n yKey: yKey,\n x: x,\n y: y,\n fill: fills[j % fills.length],\n stroke: strokes[j % strokes.length],\n text: yNames[j]\n });\n }\n var areaDatum = areaSelectionData[j] || (areaSelectionData[j] = { yKey: yKey, points: [] });\n var areaPoints = areaDatum.points;\n areaPoints[i] = { x: x, y: y };\n areaPoints[last - i] = { x: x, y: yScale.convert(prev) + yOffset }; // bottom y\n prev += curr;\n });\n });\n return { areaSelectionData: areaSelectionData, markerSelectionData: markerSelectionData };\n };\n AreaSeries.prototype.updateAreaSelection = function (areaSelectionData) {\n var _a = this, fills = _a.fills, fillOpacity = _a.fillOpacity, yKeyEnabled = _a.yKeyEnabled, shadow = _a.shadow;\n var updateAreas = this.areaSelection.setData(areaSelectionData);\n updateAreas.exit.remove();\n var enterAreas = updateAreas.enter.append(path_1.Path)\n .each(function (path) {\n path.stroke = undefined;\n path.pointerEvents = node_1.PointerEvents.None;\n });\n var areaSelection = updateAreas.merge(enterAreas);\n areaSelection.each(function (shape, datum, index) {\n var path = shape.path;\n shape.fill = fills[index % fills.length];\n shape.fillOpacity = fillOpacity;\n shape.fillShadow = shadow;\n shape.visible = !!yKeyEnabled.get(datum.yKey);\n path.clear();\n var points = datum.points;\n points.forEach(function (_a, i) {\n var x = _a.x, y = _a.y;\n if (i > 0) {\n path.lineTo(x, y);\n }\n else {\n path.moveTo(x, y);\n }\n });\n path.closePath();\n });\n this.areaSelection = areaSelection;\n };\n AreaSeries.prototype.updateStrokeSelection = function (areaSelectionData) {\n var _a = this, strokes = _a.strokes, strokeWidth = _a.strokeWidth, strokeOpacity = _a.strokeOpacity, data = _a.data, yKeyEnabled = _a.yKeyEnabled;\n var updateStrokes = this.strokeSelection.setData(areaSelectionData);\n updateStrokes.exit.remove();\n var enterStrokes = updateStrokes.enter.append(path_1.Path)\n .each(function (path) {\n path.fill = undefined;\n path.lineJoin = path.lineCap = 'round';\n path.pointerEvents = node_1.PointerEvents.None;\n });\n var strokeSelection = updateStrokes.merge(enterStrokes);\n strokeSelection.each(function (shape, datum, index) {\n var path = shape.path;\n shape.stroke = strokes[index % strokes.length];\n shape.strokeWidth = strokeWidth;\n shape.visible = !!yKeyEnabled.get(datum.yKey);\n shape.strokeOpacity = strokeOpacity;\n path.clear();\n var points = datum.points;\n // The stroke doesn't go all the way around the fill, only on top,\n // that's why we iterate until `data.length` (rather than `points.length`) and stop.\n for (var i = 0; i < data.length; i++) {\n var _a = points[i], x = _a.x, y = _a.y;\n if (i > 0) {\n path.lineTo(x, y);\n }\n else {\n path.moveTo(x, y);\n }\n }\n });\n this.strokeSelection = strokeSelection;\n };\n AreaSeries.prototype.updateMarkerSelection = function (markerSelectionData) {\n var _a = this, marker = _a.marker, xKey = _a.xKey;\n var Marker = marker.type;\n if (!Marker) {\n return;\n }\n var markerFormatter = marker.formatter;\n var markerStrokeWidth = marker.strokeWidth !== undefined ? marker.strokeWidth : this.strokeWidth;\n var markerSize = marker.size;\n var _b = this, yKeyEnabled = _b.yKeyEnabled, highlightedNode = _b.highlightedNode;\n var _c = this.highlightStyle, highlightFill = _c.fill, highlightStroke = _c.stroke;\n var updateMarkers = this.markerSelection.setData(markerSelectionData);\n updateMarkers.exit.remove();\n var enterMarkers = updateMarkers.enter.append(Marker);\n var markerSelection = updateMarkers.merge(enterMarkers);\n markerSelection.each(function (node, datum) {\n var isHighlightedNode = node === highlightedNode;\n var markerFill = isHighlightedNode && highlightFill !== undefined ? highlightFill : marker.fill || datum.fill;\n var markerStroke = isHighlightedNode && highlightStroke !== undefined ? highlightStroke : marker.stroke || datum.stroke;\n var markerFormat = undefined;\n if (markerFormatter) {\n markerFormat = markerFormatter({\n datum: datum.seriesDatum,\n xKey: xKey,\n yKey: datum.yKey,\n fill: markerFill,\n stroke: markerStroke,\n strokeWidth: markerStrokeWidth,\n size: markerSize,\n highlighted: isHighlightedNode\n });\n }\n node.fill = markerFormat && markerFormat.fill || markerFill;\n node.stroke = markerFormat && markerFormat.stroke || markerStroke;\n node.strokeWidth = markerFormat && markerFormat.strokeWidth !== undefined\n ? markerFormat.strokeWidth\n : markerStrokeWidth;\n node.size = markerFormat && markerFormat.size !== undefined\n ? markerFormat.size\n : markerSize;\n node.translationX = datum.x;\n node.translationY = datum.y;\n node.visible = marker.enabled && node.size > 0 && !!yKeyEnabled.get(datum.yKey);\n });\n this.markerSelection = markerSelection;\n };\n AreaSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var xKey = this.xKey;\n var yKey = nodeDatum.yKey;\n if (!xKey || !yKey) {\n return '';\n }\n var _a = this, xName = _a.xName, yKeys = _a.yKeys, yNames = _a.yNames, fills = _a.fills, tooltipRenderer = _a.tooltipRenderer;\n var text = nodeDatum.text;\n var yKeyIndex = yKeys.indexOf(yKey);\n var yName = yNames[yKeyIndex];\n var color = fills[yKeyIndex % fills.length];\n if (tooltipRenderer) {\n return tooltipRenderer({\n datum: nodeDatum.seriesDatum,\n xKey: xKey,\n xName: xName,\n yKey: yKey,\n yName: yName,\n title: text,\n color: color,\n });\n }\n else {\n var titleStyle = \"style=\\\"color: white; background-color: \" + color + \"\\\"\";\n var title = text ? \"
\" + text + \"
\" : '';\n var seriesDatum = nodeDatum.seriesDatum;\n var xValue = seriesDatum[xKey];\n var yValue = seriesDatum[yKey];\n var xString = typeof xValue === 'number' ? number_1.toFixed(xValue) : String(xValue);\n var yString = typeof yValue === 'number' ? number_1.toFixed(yValue) : String(yValue);\n return title + \"
\" + xString + \": \" + yString + \"
\";\n }\n };\n AreaSeries.prototype.listSeriesItems = function (data) {\n var _a = this, id = _a.id, xKey = _a.xKey, yKeys = _a.yKeys, yNames = _a.yNames, yKeyEnabled = _a.yKeyEnabled, marker = _a.marker, fills = _a.fills, strokes = _a.strokes, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity;\n if (this.data.length && xKey && yKeys.length) {\n yKeys.forEach(function (yKey, index) {\n data.push({\n id: id,\n itemId: yKey,\n enabled: yKeyEnabled.get(yKey) || false,\n label: {\n text: yNames[index] || yKeys[index]\n },\n marker: {\n type: marker.type,\n fill: marker.fill || fills[index % fills.length],\n stroke: marker.stroke || strokes[index % strokes.length],\n fillOpacity: fillOpacity,\n strokeOpacity: strokeOpacity\n }\n });\n });\n }\n };\n AreaSeries.prototype.toggleSeriesItem = function (itemId, enabled) {\n this.yKeyEnabled.set(itemId, enabled);\n this.scheduleData();\n };\n AreaSeries.className = 'AreaSeries';\n return AreaSeries;\n}(cartesianSeries_1.CartesianSeries));\nexports.AreaSeries = AreaSeries;\n//# sourceMappingURL=areaSeries.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar group_1 = require(\"../../../scene/group\");\nvar line_1 = require(\"../../../scene/shape/line\");\nvar text_1 = require(\"../../../scene/shape/text\");\nvar selection_1 = require(\"../../../scene/selection\");\nvar linearScale_1 = require(\"../../../scale/linearScale\");\nvar palettes_1 = require(\"../../palettes\");\nvar sector_1 = require(\"../../../scene/shape/sector\");\nvar label_1 = require(\"../../label\");\nvar node_1 = require(\"../../../scene/node\");\nvar angle_1 = require(\"../../../util/angle\");\nvar color_1 = require(\"../../../util/color\");\nvar number_1 = require(\"../../../util/number\");\nvar observable_1 = require(\"../../../util/observable\");\nvar polarSeries_1 = require(\"./polarSeries\");\nvar chartAxis_1 = require(\"../../chartAxis\");\nvar PieSeriesNodeTag;\n(function (PieSeriesNodeTag) {\n PieSeriesNodeTag[PieSeriesNodeTag[\"Sector\"] = 0] = \"Sector\";\n PieSeriesNodeTag[PieSeriesNodeTag[\"Callout\"] = 1] = \"Callout\";\n PieSeriesNodeTag[PieSeriesNodeTag[\"Label\"] = 2] = \"Label\";\n})(PieSeriesNodeTag || (PieSeriesNodeTag = {}));\nvar PieSeriesLabel = /** @class */ (function (_super) {\n __extends(PieSeriesLabel, _super);\n function PieSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.offset = 3; // from the callout line\n _this.minAngle = 20; // in degrees\n return _this;\n }\n __decorate([\n observable_1.reactive(['change'])\n ], PieSeriesLabel.prototype, \"offset\", void 0);\n __decorate([\n observable_1.reactive(['dataChange'])\n ], PieSeriesLabel.prototype, \"minAngle\", void 0);\n return PieSeriesLabel;\n}(label_1.Label));\nvar PieSeries = /** @class */ (function (_super) {\n __extends(PieSeries, _super);\n function PieSeries() {\n var _this = _super.call(this) || this;\n _this.radiusScale = new linearScale_1.LinearScale();\n _this.groupSelection = selection_1.Selection.select(_this.group).selectAll();\n /**\n * The processed data that gets visualized.\n */\n _this.groupSelectionData = [];\n _this.angleScale = (function () {\n var scale = new linearScale_1.LinearScale();\n // Each slice is a ratio of the whole, where all ratios add up to 1.\n scale.domain = [0, 1];\n // Add 90 deg to start the first pie at 12 o'clock.\n scale.range = [-Math.PI, Math.PI].map(function (angle) { return angle + Math.PI / 2; });\n return scale;\n })();\n _this.dataEnabled = [];\n /**\n * Defaults to make the callout colors the same as {@link strokeStyle}.\n */\n _this._calloutColors = palettes_1.default.strokes;\n _this._calloutStrokeWidth = 1;\n _this._calloutLength = 10;\n _this.label = new PieSeriesLabel();\n _this._labelOffset = 3; // from the callout line\n _this._labelFontSize = 12;\n _this._labelFontFamily = 'Verdana, sans-serif';\n _this._labelColor = 'black';\n /**\n * The key of the numeric field to use to determine the angle (for example,\n * a pie slice angle).\n */\n _this._angleKey = '';\n _this._angleName = '';\n _this._fills = palettes_1.default.fills;\n _this._strokes = palettes_1.default.strokes;\n _this._fillOpacity = 1;\n _this._strokeOpacity = 1;\n /**\n * The series rotation in degrees.\n */\n _this._rotation = 0;\n _this._outerRadiusOffset = 0;\n _this._innerRadiusOffset = 0;\n _this._strokeWidth = 1;\n _this.highlightStyle = {\n fill: 'yellow'\n };\n _this.label.addEventListener('change', function () { return _this.scheduleLayout(); });\n _this.label.addEventListener('dataChange', function () { return _this.scheduleData(); });\n _this.addPropertyListener('data', function (event) {\n event.source.dataEnabled = event.value.map(function () { return true; });\n });\n return _this;\n }\n Object.defineProperty(PieSeries.prototype, \"title\", {\n get: function () {\n return this._title;\n },\n set: function (value) {\n var oldTitle = this._title;\n if (oldTitle !== value) {\n if (oldTitle) {\n oldTitle.removeEventListener('change', this.scheduleLayout);\n this.group.removeChild(oldTitle.node);\n }\n if (value) {\n value.node.textBaseline = 'bottom';\n value.addEventListener('change', this.scheduleLayout);\n this.group.appendChild(value.node);\n }\n this._title = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"calloutColors\", {\n get: function () {\n return this._calloutColors;\n },\n set: function (value) {\n if (this._calloutColors !== value) {\n this._calloutColors = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"calloutStrokeWidth\", {\n get: function () {\n return this._calloutStrokeWidth;\n },\n set: function (value) {\n if (this._calloutStrokeWidth !== value) {\n this._calloutStrokeWidth = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"calloutLength\", {\n get: function () {\n return this._calloutLength;\n },\n set: function (value) {\n if (this._calloutLength !== value) {\n this._calloutLength = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"labelOffset\", {\n get: function () {\n return this._labelOffset;\n },\n set: function (value) {\n if (this._labelOffset !== value) {\n this._labelOffset = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"labelFontStyle\", {\n get: function () {\n return this._labelFontStyle;\n },\n set: function (value) {\n if (this._labelFontStyle !== value) {\n this._labelFontStyle = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"labelFontWeight\", {\n get: function () {\n return this._labelFontWeight;\n },\n set: function (value) {\n if (this._labelFontWeight !== value) {\n this._labelFontWeight = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"labelFontSize\", {\n get: function () {\n return this._labelFontSize;\n },\n set: function (value) {\n if (this._labelFontSize !== value) {\n this._labelFontSize = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"labelFontFamily\", {\n get: function () {\n return this._labelFontFamily;\n },\n set: function (value) {\n if (this._labelFontFamily !== value) {\n this._labelFontFamily = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"labelColor\", {\n get: function () {\n return this._labelColor;\n },\n set: function (value) {\n if (this._labelColor !== value) {\n this._labelColor = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"angleKey\", {\n get: function () {\n return this._angleKey;\n },\n set: function (value) {\n if (this._angleKey !== value) {\n this._angleKey = value;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"angleName\", {\n get: function () {\n return this._angleName;\n },\n set: function (value) {\n if (this._angleName !== value) {\n this._angleName = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"radiusKey\", {\n get: function () {\n return this._radiusKey;\n },\n set: function (value) {\n if (this._radiusKey !== value) {\n this._radiusKey = value;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"radiusName\", {\n get: function () {\n return this._radiusName;\n },\n set: function (value) {\n if (this._radiusName !== value) {\n this._radiusName = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"labelKey\", {\n get: function () {\n return this._labelKey;\n },\n set: function (value) {\n if (this._labelKey !== value) {\n this._labelKey = value;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"labelName\", {\n get: function () {\n return this._labelName;\n },\n set: function (value) {\n if (this._labelName !== value) {\n this._labelName = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"fills\", {\n get: function () {\n return this._fills;\n },\n set: function (values) {\n this._fills = values;\n this.strokes = values.map(function (color) { return color_1.Color.fromString(color).darker().toHexString(); });\n this.scheduleData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"strokes\", {\n get: function () {\n return this._strokes;\n },\n set: function (values) {\n this._strokes = values;\n this.calloutColors = values;\n this.scheduleData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"fillOpacity\", {\n get: function () {\n return this._fillOpacity;\n },\n set: function (value) {\n if (this._fillOpacity !== value) {\n this._fillOpacity = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"strokeOpacity\", {\n get: function () {\n return this._strokeOpacity;\n },\n set: function (value) {\n if (this._strokeOpacity !== value) {\n this._strokeOpacity = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"rotation\", {\n get: function () {\n return this._rotation;\n },\n set: function (value) {\n if (this._rotation !== value) {\n this._rotation = value;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"outerRadiusOffset\", {\n get: function () {\n return this._outerRadiusOffset;\n },\n set: function (value) {\n if (this._outerRadiusOffset !== value) {\n this._outerRadiusOffset = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"innerRadiusOffset\", {\n get: function () {\n return this._innerRadiusOffset;\n },\n set: function (value) {\n if (this._innerRadiusOffset !== value) {\n this._innerRadiusOffset = value;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"strokeWidth\", {\n get: function () {\n return this._strokeWidth;\n },\n set: function (value) {\n if (this._strokeWidth !== value) {\n this._strokeWidth = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"shadow\", {\n get: function () {\n return this._shadow;\n },\n set: function (value) {\n if (this._shadow !== value) {\n this._shadow = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n PieSeries.prototype.highlightNode = function (node) {\n if (!(node instanceof sector_1.Sector)) {\n return;\n }\n this.highlightedNode = node;\n this.scheduleLayout();\n };\n PieSeries.prototype.dehighlightNode = function () {\n this.highlightedNode = undefined;\n this.scheduleLayout();\n };\n PieSeries.prototype.getDomain = function (direction) {\n if (direction === chartAxis_1.ChartAxisDirection.X) {\n return this.angleScale.domain;\n }\n else {\n return this.radiusScale.domain;\n }\n };\n PieSeries.prototype.processData = function () {\n var _this = this;\n var _a = this, data = _a.data, dataEnabled = _a.dataEnabled;\n var angleData = data.map(function (datum, index) { return dataEnabled[index] && +datum[_this.angleKey] || 0; });\n var angleDataTotal = angleData.reduce(function (a, b) { return a + b; }, 0);\n // The ratios (in [0, 1] interval) used to calculate the end angle value for every pie slice.\n // Each slice starts where the previous one ends, so we only keep the ratios for end angles.\n var angleDataRatios = (function () {\n var sum = 0;\n return angleData.map(function (datum) { return sum += datum / angleDataTotal; });\n })();\n var labelKey = this.label.enabled && this.labelKey;\n var labelData = labelKey ? data.map(function (datum) { return String(datum[labelKey]); }) : [];\n var radiusKey = this.radiusKey;\n var useRadiusKey = !!radiusKey && !this.innerRadiusOffset;\n var radiusData = [];\n if (useRadiusKey) {\n var radii = data.map(function (datum) { return Math.abs(datum[radiusKey]); });\n var maxDatum_1 = Math.max.apply(Math, radii);\n radiusData = radii.map(function (value) { return value / maxDatum_1; });\n }\n var _b = this, angleScale = _b.angleScale, groupSelectionData = _b.groupSelectionData;\n groupSelectionData.length = 0;\n var rotation = angle_1.toRadians(this.rotation);\n var halfPi = Math.PI / 2;\n var datumIndex = 0;\n // Simply use reduce here to pair up adjacent ratios.\n angleDataRatios.reduce(function (start, end) {\n var radius = useRadiusKey ? radiusData[datumIndex] : 1;\n var startAngle = angleScale.convert(start) + rotation;\n var endAngle = angleScale.convert(end) + rotation;\n var midAngle = (startAngle + endAngle) / 2;\n var span = Math.abs(endAngle - startAngle);\n var midCos = Math.cos(midAngle);\n var midSin = Math.sin(midAngle);\n var labelMinAngle = angle_1.toRadians(_this.label.minAngle);\n var labelVisible = labelKey && span > labelMinAngle;\n var midAngle180 = angle_1.normalizeAngle180(midAngle);\n // Split the circle into quadrants like so: ⊗\n var quadrantStart = -3 * Math.PI / 4; // same as `normalizeAngle180(toRadians(-135))`\n var textAlign;\n var textBaseline;\n if (midAngle180 >= quadrantStart && midAngle180 < (quadrantStart += halfPi)) {\n textAlign = 'center';\n textBaseline = 'bottom';\n }\n else if (midAngle180 >= quadrantStart && midAngle180 < (quadrantStart += halfPi)) {\n textAlign = 'left';\n textBaseline = 'middle';\n }\n else if (midAngle180 >= quadrantStart && midAngle180 < (quadrantStart += halfPi)) {\n textAlign = 'center';\n textBaseline = 'hanging';\n }\n else {\n textAlign = 'right';\n textBaseline = 'middle';\n }\n groupSelectionData.push({\n index: datumIndex,\n seriesDatum: data[datumIndex],\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle,\n midAngle: midAngle,\n midCos: midCos,\n midSin: midSin,\n label: labelVisible ? {\n text: labelData[datumIndex],\n textAlign: textAlign,\n textBaseline: textBaseline\n } : undefined\n });\n datumIndex++;\n return end;\n }, 0);\n return true;\n };\n PieSeries.prototype.update = function () {\n var _this = this;\n var chart = this.chart;\n var visible = this.group.visible = this.visible && this.dataEnabled.indexOf(true) >= 0;\n if (!visible || !chart || chart.dataPending || chart.layoutPending) {\n return;\n }\n var _a = this, fills = _a.fills, strokes = _a.strokes, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity, calloutColors = _a.calloutColors, outerRadiusOffset = _a.outerRadiusOffset, innerRadiusOffset = _a.innerRadiusOffset, radiusScale = _a.radiusScale, title = _a.title;\n radiusScale.range = [0, this.radius];\n this.group.translationX = this.centerX;\n this.group.translationY = this.centerY;\n if (title) {\n title.node.translationY = -this.radius - outerRadiusOffset - 2;\n title.node.visible = title.enabled;\n }\n var updateGroups = this.groupSelection.setData(this.groupSelectionData);\n updateGroups.exit.remove();\n var enterGroups = updateGroups.enter.append(group_1.Group);\n enterGroups.append(sector_1.Sector).each(function (node) { return node.tag = PieSeriesNodeTag.Sector; });\n enterGroups.append(line_1.Line).each(function (node) {\n node.tag = PieSeriesNodeTag.Callout;\n node.pointerEvents = node_1.PointerEvents.None;\n });\n enterGroups.append(text_1.Text).each(function (node) {\n node.tag = PieSeriesNodeTag.Label;\n node.pointerEvents = node_1.PointerEvents.None;\n });\n var groupSelection = updateGroups.merge(enterGroups);\n var minOuterRadius = Infinity;\n var outerRadii = [];\n var centerOffsets = [];\n var _b = this, highlightedNode = _b.highlightedNode, _c = _b.highlightStyle, fill = _c.fill, stroke = _c.stroke, centerOffset = _c.centerOffset, shadow = _b.shadow, strokeWidth = _b.strokeWidth;\n groupSelection.selectByTag(PieSeriesNodeTag.Sector).each(function (sector, datum, index) {\n var radius = radiusScale.convert(datum.radius);\n var outerRadius = Math.max(0, radius + outerRadiusOffset);\n if (minOuterRadius > outerRadius) {\n minOuterRadius = outerRadius;\n }\n sector.outerRadius = outerRadius;\n sector.innerRadius = Math.max(0, innerRadiusOffset ? radius + innerRadiusOffset : 0);\n sector.startAngle = datum.startAngle;\n sector.endAngle = datum.endAngle;\n sector.fill = sector === highlightedNode && fill !== undefined ? fill : fills[index % fills.length];\n sector.stroke = sector === highlightedNode && stroke !== undefined ? stroke : strokes[index % strokes.length];\n sector.fillOpacity = fillOpacity;\n sector.strokeOpacity = strokeOpacity;\n sector.centerOffset = sector === highlightedNode && centerOffset !== undefined ? centerOffset : 0;\n sector.fillShadow = shadow;\n sector.strokeWidth = strokeWidth;\n sector.lineJoin = 'round';\n outerRadii.push(outerRadius);\n centerOffsets.push(sector.centerOffset);\n });\n var calloutLength = this.calloutLength;\n groupSelection.selectByTag(PieSeriesNodeTag.Callout).each(function (line, datum, index) {\n if (datum.label) {\n var outerRadius = centerOffsets[index] + outerRadii[index];\n line.strokeWidth = _this.calloutStrokeWidth;\n line.stroke = calloutColors[index % calloutColors.length];\n line.x1 = datum.midCos * outerRadius;\n line.y1 = datum.midSin * outerRadius;\n line.x2 = datum.midCos * (outerRadius + calloutLength);\n line.y2 = datum.midSin * (outerRadius + calloutLength);\n }\n else {\n line.stroke = undefined;\n }\n });\n {\n var _d = this.label, offset_1 = _d.offset, fontStyle_1 = _d.fontStyle, fontWeight_1 = _d.fontWeight, fontSize_1 = _d.fontSize, fontFamily_1 = _d.fontFamily, color_2 = _d.color;\n groupSelection.selectByTag(PieSeriesNodeTag.Label).each(function (text, datum, index) {\n var label = datum.label;\n if (label) {\n var outerRadius = outerRadii[index];\n var labelRadius = centerOffsets[index] + outerRadius + calloutLength + offset_1;\n text.fontStyle = fontStyle_1;\n text.fontWeight = fontWeight_1;\n text.fontSize = fontSize_1;\n text.fontFamily = fontFamily_1;\n text.text = label.text;\n text.x = datum.midCos * labelRadius;\n text.y = datum.midSin * labelRadius;\n text.fill = color_2;\n text.textAlign = label.textAlign;\n text.textBaseline = label.textBaseline;\n }\n else {\n text.fill = undefined;\n }\n });\n }\n this.groupSelection = groupSelection;\n };\n PieSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var angleKey = this.angleKey;\n if (!angleKey) {\n return '';\n }\n var _a = this, title = _a.title, fills = _a.fills, tooltipRenderer = _a.tooltipRenderer, angleName = _a.angleName, radiusKey = _a.radiusKey, radiusName = _a.radiusName, labelKey = _a.labelKey, labelName = _a.labelName;\n var text = title ? title.text : undefined;\n var color = fills[nodeDatum.index % fills.length];\n if (tooltipRenderer) {\n return tooltipRenderer({\n datum: nodeDatum.seriesDatum,\n angleKey: angleKey,\n angleName: angleName,\n radiusKey: radiusKey,\n radiusName: radiusName,\n labelKey: labelKey,\n labelName: labelName,\n title: text,\n color: color,\n });\n }\n else {\n var titleStyle = \"style=\\\"color: white; background-color: \" + color + \"\\\"\";\n var titleString = title ? \"
\" + text + \"
\" : '';\n var label = labelKey ? nodeDatum.seriesDatum[labelKey] + \": \" : '';\n var value = nodeDatum.seriesDatum[angleKey];\n var formattedValue = typeof value === 'number' ? number_1.toFixed(value) : value.toString();\n return titleString + \"
\" + label + formattedValue + \"
\";\n }\n };\n PieSeries.prototype.listSeriesItems = function (data) {\n var _this = this;\n var labelKey = this.labelKey;\n if (this.data.length && labelKey) {\n var _a = this, fills_1 = _a.fills, strokes_1 = _a.strokes, id_1 = _a.id;\n this.data.forEach(function (datum, index) {\n data.push({\n id: id_1,\n itemId: index,\n enabled: _this.dataEnabled[index],\n label: {\n text: String(datum[labelKey])\n },\n marker: {\n fill: fills_1[index % fills_1.length],\n stroke: strokes_1[index % strokes_1.length],\n fillOpacity: _this.fillOpacity,\n strokeOpacity: _this.strokeOpacity\n }\n });\n });\n }\n };\n PieSeries.prototype.toggleSeriesItem = function (itemId, enabled) {\n this.dataEnabled[itemId] = enabled;\n this.scheduleData();\n };\n PieSeries.className = 'PieSeries';\n return PieSeries;\n}(polarSeries_1.PolarSeries));\nexports.PieSeries = PieSeries;\n//# sourceMappingURL=pieSeries.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Color = /** @class */ (function () {\n /**\n * Every color component should be in the [0, 1] range.\n * Some easing functions (such as elastic easing) can overshoot the target value by some amount.\n * So, when animating colors, if the source or target color components are already near\n * or at the edge of the allowed [0, 1] range, it is possible for the intermediate color\n * component value to end up outside of that range mid-animation. For this reason the constructor\n * performs range checking/constraining.\n * @param r Red component.\n * @param g Green component.\n * @param b Blue component.\n * @param a Alpha (opacity) component.\n */\n function Color(r, g, b, a) {\n if (a === void 0) { a = 1; }\n // NaN is treated as 0.\n this.r = Math.min(1, Math.max(0, r || 0));\n this.g = Math.min(1, Math.max(0, g || 0));\n this.b = Math.min(1, Math.max(0, b || 0));\n this.a = Math.min(1, Math.max(0, a || 0));\n }\n /**\n * The given string can be in one of the following formats:\n * - #rgb\n * - #rrggbb\n * - rgb(r, g, b)\n * - rgba(r, g, b, a)\n * - CSS color name such as 'white', 'orange', 'cyan', etc.\n * @param str\n */\n Color.fromString = function (str) {\n // hexadecimal notation\n if (str.indexOf('#') >= 0) { // there can be some leading whitespace\n return Color.fromHexString(str);\n }\n // color name\n var hex = Color.nameToHex[str];\n if (hex) {\n return Color.fromHexString(hex);\n }\n // rgb(a) notation\n if (str.indexOf('rgb') >= 0) {\n return Color.fromRgbaString(str);\n }\n throw new Error(\"Invalid color string: '\" + str + \"'\");\n };\n // Using separate RegExp for the short hex notation because strings like `#abcd`\n // are matched as ['#abcd', 'ab', 'c', 'd', undefined] when the `{1,2}` quantifier is used.\n Color.fromHexString = function (str) {\n var values = str.match(Color.hexRe);\n if (values) {\n var r = parseInt(values[1], 16);\n var g = parseInt(values[2], 16);\n var b = parseInt(values[3], 16);\n var a = values[4] !== undefined ? parseInt(values[4], 16) : 255;\n return new Color(r / 255, g / 255, b / 255, a / 255);\n }\n values = str.match(Color.shortHexRe);\n if (values) {\n var r = parseInt(values[1], 16);\n var g = parseInt(values[2], 16);\n var b = parseInt(values[3], 16);\n var a = values[4] !== undefined ? parseInt(values[4], 16) : 15;\n r += r * 16;\n g += g * 16;\n b += b * 16;\n a += a * 16;\n return new Color(r / 255, g / 255, b / 255, a / 255);\n }\n throw new Error(\"Malformed hexadecimal color string: '\" + str + \"'\");\n };\n Color.fromRgbaString = function (str) {\n var values = str.match(Color.rgbRe);\n if (values) {\n return new Color(+values[1] / 255, +values[2] / 255, +values[3] / 255);\n }\n values = str.match(Color.rgbaRe);\n if (values) {\n return new Color(+values[1] / 255, +values[2] / 255, +values[3] / 255, +values[4]);\n }\n throw new Error(\"Malformed rgb/rgba color string: '\" + str + \"'\");\n };\n Color.fromArray = function (arr) {\n if (arr.length === 4) {\n return new Color(arr[0], arr[1], arr[2], arr[3]);\n }\n if (arr.length === 3) {\n return new Color(arr[0], arr[1], arr[2]);\n }\n throw new Error('The given array should contain 3 or 4 color components (numbers).');\n };\n Color.fromHSB = function (h, s, b, alpha) {\n if (alpha === void 0) { alpha = 1; }\n var rgb = Color.HSBtoRGB(h, s, b);\n return new Color(rgb[0], rgb[1], rgb[2], alpha);\n };\n Color.padHex = function (str) {\n // Can't use `padStart(2, '0')` here because of IE.\n return str.length === 1 ? '0' + str : str;\n };\n Color.prototype.toHexString = function () {\n var hex = '#'\n + Color.padHex(Math.round(this.r * 255).toString(16))\n + Color.padHex(Math.round(this.g * 255).toString(16))\n + Color.padHex(Math.round(this.b * 255).toString(16));\n if (this.a < 1) {\n hex += Color.padHex(Math.round(this.a * 255).toString(16));\n }\n return hex;\n };\n Color.prototype.toRgbaString = function (fractionDigits) {\n if (fractionDigits === void 0) { fractionDigits = 3; }\n var components = [\n Math.round(this.r * 255),\n Math.round(this.g * 255),\n Math.round(this.b * 255)\n ];\n var k = Math.pow(10, fractionDigits);\n if (this.a !== 1) {\n components.push(Math.round(this.a * k) / k);\n return \"rgba(\" + components.join(', ') + \")\";\n }\n return \"rgb(\" + components.join(', ') + \")\";\n };\n Color.prototype.toString = function () {\n if (this.a === 1) {\n return this.toHexString();\n }\n return this.toRgbaString();\n };\n Color.prototype.toHSB = function () {\n return Color.RGBtoHSB(this.r, this.g, this.b);\n };\n /**\n * Converts the given RGB triple to an array of HSB (HSV) components.\n * The hue component will be `NaN` for achromatic colors.\n */\n Color.RGBtoHSB = function (r, g, b) {\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var S = max !== 0 ? (max - min) / max : 0;\n var H = NaN;\n // min == max, means all components are the same\n // and the color is a shade of gray with no hue (H is NaN)\n if (min !== max) {\n var delta = max - min;\n var rc = (max - r) / delta;\n var gc = (max - g) / delta;\n var bc = (max - b) / delta;\n if (r === max) {\n H = bc - gc;\n }\n else if (g === max) {\n H = 2.0 + rc - bc;\n }\n else {\n H = 4.0 + gc - rc;\n }\n H /= 6.0;\n if (H < 0) {\n H = H + 1.0;\n }\n }\n return [H * 360, S, max];\n };\n /**\n * Converts the given HSB (HSV) triple to an array of RGB components.\n */\n Color.HSBtoRGB = function (H, S, B) {\n if (isNaN(H)) {\n H = 0;\n }\n H = (((H % 360) + 360) % 360) / 360; // normalize hue to [0, 360] interval, then scale to [0, 1]\n var r = 0;\n var g = 0;\n var b = 0;\n if (S === 0) {\n r = g = b = B;\n }\n else {\n var h = (H - Math.floor(H)) * 6;\n var f = h - Math.floor(h);\n var p = B * (1 - S);\n var q = B * (1 - S * f);\n var t = B * (1 - (S * (1 - f)));\n switch (h >> 0) { // discard the floating point part of the number\n case 0:\n r = B;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = B;\n b = p;\n break;\n case 2:\n r = p;\n g = B;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = B;\n break;\n case 4:\n r = t;\n g = p;\n b = B;\n break;\n case 5:\n r = B;\n g = p;\n b = q;\n break;\n }\n }\n return [r, g, b];\n };\n Color.prototype.derive = function (hueShift, saturationFactor, brightnessFactor, opacityFactor) {\n var hsb = Color.RGBtoHSB(this.r, this.g, this.b);\n var b = hsb[2];\n if (b == 0 && brightnessFactor > 1.0) {\n b = 0.05;\n }\n var h = (((hsb[0] + hueShift) % 360) + 360) % 360;\n var s = Math.max(Math.min(hsb[1] * saturationFactor, 1.0), 0.0);\n b = Math.max(Math.min(b * brightnessFactor, 1.0), 0.0);\n var a = Math.max(Math.min(this.a * opacityFactor, 1.0), 0.0);\n var rgba = Color.HSBtoRGB(h, s, b);\n rgba.push(a);\n return Color.fromArray(rgba);\n };\n Color.prototype.brighter = function () {\n return this.derive(0, 1.0, 1.0 / 0.7, 1.0);\n };\n Color.prototype.darker = function () {\n return this.derive(0, 1.0, 0.7, 1.0);\n };\n // See https://drafts.csswg.org/css-color/#hex-notation\n Color.hexRe = /\\s*#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})?\\s*$/;\n Color.shortHexRe = /\\s*#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])?\\s*$/;\n Color.rgbRe = /\\s*rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)\\s*/;\n Color.rgbaRe = /\\s*rgba\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*([.\\d]+)\\)\\s*/;\n /**\n * CSS Color Module Level 4:\n * https://drafts.csswg.org/css-color/#named-colors\n */\n Color.nameToHex = Object.freeze({\n aliceblue: '#F0F8FF',\n antiquewhite: '#FAEBD7',\n aqua: '#00FFFF',\n aquamarine: '#7FFFD4',\n azure: '#F0FFFF',\n beige: '#F5F5DC',\n bisque: '#FFE4C4',\n black: '#000000',\n blanchedalmond: '#FFEBCD',\n blue: '#0000FF',\n blueviolet: '#8A2BE2',\n brown: '#A52A2A',\n burlywood: '#DEB887',\n cadetblue: '#5F9EA0',\n chartreuse: '#7FFF00',\n chocolate: '#D2691E',\n coral: '#FF7F50',\n cornflowerblue: '#6495ED',\n cornsilk: '#FFF8DC',\n crimson: '#DC143C',\n cyan: '#00FFFF',\n darkblue: '#00008B',\n darkcyan: '#008B8B',\n darkgoldenrod: '#B8860B',\n darkgray: '#A9A9A9',\n darkgreen: '#006400',\n darkgrey: '#A9A9A9',\n darkkhaki: '#BDB76B',\n darkmagenta: '#8B008B',\n darkolivegreen: '#556B2F',\n darkorange: '#FF8C00',\n darkorchid: '#9932CC',\n darkred: '#8B0000',\n darksalmon: '#E9967A',\n darkseagreen: '#8FBC8F',\n darkslateblue: '#483D8B',\n darkslategray: '#2F4F4F',\n darkslategrey: '#2F4F4F',\n darkturquoise: '#00CED1',\n darkviolet: '#9400D3',\n deeppink: '#FF1493',\n deepskyblue: '#00BFFF',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1E90FF',\n firebrick: '#B22222',\n floralwhite: '#FFFAF0',\n forestgreen: '#228B22',\n fuchsia: '#FF00FF',\n gainsboro: '#DCDCDC',\n ghostwhite: '#F8F8FF',\n gold: '#FFD700',\n goldenrod: '#DAA520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#ADFF2F',\n grey: '#808080',\n honeydew: '#F0FFF0',\n hotpink: '#FF69B4',\n indianred: '#CD5C5C',\n indigo: '#4B0082',\n ivory: '#FFFFF0',\n khaki: '#F0E68C',\n lavender: '#E6E6FA',\n lavenderblush: '#FFF0F5',\n lawngreen: '#7CFC00',\n lemonchiffon: '#FFFACD',\n lightblue: '#ADD8E6',\n lightcoral: '#F08080',\n lightcyan: '#E0FFFF',\n lightgoldenrodyellow: '#FAFAD2',\n lightgray: '#D3D3D3',\n lightgreen: '#90EE90',\n lightgrey: '#D3D3D3',\n lightpink: '#FFB6C1',\n lightsalmon: '#FFA07A',\n lightseagreen: '#20B2AA',\n lightskyblue: '#87CEFA',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#B0C4DE',\n lightyellow: '#FFFFE0',\n lime: '#00FF00',\n limegreen: '#32CD32',\n linen: '#FAF0E6',\n magenta: '#FF00FF',\n maroon: '#800000',\n mediumaquamarine: '#66CDAA',\n mediumblue: '#0000CD',\n mediumorchid: '#BA55D3',\n mediumpurple: '#9370DB',\n mediumseagreen: '#3CB371',\n mediumslateblue: '#7B68EE',\n mediumspringgreen: '#00FA9A',\n mediumturquoise: '#48D1CC',\n mediumvioletred: '#C71585',\n midnightblue: '#191970',\n mintcream: '#F5FFFA',\n mistyrose: '#FFE4E1',\n moccasin: '#FFE4B5',\n navajowhite: '#FFDEAD',\n navy: '#000080',\n oldlace: '#FDF5E6',\n olive: '#808000',\n olivedrab: '#6B8E23',\n orange: '#FFA500',\n orangered: '#FF4500',\n orchid: '#DA70D6',\n palegoldenrod: '#EEE8AA',\n palegreen: '#98FB98',\n paleturquoise: '#AFEEEE',\n palevioletred: '#DB7093',\n papayawhip: '#FFEFD5',\n peachpuff: '#FFDAB9',\n peru: '#CD853F',\n pink: '#FFC0CB',\n plum: '#DDA0DD',\n powderblue: '#B0E0E6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#FF0000',\n rosybrown: '#BC8F8F',\n royalblue: '#4169E1',\n saddlebrown: '#8B4513',\n salmon: '#FA8072',\n sandybrown: '#F4A460',\n seagreen: '#2E8B57',\n seashell: '#FFF5EE',\n sienna: '#A0522D',\n silver: '#C0C0C0',\n skyblue: '#87CEEB',\n slateblue: '#6A5ACD',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#FFFAFA',\n springgreen: '#00FF7F',\n steelblue: '#4682B4',\n tan: '#D2B48C',\n teal: '#008080',\n thistle: '#D8BFD8',\n tomato: '#FF6347',\n turquoise: '#40E0D0',\n violet: '#EE82EE',\n wheat: '#F5DEB3',\n white: '#FFFFFF',\n whitesmoke: '#F5F5F5',\n yellow: '#FFFF00',\n yellowgreen: '#9ACD32'\n });\n return Color;\n}());\nexports.Color = Color;\n//# sourceMappingURL=color.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar padding_1 = require(\"./util/padding\");\nvar text_1 = require(\"./scene/shape/text\");\nvar node_1 = require(\"./scene/node\");\nvar observable_1 = require(\"./util/observable\");\nvar Caption = /** @class */ (function (_super) {\n __extends(Caption, _super);\n function Caption() {\n var _this = _super.call(this) || this;\n _this.node = new text_1.Text();\n _this.enabled = true;\n _this.padding = new padding_1.Padding(10);\n var node = _this.node;\n node.textAlign = 'center';\n node.textBaseline = 'top';\n node.pointerEvents = node_1.PointerEvents.None;\n return _this;\n }\n __decorate([\n observable_1.reactive(['change'])\n ], Caption.prototype, \"enabled\", void 0);\n __decorate([\n observable_1.reactive(['change'])\n ], Caption.prototype, \"padding\", void 0);\n __decorate([\n observable_1.reactive(['change'], 'node.text')\n ], Caption.prototype, \"text\", void 0);\n __decorate([\n observable_1.reactive(['change'], 'node.fontStyle')\n ], Caption.prototype, \"fontStyle\", void 0);\n __decorate([\n observable_1.reactive(['change'], 'node.fontWeight')\n ], Caption.prototype, \"fontWeight\", void 0);\n __decorate([\n observable_1.reactive(['change'], 'node.fontSize')\n ], Caption.prototype, \"fontSize\", void 0);\n __decorate([\n observable_1.reactive(['change'], 'node.fontFamily')\n ], Caption.prototype, \"fontFamily\", void 0);\n __decorate([\n observable_1.reactive(['change'], 'node.fill')\n ], Caption.prototype, \"color\", void 0);\n return Caption;\n}(observable_1.Observable));\nexports.Caption = Caption;\n//# sourceMappingURL=caption.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cartesianChart_1 = require(\"./cartesianChart\");\nvar array_1 = require(\"../util/array\");\nvar chartAxis_1 = require(\"./chartAxis\");\nvar GroupedCategoryChart = /** @class */ (function (_super) {\n __extends(GroupedCategoryChart, _super);\n function GroupedCategoryChart() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupedCategoryChart.prototype.updateAxes = function () {\n var _this = this;\n var axes = this.axes;\n axes.forEach(function (axis) {\n var _a;\n var direction = axis.direction, position = axis.position, boundSeries = axis.boundSeries;\n var domains = [];\n var isNumericX = undefined;\n boundSeries.filter(function (s) { return s.visible; }).forEach(function (series) {\n if (direction === chartAxis_1.ChartAxisDirection.X) {\n if (isNumericX === undefined) {\n // always add first X domain\n var domain_1 = series.getDomain(direction);\n domains.push(domain_1);\n isNumericX = typeof domain_1[0] === 'number';\n }\n else if (isNumericX) {\n // only add further X domains if the axis is numeric\n domains.push(series.getDomain(direction));\n }\n }\n else {\n domains.push(series.getDomain(direction));\n }\n });\n var domain = (_a = new Array()).concat.apply(_a, domains);\n axis.domain = array_1.numericExtent(domain) || domain;\n axis.update();\n var axisThickness = Math.floor(axis.computeBBox().width);\n switch (position) {\n case chartAxis_1.ChartAxisPosition.Left:\n _this.axisAutoPadding.left = axisThickness;\n break;\n case chartAxis_1.ChartAxisPosition.Right:\n _this.axisAutoPadding.right = axisThickness;\n break;\n case chartAxis_1.ChartAxisPosition.Bottom:\n _this.axisAutoPadding.bottom = axisThickness;\n break;\n case chartAxis_1.ChartAxisPosition.Top:\n _this.axisAutoPadding.top = axisThickness;\n break;\n }\n });\n };\n return GroupedCategoryChart;\n}(cartesianChart_1.CartesianChart));\nexports.GroupedCategoryChart = GroupedCategoryChart;\n//# sourceMappingURL=groupedCategoryChart.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar marker_1 = require(\"./marker\");\nvar Cross = /** @class */ (function (_super) {\n __extends(Cross, _super);\n function Cross() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Cross.prototype.updatePath = function () {\n var _a = this, x = _a.x, y = _a.y;\n var _b = this, path = _b.path, size = _b.size;\n var s = size / 4.2;\n path.clear();\n path.moveTo(x -= s, y);\n path.lineTo(x -= s, y -= s);\n path.lineTo(x += s, y -= s);\n path.lineTo(x += s, y += s);\n path.lineTo(x += s, y -= s);\n path.lineTo(x += s, y += s);\n path.lineTo(x -= s, y += s);\n path.lineTo(x += s, y += s);\n path.lineTo(x -= s, y += s);\n path.lineTo(x -= s, y -= s);\n path.lineTo(x -= s, y += s);\n path.lineTo(x -= s, y -= s);\n path.closePath();\n };\n Cross.className = 'Cross';\n return Cross;\n}(marker_1.Marker));\nexports.Cross = Cross;\n//# sourceMappingURL=cross.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar marker_1 = require(\"./marker\");\nvar Diamond = /** @class */ (function (_super) {\n __extends(Diamond, _super);\n function Diamond() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Diamond.prototype.updatePath = function () {\n var _a = this, x = _a.x, y = _a.y;\n var _b = this, path = _b.path, size = _b.size;\n var s = size / 2;\n path.clear();\n path.moveTo(x, y -= s);\n path.lineTo(x += s, y += s);\n path.lineTo(x -= s, y += s);\n path.lineTo(x -= s, y -= s);\n path.lineTo(x += s, y -= s);\n path.closePath();\n };\n Diamond.className = 'Diamond';\n return Diamond;\n}(marker_1.Marker));\nexports.Diamond = Diamond;\n//# sourceMappingURL=diamond.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar marker_1 = require(\"./marker\");\nvar Plus = /** @class */ (function (_super) {\n __extends(Plus, _super);\n function Plus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Plus.prototype.updatePath = function () {\n var _a = this, x = _a.x, y = _a.y;\n var _b = this, path = _b.path, size = _b.size;\n var s = size / 3;\n var hs = s / 2;\n path.clear();\n path.moveTo(x -= hs, y -= hs);\n path.lineTo(x, y -= s);\n path.lineTo(x += s, y);\n path.lineTo(x, y += s);\n path.lineTo(x += s, y);\n path.lineTo(x, y += s);\n path.lineTo(x -= s, y);\n path.lineTo(x, y += s);\n path.lineTo(x -= s, y);\n path.lineTo(x, y -= s);\n path.lineTo(x -= s, y);\n path.lineTo(x, y -= s);\n path.closePath();\n };\n Plus.className = 'Plus';\n return Plus;\n}(marker_1.Marker));\nexports.Plus = Plus;\n//# sourceMappingURL=plus.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar marker_1 = require(\"./marker\");\nvar Triangle = /** @class */ (function (_super) {\n __extends(Triangle, _super);\n function Triangle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Triangle.prototype.updatePath = function () {\n var _a = this, x = _a.x, y = _a.y;\n var _b = this, path = _b.path, size = _b.size;\n var s = size * 1.1;\n path.clear();\n path.moveTo(x, y -= s * 0.48);\n path.lineTo(x += s * 0.5, y += s * 0.87);\n path.lineTo(x -= s, y);\n path.closePath();\n };\n Triangle.className = 'Triangle';\n return Triangle;\n}(marker_1.Marker));\nexports.Triangle = Triangle;\n//# sourceMappingURL=triangle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction convertToMap(list) {\n var map = new Map();\n list.forEach(function (_a) {\n var key = _a[0], value = _a[1];\n return map.set(key, value);\n });\n return map;\n}\nexports.convertToMap = convertToMap;\n//# sourceMappingURL=map.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar continuousScale_1 = require(\"./continuousScale\");\nvar millisecond_1 = require(\"../util/time/millisecond\");\nvar second_1 = require(\"../util/time/second\");\nvar minute_1 = require(\"../util/time/minute\");\nvar hour_1 = require(\"../util/time/hour\");\nvar day_1 = require(\"../util/time/day\");\nvar week_1 = require(\"../util/time/week\");\nvar month_1 = require(\"../util/time/month\");\nvar year_1 = require(\"../util/time/year\");\nvar duration_1 = require(\"../util/time/duration\");\nvar bisect_1 = require(\"../util/bisect\");\nvar ticks_1 = require(\"../util/ticks\");\nvar defaultLocale_1 = require(\"../util/time/format/defaultLocale\");\nvar TimeScale = /** @class */ (function (_super) {\n __extends(TimeScale, _super);\n function TimeScale() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.year = year_1.default;\n _this.month = month_1.default;\n _this.week = week_1.default;\n _this.day = day_1.default;\n _this.hour = hour_1.default;\n _this.minute = minute_1.default;\n _this.second = second_1.default;\n _this.millisecond = millisecond_1.default;\n _this.format = defaultLocale_1.locale.format;\n /**\n * Array of default tick intervals in the following format:\n *\n * [\n * interval (unit of time),\n * number of units (step),\n * the length of that number of units in milliseconds\n * ]\n */\n _this.tickIntervals = [\n [_this.second, 1, duration_1.durationSecond],\n [_this.second, 5, 5 * duration_1.durationSecond],\n [_this.second, 15, 15 * duration_1.durationSecond],\n [_this.second, 30, 30 * duration_1.durationSecond],\n [_this.minute, 1, duration_1.durationMinute],\n [_this.minute, 5, 5 * duration_1.durationMinute],\n [_this.minute, 15, 15 * duration_1.durationMinute],\n [_this.minute, 30, 30 * duration_1.durationMinute],\n [_this.hour, 1, duration_1.durationHour],\n [_this.hour, 3, 3 * duration_1.durationHour],\n [_this.hour, 6, 6 * duration_1.durationHour],\n [_this.hour, 12, 12 * duration_1.durationHour],\n [_this.day, 1, duration_1.durationDay],\n [_this.day, 2, 2 * duration_1.durationDay],\n [_this.week, 1, duration_1.durationWeek],\n [_this.month, 1, duration_1.durationMonth],\n [_this.month, 3, 3 * duration_1.durationMonth],\n [_this.year, 1, duration_1.durationYear]\n ];\n _this.formatMillisecond = _this.format('.%L');\n _this.formatSecond = _this.format(':%S');\n _this.formatMinute = _this.format('%I:%M');\n _this.formatHour = _this.format('%I %p');\n _this.formatDay = _this.format('%a %d');\n _this.formatWeek = _this.format('%b %d');\n _this.formatMonth = _this.format('%B');\n _this.formatYear = _this.format('%Y');\n _this._domain = [new Date(2000, 0, 1), new Date(2000, 0, 2)];\n return _this;\n }\n TimeScale.prototype.defaultTickFormat = function (date) {\n return (this.second.floor(date) < date\n ? this.formatMillisecond\n : this.minute.floor(date) < date\n ? this.formatSecond\n : this.hour.floor(date) < date\n ? this.formatMinute\n : this.day.floor(date) < date\n ? this.formatHour\n : this.month.floor(date) < date\n ? (this.week.floor(date) < date ? this.formatDay : this.formatWeek)\n : this.year.floor(date) < date\n ? this.formatMonth\n : this.formatYear)(date);\n };\n /**\n *\n * @param interval If the `interval` is a number, it's interpreted as the desired tick count\n * and the method tries to pick an appropriate interval automatically, based on the extent of the domain.\n * If the `interval` is `undefined`, it defaults to `10`.\n * If the `interval` is a time interval, simply use it.\n * @param start The start time (timestamp).\n * @param stop The end time (timestamp).\n * @param step Number of intervals between ticks.\n */\n TimeScale.prototype.tickInterval = function (interval, start, stop, step) {\n var _a;\n if (interval === void 0) { interval = 10; }\n if (typeof interval === 'number') {\n var tickCount = interval;\n var tickIntervals = this.tickIntervals;\n var target = Math.abs(stop - start) / tickCount;\n var i = bisect_1.complexBisectRight(tickIntervals, target, function (interval) { return interval[2]; });\n if (i === tickIntervals.length) {\n step = ticks_1.tickStep(start / duration_1.durationYear, stop / duration_1.durationYear, tickCount);\n interval = this.year;\n }\n else if (i) {\n _a = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i], interval = _a[0], step = _a[1];\n }\n else {\n step = Math.max(ticks_1.tickStep(start, stop, interval), 1);\n interval = this.millisecond;\n }\n }\n return step == undefined ? interval : interval.every(step);\n };\n Object.defineProperty(TimeScale.prototype, \"domain\", {\n get: function () {\n return _super.prototype.getDomain.call(this).map(function (t) { return new Date(t); });\n },\n set: function (values) {\n _super.prototype.setDomain.call(this, Array.prototype.map.call(values, function (t) { return t instanceof Date ? +t : +new Date(+t); }));\n },\n enumerable: true,\n configurable: true\n });\n TimeScale.prototype.invert = function (y) {\n return new Date(_super.prototype.invert.call(this, y));\n };\n /**\n * Returns uniformly-spaced dates that represent the scale's domain.\n * @param interval The desired tick count or a time interval object.\n */\n TimeScale.prototype.ticks = function (interval) {\n if (interval === void 0) { interval = 10; }\n var d = _super.prototype.getDomain.call(this);\n var t0 = d[0];\n var t1 = d[d.length - 1];\n var reverse = t1 < t0;\n if (reverse) {\n var _ = t0;\n t0 = t1;\n t1 = _;\n }\n var t = this.tickInterval(interval, t0, t1);\n var i = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return reverse ? i.reverse() : i;\n };\n /**\n * Returns a time format function suitable for displaying tick values.\n * @param count Ignored. Used only to satisfy the {@link Scale} interface.\n * @param specifier If the specifier string is provided, this method is equivalent to\n * the {@link TimeLocaleObject.format} method.\n * If no specifier is provided, this method returns the default time format function.\n */\n TimeScale.prototype.tickFormat = function (count, specifier) {\n return specifier == undefined ? this.defaultTickFormat.bind(this) : this.format(specifier);\n };\n /**\n * Extends the domain so that it starts and ends on nice round values.\n * This method typically modifies the scale’s domain, and may only extend the bounds to the nearest round value.\n * @param interval\n */\n TimeScale.prototype.nice = function (interval) {\n if (interval === void 0) { interval = 10; }\n var d = _super.prototype.getDomain.call(this);\n var i = this.tickInterval(interval, d[0], d[d.length - 1]);\n if (i) {\n this.domain = this._nice(d, i);\n }\n };\n TimeScale.prototype._nice = function (domain, interval) {\n var _a, _b;\n domain = domain.slice();\n var i0 = 0;\n var i1 = domain.length - 1;\n var x0 = domain[i0];\n var x1 = domain[i1];\n if (x1 < x0) {\n _a = [i1, i0], i0 = _a[0], i1 = _a[1];\n _b = [x1, x0], x0 = _b[0], x1 = _b[1];\n }\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n };\n return TimeScale;\n}(continuousScale_1.default));\nexports.TimeScale = TimeScale;\n//# sourceMappingURL=timeScale.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar interval_1 = require(\"./interval\");\nfunction floor(date) {\n return date;\n}\nfunction offset(date, milliseconds) {\n date.setTime(date.getTime() + milliseconds);\n}\nfunction count(start, end) {\n return end.getTime() - start.getTime();\n}\nvar millisecond = new interval_1.CountableTimeInterval(floor, offset, count);\nexports.default = millisecond;\n//# sourceMappingURL=millisecond.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar interval_1 = require(\"./interval\");\nvar duration_1 = require(\"./duration\");\nfunction floor(date) {\n date.setTime(date.getTime() - date.getMilliseconds());\n}\nfunction offset(date, seconds) {\n date.setTime(date.getTime() + seconds * duration_1.durationSecond);\n}\nfunction count(start, end) {\n return (end.getTime() - start.getTime()) / duration_1.durationSecond;\n}\nvar second = new interval_1.CountableTimeInterval(floor, offset, count);\nexports.default = second;\n//# sourceMappingURL=second.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar interval_1 = require(\"./interval\");\nvar duration_1 = require(\"./duration\");\nfunction floor(date) {\n date.setTime(date.getTime() - date.getMilliseconds() - date.getSeconds() * duration_1.durationSecond);\n}\nfunction offset(date, minutes) {\n date.setTime(date.getTime() + minutes * duration_1.durationMinute);\n}\nfunction count(start, end) {\n return (end.getTime() - start.getTime()) / duration_1.durationMinute;\n}\nfunction field(date) {\n return date.getMinutes();\n}\nvar minute = new interval_1.CountableTimeInterval(floor, offset, count, field);\nexports.default = minute;\n//# sourceMappingURL=minute.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar interval_1 = require(\"./interval\");\nvar duration_1 = require(\"./duration\");\nfunction floor(date) {\n date.setTime(date.getTime() - date.getMilliseconds() - date.getSeconds() * duration_1.durationSecond - date.getMinutes() * duration_1.durationMinute);\n}\nfunction offset(date, hours) {\n date.setTime(date.getTime() + hours * duration_1.durationHour);\n}\nfunction count(start, end) {\n return (end.getTime() - start.getTime()) / duration_1.durationHour;\n}\nfunction field(date) {\n return date.getHours();\n}\nvar hour = new interval_1.CountableTimeInterval(floor, offset, count, field);\nexports.default = hour;\n//# sourceMappingURL=hour.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar interval_1 = require(\"./interval\");\nfunction floor(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}\nfunction offset(date, months) {\n date.setMonth(date.getMonth() + months);\n}\nfunction count(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}\nfunction field(date) {\n return date.getMonth();\n}\nvar month = new interval_1.CountableTimeInterval(floor, offset, count, field);\nexports.default = month;\n//# sourceMappingURL=month.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar locale_1 = require(\"./locale\");\nsetDefaultLocale({\n dateTime: '%x, %X',\n date: '%-m/%-d/%Y',\n time: '%-I:%M:%S %p',\n periods: ['AM', 'PM'],\n days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\n});\nfunction setDefaultLocale(definition) {\n return exports.locale = locale_1.default(definition);\n}\nexports.default = setDefaultLocale;\n//# sourceMappingURL=defaultLocale.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar day_1 = require(\"../day\");\nvar year_1 = require(\"../year\");\nvar week_1 = require(\"../week\");\nvar utcDay_1 = require(\"../utcDay\");\nvar utcYear_1 = require(\"../utcYear\");\nvar utcWeek_1 = require(\"../utcWeek\");\nfunction localDate(d) {\n // For JS Dates the [0, 100) interval is a time warp, a fast forward to the 20th century.\n // For example, -1 is -0001 BC, 0 is already 1900 AD.\n if (d.y >= 0 && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\nfunction utcDate(d) {\n if (d.y >= 0 && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n/**\n * Creates a lookup map for array of names to go from a name to index.\n * @param names\n */\nfunction formatLookup(names) {\n var map = {};\n for (var i = 0, n = names.length; i < n; i++) {\n map[names[i].toLowerCase()] = i;\n }\n return map;\n}\nfunction newYear(y) {\n return {\n y: y,\n m: 0,\n d: 1,\n H: 0,\n M: 0,\n S: 0,\n L: 0\n };\n}\nvar percentCharCode = 37;\nvar numberRe = /^\\s*\\d+/; // ignores next directive\nvar percentRe = /^%/;\nvar requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n/**\n * Prepends any character in the `requoteRe` set with a backslash.\n * @param s\n */\nexports.requote = function (s) { return s.replace(requoteRe, '\\\\$&'); }; // $& - matched substring\n/**\n * Returns a RegExp that matches any string that starts with any of the given names (case insensitive).\n * @param names\n */\nexports.formatRe = function (names) { return new RegExp('^(?:' + names.map(exports.requote).join('|') + ')', 'i'); };\n// A map of padding modifiers to padding strings. Default is `0`.\nvar pads = {\n '-': '',\n '_': ' ',\n '0': '0'\n};\nfunction pad(value, fill, width) {\n var sign = value < 0 ? '-' : '';\n var string = String(sign ? -value : value);\n var length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\nexports.pad = pad;\n/**\n * Create a new time-locale-based object which exposes time-formatting\n * methods for the specified locale definition.\n *\n * @param timeLocale A time locale definition.\n */\nfunction formatLocale(timeLocale) {\n var lDateTime = timeLocale.dateTime;\n var lDate = timeLocale.date;\n var lTime = timeLocale.time;\n var lPeriods = timeLocale.periods;\n var lWeekdays = timeLocale.days;\n var lShortWeekdays = timeLocale.shortDays;\n var lMonths = timeLocale.months;\n var lShortMonths = timeLocale.shortMonths;\n var periodRe = exports.formatRe(lPeriods);\n var periodLookup = formatLookup(lPeriods);\n var weekdayRe = exports.formatRe(lWeekdays);\n var weekdayLookup = formatLookup(lWeekdays);\n var shortWeekdayRe = exports.formatRe(lShortWeekdays);\n var shortWeekdayLookup = formatLookup(lShortWeekdays);\n var monthRe = exports.formatRe(lMonths);\n var monthLookup = formatLookup(lMonths);\n var shortMonthRe = exports.formatRe(lShortMonths);\n var shortMonthLookup = formatLookup(lShortMonths);\n var formats = {\n 'a': formatShortWeekday,\n 'A': formatWeekday,\n 'b': formatShortMonth,\n 'B': formatMonth,\n 'c': undefined,\n 'd': formatDayOfMonth,\n 'e': formatDayOfMonth,\n 'f': formatMicroseconds,\n 'H': formatHour24,\n 'I': formatHour12,\n 'j': formatDayOfYear,\n 'L': formatMilliseconds,\n 'm': formatMonthNumber,\n 'M': formatMinutes,\n 'p': formatPeriod,\n 'Q': formatUnixTimestamp,\n 's': formatUnixTimestampSeconds,\n 'S': formatSeconds,\n 'u': formatWeekdayNumberMonday,\n 'U': formatWeekNumberSunday,\n 'V': formatWeekNumberISO,\n 'w': formatWeekdayNumberSunday,\n 'W': formatWeekNumberMonday,\n 'x': undefined,\n 'X': undefined,\n 'y': formatYear,\n 'Y': formatFullYear,\n 'Z': formatZone,\n '%': formatLiteralPercent\n };\n var utcFormats = {\n 'a': formatUTCShortWeekday,\n 'A': formatUTCWeekday,\n 'b': formatUTCShortMonth,\n 'B': formatUTCMonth,\n 'c': undefined,\n 'd': formatUTCDayOfMonth,\n 'e': formatUTCDayOfMonth,\n 'f': formatUTCMicroseconds,\n 'H': formatUTCHour24,\n 'I': formatUTCHour12,\n 'j': formatUTCDayOfYear,\n 'L': formatUTCMilliseconds,\n 'm': formatUTCMonthNumber,\n 'M': formatUTCMinutes,\n 'p': formatUTCPeriod,\n 'Q': formatUnixTimestamp,\n 's': formatUnixTimestampSeconds,\n 'S': formatUTCSeconds,\n 'u': formatUTCWeekdayNumberMonday,\n 'U': formatUTCWeekNumberSunday,\n 'V': formatUTCWeekNumberISO,\n 'w': formatUTCWeekdayNumberSunday,\n 'W': formatUTCWeekNumberMonday,\n 'x': undefined,\n 'X': undefined,\n 'y': formatUTCYear,\n 'Y': formatUTCFullYear,\n 'Z': formatUTCZone,\n '%': formatLiteralPercent\n };\n var parses = {\n 'a': parseShortWeekday,\n 'A': parseWeekday,\n 'b': parseShortMonth,\n 'B': parseMonth,\n 'c': parseLocaleDateTime,\n 'd': parseDayOfMonth,\n 'e': parseDayOfMonth,\n 'f': parseMicroseconds,\n 'H': parseHour24,\n 'I': parseHour24,\n 'j': parseDayOfYear,\n 'L': parseMilliseconds,\n 'm': parseMonthNumber,\n 'M': parseMinutes,\n 'p': parsePeriod,\n 'Q': parseUnixTimestamp,\n 's': parseUnixTimestampSeconds,\n 'S': parseSeconds,\n 'u': parseWeekdayNumberMonday,\n 'U': parseWeekNumberSunday,\n 'V': parseWeekNumberISO,\n 'w': parseWeekdayNumberSunday,\n 'W': parseWeekNumberMonday,\n 'x': parseLocaleDate,\n 'X': parseLocaleTime,\n 'y': parseYear,\n 'Y': parseFullYear,\n 'Z': parseZone,\n '%': parseLiteralPercent\n };\n // Recursive definitions.\n formats.x = newFormat(lDate, formats);\n formats.X = newFormat(lTime, formats);\n formats.c = newFormat(lDateTime, formats);\n utcFormats.x = newFormat(lDate, utcFormats);\n utcFormats.X = newFormat(lTime, utcFormats);\n utcFormats.c = newFormat(lDateTime, utcFormats);\n function newParse(specifier, newDate) {\n return function (str) {\n var d = newYear(1900);\n var i = parseSpecifier(d, specifier, str += '', 0);\n if (i != str.length) {\n return undefined;\n }\n // If a UNIX timestamp is specified, return it.\n if ('Q' in d) {\n return new Date(d.Q);\n }\n // The am-pm flag is 0 for AM, and 1 for PM.\n if ('p' in d) {\n d.H = d.H % 12 + d.p * 12;\n }\n // Convert day-of-week and week-of-year to day-of-year.\n if ('V' in d) {\n if (d.V < 1 || d.V > 53) {\n return undefined;\n }\n if (!('w' in d)) {\n d.w = 1;\n }\n if ('Z' in d) {\n var week = utcDate(newYear(d.y));\n var day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcWeek_1.utcMonday.ceil(week) : utcWeek_1.utcMonday.floor(week);\n week = utcDay_1.default.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n }\n else {\n var week = newDate(newYear(d.y));\n var day = week.getDay();\n week = day > 4 || day === 0 ? week_1.monday.ceil(week) : week_1.monday.floor(week);\n week = day_1.default.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n }\n else if ('W' in d || 'U' in d) {\n if (!('w' in d)) {\n d.w = 'u' in d\n ? d.u % 7\n : 'W' in d ? 1 : 0;\n }\n var day = 'Z' in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = 'W' in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if ('Z' in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n /**\n * Creates a new function that formats the given Date or timestamp according to specifier.\n * @param specifier\n * @param formats\n */\n function newFormat(specifier, formats) {\n return function (date) {\n var string = [];\n var n = specifier.length;\n var i = -1;\n var j = 0;\n if (!(date instanceof Date)) {\n date = new Date(+date);\n }\n while (++i < n) {\n if (specifier.charCodeAt(i) === percentCharCode) {\n string.push(specifier.slice(j, i)); // copy the chunks of specifier with no directives as is\n var c = specifier.charAt(++i);\n var pad_1 = pads[c];\n if (pad_1 != undefined) { // if format directive has a padding modifier in front of it\n c = specifier.charAt(++i); // fetch the directive itself\n }\n else {\n pad_1 = c === 'e' ? ' ' : '0'; // use the default padding modifier\n }\n var format = formats[c];\n if (format) { // if the directive has a corresponding formatting function\n c = format(date, pad_1); // replace the directive with the formatted date\n }\n string.push(c);\n j = i + 1;\n }\n }\n string.push(specifier.slice(j, i));\n return string.join('');\n };\n }\n // Simultaneously walks over the specifier and the parsed string, populating the `d` map with parsed values.\n // The returned number is expected to equal the length of the parsed `string`, if parsing succeeded.\n function parseSpecifier(d, specifier, string, j) {\n // i - `specifier` string index\n // j - parsed `string` index\n var i = 0;\n var n = specifier.length;\n var m = string.length;\n while (i < n) {\n if (j >= m) {\n return -1;\n }\n var code = specifier.charCodeAt(i++);\n if (code === percentCharCode) {\n var char = specifier.charAt(i++);\n var parse = parses[(char in pads ? specifier.charAt(i++) : char)];\n if (!parse || ((j = parse(d, string, j)) < 0)) {\n return -1;\n }\n }\n else if (code != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n // ----------------------------- formats ----------------------------------\n function formatMicroseconds(date, fill) {\n return formatMilliseconds(date, fill) + '000';\n }\n function formatMilliseconds(date, fill) {\n return pad(date.getMilliseconds(), fill, 3);\n }\n function formatSeconds(date, fill) {\n return pad(date.getSeconds(), fill, 2);\n }\n function formatMinutes(date, fill) {\n return pad(date.getMinutes(), fill, 2);\n }\n function formatHour12(date, fill) {\n return pad(date.getHours() % 12 || 12, fill, 2);\n }\n function formatHour24(date, fill) {\n return pad(date.getHours(), fill, 2);\n }\n function formatPeriod(date) {\n return lPeriods[date.getHours() >= 12 ? 1 : 0];\n }\n function formatShortWeekday(date) {\n return lShortWeekdays[date.getDay()];\n }\n function formatWeekday(date) {\n return lWeekdays[date.getDay()];\n }\n function formatWeekdayNumberMonday(date) {\n var dayOfWeek = date.getDay();\n return dayOfWeek === 0 ? 7 : dayOfWeek;\n }\n function formatWeekNumberSunday(date, fill) {\n return pad(week_1.sunday.count(year_1.default.floor(date), date), fill, 2);\n }\n function formatWeekNumberISO(date, fill) {\n var day = date.getDay();\n date = (day >= 4 || day === 0) ? week_1.thursday.floor(date) : week_1.thursday.ceil(date);\n var yearStart = year_1.default.floor(date);\n return pad(week_1.thursday.count(yearStart, date) + (yearStart.getDay() === 4 ? 1 : 0), fill, 2);\n }\n function formatWeekdayNumberSunday(date) {\n return date.getDay();\n }\n function formatWeekNumberMonday(date, fill) {\n return pad(week_1.monday.count(year_1.default.floor(date), date), fill, 2);\n }\n function formatDayOfMonth(date, fill) {\n return pad(date.getDate(), fill, 2);\n }\n function formatDayOfYear(date, fill) {\n return pad(1 + day_1.default.count(year_1.default.floor(date), date), fill, 3);\n }\n function formatShortMonth(date) {\n return lShortMonths[date.getMonth()];\n }\n function formatMonth(date) {\n return lMonths[date.getMonth()];\n }\n function formatMonthNumber(date, fill) {\n return pad(date.getMonth() + 1, fill, 2);\n }\n function formatYear(date, fill) {\n return pad(date.getFullYear() % 100, fill, 2);\n }\n function formatFullYear(date, fill) {\n return pad(date.getFullYear() % 10000, fill, 4);\n }\n function formatZone(date) {\n var z = date.getTimezoneOffset();\n return (z > 0 ? '-' : (z *= -1, '+')) + pad(Math.floor(z / 60), '0', 2) + pad(z % 60, '0', 2);\n }\n // -------------------------- UTC formats -----------------------------------\n function formatUTCMicroseconds(date, fill) {\n return formatUTCMilliseconds(date, fill) + '000';\n }\n function formatUTCMilliseconds(date, fill) {\n return pad(date.getUTCMilliseconds(), fill, 3);\n }\n function formatUTCSeconds(date, fill) {\n return pad(date.getUTCSeconds(), fill, 2);\n }\n function formatUTCMinutes(date, fill) {\n return pad(date.getUTCMinutes(), fill, 2);\n }\n function formatUTCHour12(date, fill) {\n return pad(date.getUTCHours() % 12 || 12, fill, 2);\n }\n function formatUTCHour24(date, fill) {\n return pad(date.getUTCHours(), fill, 2);\n }\n function formatUTCPeriod(date) {\n return lPeriods[date.getUTCHours() >= 12 ? 1 : 0];\n }\n function formatUTCDayOfMonth(date, fill) {\n return pad(date.getUTCDate(), fill, 2);\n }\n function formatUTCDayOfYear(date, fill) {\n return pad(1 + utcDay_1.default.count(utcYear_1.default.floor(date), date), fill, 3);\n }\n function formatUTCMonthNumber(date, fill) {\n return pad(date.getUTCMonth() + 1, fill, 2);\n }\n function formatUTCShortMonth(date) {\n return lShortMonths[date.getUTCMonth()];\n }\n function formatUTCMonth(date) {\n return lMonths[date.getUTCMonth()];\n }\n function formatUTCShortWeekday(date) {\n return lShortWeekdays[date.getUTCDay()];\n }\n function formatUTCWeekday(date) {\n return lWeekdays[date.getUTCDay()];\n }\n function formatUTCWeekdayNumberMonday(date) {\n var dayOfWeek = date.getUTCDay();\n return dayOfWeek === 0 ? 7 : dayOfWeek;\n }\n function formatUTCWeekNumberSunday(date, fill) {\n return pad(utcWeek_1.default.count(utcYear_1.default.floor(date), date), fill, 2);\n }\n function formatUTCWeekNumberISO(date, fill) {\n var day = date.getUTCDay();\n date = (day >= 4 || day === 0) ? utcWeek_1.utcThursday.floor(date) : utcWeek_1.utcThursday.ceil(date);\n var yearStart = utcYear_1.default.floor(date);\n return pad(utcWeek_1.utcThursday.count(yearStart, date) + (yearStart.getUTCDay() === 4 ? 1 : 0), fill, 4);\n }\n function formatUTCWeekdayNumberSunday(date) {\n return date.getUTCDay();\n }\n function formatUTCWeekNumberMonday(date, fill) {\n return pad(utcWeek_1.utcMonday.count(utcYear_1.default.floor(date), date), fill, 2);\n }\n function formatUTCYear(date, fill) {\n return pad(date.getUTCFullYear() % 100, fill, 2);\n }\n function formatUTCFullYear(date, fill) {\n return pad(date.getUTCFullYear() % 10000, fill, 4);\n }\n function formatUTCZone() {\n return '+0000';\n }\n function formatLiteralPercent(date) {\n return '%';\n }\n function formatUnixTimestamp(date) {\n return date.getTime();\n }\n function formatUnixTimestampSeconds(date) {\n return Math.floor(date.getTime() / 1000);\n }\n // ------------------------------- parsers ------------------------------------\n function parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(parseFloat(n[0]) / 1000), i + n[0].length) : -1;\n }\n function parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n }\n function parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n }\n function parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n }\n function parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n }\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n }\n function parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n }\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n }\n function parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n }\n function parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n }\n function parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n }\n function parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n }\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = parseFloat(n[0]) - 1, i + n[0].length) : -1;\n }\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, lDateTime, string, i);\n }\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, lDate, string, i);\n }\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, lTime, string, i);\n }\n function parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n }\n function parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n }\n function parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n }\n function parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n }\n function parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || '00')), i + n[0].length) : -1;\n }\n function parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n return {\n format: function (specifier) {\n var f = newFormat(specifier, formats);\n f.toString = function () { return specifier; };\n return f;\n },\n parse: function (specifier) {\n var p = newParse(specifier, localDate);\n p.toString = function () { return specifier; };\n return p;\n },\n utcFormat: function (specifier) {\n var f = newFormat(specifier, utcFormats);\n f.toString = function () { return specifier; };\n return f;\n },\n utcParse: function (specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function () { return specifier; };\n return p;\n }\n };\n}\nexports.default = formatLocale;\n//# sourceMappingURL=locale.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar interval_1 = require(\"./interval\");\nvar duration_1 = require(\"./duration\");\nfunction floor(date) {\n date.setUTCHours(0, 0, 0, 0);\n}\nfunction offset(date, days) {\n date.setUTCDate(date.getUTCDate() + days);\n}\nfunction count(start, end) {\n return (end.getTime() - start.getTime()) / duration_1.durationDay;\n}\nfunction field(date) {\n return date.getUTCDate() - 1;\n}\nvar utcDay = new interval_1.CountableTimeInterval(floor, offset, count, field);\nexports.default = utcDay;\n//# sourceMappingURL=utcDay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar interval_1 = require(\"./interval\");\nfunction floor(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}\nfunction offset(date, years) {\n date.setUTCFullYear(date.getUTCFullYear() + years);\n}\nfunction count(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}\nfunction field(date) {\n return date.getUTCFullYear();\n}\nvar utcYear = new interval_1.CountableTimeInterval(floor, offset, count, field);\nexports.default = utcYear;\n//# sourceMappingURL=utcYear.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar duration_1 = require(\"./duration\");\nvar interval_1 = require(\"./interval\");\n// Set date to n-th day of the week.\nfunction weekday(n) {\n // Sets the `date` to the start of the `n`-th day of the current week.\n // n == 0 is Sunday.\n function floor(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - n) % 7);\n date.setHours(0, 0, 0, 0); // h, m, s, ms\n }\n // Offset the date by the given number of weeks.\n function offset(date, weeks) {\n date.setUTCDate(date.getUTCDate() + weeks * 7);\n }\n // Count the number of weeks between teh start and end dates.\n function count(start, end) {\n return (end.getTime() - start.getTime()) / duration_1.durationWeek;\n }\n return new interval_1.CountableTimeInterval(floor, offset, count);\n}\nexports.utcSunday = weekday(0);\nexports.utcMonday = weekday(1);\nexports.utcTuesday = weekday(2);\nexports.utcWednesday = weekday(3);\nexports.utcThursday = weekday(4);\nexports.utcFriday = weekday(5);\nexports.utcSaturday = weekday(6);\nexports.default = exports.utcSunday;\n//# sourceMappingURL=utcWeek.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar shadowPanel_1 = require(\"./shadowPanel\");\nvar fontPanel_1 = require(\"../fontPanel\");\nvar calloutPanel_1 = require(\"./calloutPanel\");\nvar PieSeriesPanel = /** @class */ (function (_super) {\n __extends(PieSeriesPanel, _super);\n function PieSeriesPanel(chartController) {\n var _this = _super.call(this) || this;\n _this.activePanels = [];\n _this.chartController = chartController;\n return _this;\n }\n PieSeriesPanel.prototype.init = function () {\n this.setTemplate(PieSeriesPanel.TEMPLATE);\n this.initGroup();\n this.initSeriesTooltips();\n this.initSeriesStrokeWidth();\n this.initOpacity();\n this.initLabelPanel();\n this.initShadowPanel();\n };\n PieSeriesPanel.prototype.initGroup = function () {\n this.seriesGroup\n .setTitle(this.chartTranslator.translate(\"series\"))\n .toggleGroupExpand(false)\n .hideEnabledCheckbox(true);\n };\n PieSeriesPanel.prototype.initSeriesTooltips = function () {\n var _this = this;\n this.seriesTooltipsToggle\n .setLabel(this.chartTranslator.translate(\"tooltips\"))\n .setLabelAlignment(\"left\")\n .setLabelWidth(\"flex\")\n .setInputWidth(40)\n .setValue(this.getChartProxy().getSeriesOption(\"tooltip.enabled\") || false)\n .onValueChange(function (newValue) { return _this.getChartProxy().setSeriesOption(\"tooltip.enabled\", newValue); });\n };\n PieSeriesPanel.prototype.initSeriesStrokeWidth = function () {\n var _this = this;\n this.seriesStrokeWidthSlider\n .setLabel(this.chartTranslator.translate(\"strokeWidth\"))\n .setMaxValue(10)\n .setTextFieldWidth(45)\n .setValue(this.getChartProxy().getSeriesOption(\"stroke.width\"))\n .onValueChange(function (newValue) { return _this.getChartProxy().setSeriesOption(\"stroke.width\", newValue); });\n };\n PieSeriesPanel.prototype.initOpacity = function () {\n var _this = this;\n this.seriesLineOpacitySlider\n .setLabel(this.chartTranslator.translate(\"strokeOpacity\"))\n .setStep(0.05)\n .setMaxValue(1)\n .setTextFieldWidth(45)\n .setValue(this.getChartProxy().getSeriesOption(\"stroke.opacity\") || \"1\")\n .onValueChange(function (newValue) { return _this.getChartProxy().setSeriesOption(\"stroke.opacity\", newValue); });\n this.seriesFillOpacitySlider\n .setLabel(this.chartTranslator.translate(\"fillOpacity\"))\n .setStep(0.05)\n .setMaxValue(1)\n .setTextFieldWidth(45)\n .setValue(this.getChartProxy().getSeriesOption(\"fillOpacity\") || \"1\")\n .onValueChange(function (newValue) { return _this.getChartProxy().setSeriesOption(\"fillOpacity\", newValue); });\n };\n PieSeriesPanel.prototype.initLabelPanel = function () {\n var _this = this;\n var chartProxy = this.getChartProxy();\n var initialFont = {\n family: chartProxy.getSeriesOption(\"label.fontFamily\"),\n style: chartProxy.getSeriesOption(\"label.fontStyle\"),\n weight: chartProxy.getSeriesOption(\"label.fontWeight\"),\n size: chartProxy.getSeriesOption(\"label.fontSize\"),\n color: chartProxy.getSeriesOption(\"label.color\")\n };\n var setFont = function (font) {\n var chartProxy = _this.getChartProxy();\n if (font.family) {\n chartProxy.setSeriesOption(\"label.fontFamily\", font.family);\n }\n if (font.weight) {\n chartProxy.setSeriesOption(\"label.fontWeight\", font.weight);\n }\n if (font.style) {\n chartProxy.setSeriesOption(\"label.fontStyle\", font.style);\n }\n if (font.size) {\n chartProxy.setSeriesOption(\"label.fontSize\", font.size);\n }\n if (font.color) {\n chartProxy.setSeriesOption(\"label.color\", font.color);\n }\n };\n var params = {\n name: this.chartTranslator.translate('labels'),\n enabled: chartProxy.getSeriesOption(\"label.enabled\") || false,\n setEnabled: function (enabled) { return _this.getChartProxy().setSeriesOption(\"label.enabled\", enabled); },\n suppressEnabledCheckbox: false,\n initialFont: initialFont,\n setFont: setFont\n };\n var labelPanelComp = this.wireBean(new fontPanel_1.FontPanel(params));\n this.activePanels.push(labelPanelComp);\n var calloutPanelComp = this.wireBean(new calloutPanel_1.CalloutPanel(this.chartController));\n labelPanelComp.addCompToPanel(calloutPanelComp);\n this.activePanels.push(calloutPanelComp);\n this.seriesGroup.addItem(labelPanelComp);\n };\n PieSeriesPanel.prototype.initShadowPanel = function () {\n var shadowPanelComp = this.wireBean(new shadowPanel_1.ShadowPanel(this.chartController));\n this.seriesGroup.getGui().appendChild(shadowPanelComp.getGui());\n this.seriesGroup.addItem(shadowPanelComp);\n };\n PieSeriesPanel.prototype.destroyActivePanels = function () {\n this.activePanels.forEach(function (panel) {\n core_1._.removeFromParent(panel.getGui());\n panel.destroy();\n });\n };\n PieSeriesPanel.prototype.getChartProxy = function () {\n return this.chartController.getChartProxy();\n };\n PieSeriesPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n PieSeriesPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n \\n
\";\n __decorate([\n core_1.RefSelector('seriesGroup')\n ], PieSeriesPanel.prototype, \"seriesGroup\", void 0);\n __decorate([\n core_1.RefSelector('seriesTooltipsToggle')\n ], PieSeriesPanel.prototype, \"seriesTooltipsToggle\", void 0);\n __decorate([\n core_1.RefSelector('seriesStrokeWidthSlider')\n ], PieSeriesPanel.prototype, \"seriesStrokeWidthSlider\", void 0);\n __decorate([\n core_1.RefSelector('seriesLineOpacitySlider')\n ], PieSeriesPanel.prototype, \"seriesLineOpacitySlider\", void 0);\n __decorate([\n core_1.RefSelector('seriesFillOpacitySlider')\n ], PieSeriesPanel.prototype, \"seriesFillOpacitySlider\", void 0);\n __decorate([\n core_1.Autowired('chartTranslator')\n ], PieSeriesPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], PieSeriesPanel.prototype, \"init\", null);\n return PieSeriesPanel;\n}(core_1.Component));\nexports.PieSeriesPanel = PieSeriesPanel;\n//# sourceMappingURL=pieSeriesPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar CalloutPanel = /** @class */ (function (_super) {\n __extends(CalloutPanel, _super);\n function CalloutPanel(chartController) {\n var _this = _super.call(this) || this;\n _this.chartController = chartController;\n return _this;\n }\n CalloutPanel.prototype.init = function () {\n this.setTemplate(CalloutPanel.TEMPLATE);\n this.initCalloutOptions();\n };\n CalloutPanel.prototype.initCalloutOptions = function () {\n var _this = this;\n this.calloutGroup\n .setTitle(this.chartTranslator.translate(\"callout\"))\n .setEnabled(true)\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(true);\n var initInput = function (expression, input, labelKey, maxValue) {\n input.setLabel(_this.chartTranslator.translate(labelKey))\n .setValue(_this.chartController.getChartProxy().getSeriesOption(expression))\n .setMaxValue(maxValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartController.getChartProxy().setSeriesOption(expression, newValue); });\n };\n initInput(\"callout.length\", this.calloutLengthSlider, \"length\", 40);\n initInput(\"callout.strokeWidth\", this.calloutStrokeWidthSlider, \"strokeWidth\", 10);\n initInput(\"label.offset\", this.labelOffsetSlider, \"offset\", 30);\n };\n CalloutPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n
\";\n __decorate([\n core_1.RefSelector('calloutGroup')\n ], CalloutPanel.prototype, \"calloutGroup\", void 0);\n __decorate([\n core_1.RefSelector('calloutLengthSlider')\n ], CalloutPanel.prototype, \"calloutLengthSlider\", void 0);\n __decorate([\n core_1.RefSelector('calloutStrokeWidthSlider')\n ], CalloutPanel.prototype, \"calloutStrokeWidthSlider\", void 0);\n __decorate([\n core_1.RefSelector('labelOffsetSlider')\n ], CalloutPanel.prototype, \"labelOffsetSlider\", void 0);\n __decorate([\n core_1.Autowired('chartTranslator')\n ], CalloutPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], CalloutPanel.prototype, \"init\", null);\n return CalloutPanel;\n}(core_1.Component));\nexports.CalloutPanel = CalloutPanel;\n//# sourceMappingURL=calloutPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar paddingPanel_1 = require(\"./paddingPanel\");\nvar fontPanel_1 = require(\"../fontPanel\");\nvar backgroundPanel_1 = require(\"./backgroundPanel\");\nvar ChartPanel = /** @class */ (function (_super) {\n __extends(ChartPanel, _super);\n function ChartPanel(chartController) {\n var _this = _super.call(this) || this;\n _this.activePanels = [];\n _this.chartController = chartController;\n return _this;\n }\n ChartPanel.prototype.init = function () {\n this.setTemplate(ChartPanel.TEMPLATE);\n this.initGroup();\n this.initTitles();\n this.initPaddingPanel();\n this.initBackgroundPanel();\n };\n ChartPanel.prototype.initGroup = function () {\n this.chartGroup\n .setTitle(this.chartTranslator.translate('chart'))\n .toggleGroupExpand(false)\n .hideEnabledCheckbox(true);\n };\n ChartPanel.prototype.initTitles = function () {\n var _this = this;\n var chartProxy = this.chartController.getChartProxy();\n var title = chartProxy.getChartOption('title');\n var text = title && title.text ? title.text : '';\n var setFont = function (font) {\n var chartProxy = _this.chartController.getChartProxy();\n if (font.family) {\n chartProxy.setTitleOption('fontFamily', font.family);\n }\n if (font.weight) {\n chartProxy.setTitleOption('fontWeight', font.weight);\n }\n if (font.style) {\n chartProxy.setTitleOption('fontStyle', font.style);\n }\n if (font.size) {\n chartProxy.setTitleOption('fontSize', font.size);\n }\n if (font.color) {\n chartProxy.setTitleOption('color', font.color);\n }\n };\n var initialFont = {\n family: title ? chartProxy.getChartOption('title.fontFamily') : 'Verdana, sans-serif',\n style: title ? chartProxy.getChartOption('title.fontStyle') : undefined,\n weight: title ? chartProxy.getChartOption('title.fontWeight') : undefined,\n size: title ? chartProxy.getChartOption('title.fontSize') : 22,\n color: title ? chartProxy.getChartOption('title.color') : 'black'\n };\n if (!title) {\n setFont(initialFont);\n }\n this.titleInput\n .setLabel(this.chartTranslator.translate('title'))\n .setLabelAlignment('top')\n .setLabelWidth('flex')\n .setValue(text)\n .onValueChange(function (value) {\n _this.chartController.getChartProxy().setTitleOption('text', value);\n // only show font panel when title exists\n fontPanelComp.setEnabled(core_1._.exists(value));\n });\n var params = {\n name: this.chartTranslator.translate('font'),\n enabled: true,\n suppressEnabledCheckbox: true,\n initialFont: initialFont,\n setFont: setFont,\n };\n var fontPanelComp = this.wireBean(new fontPanel_1.FontPanel(params));\n this.chartGroup.addItem(fontPanelComp);\n this.activePanels.push(fontPanelComp);\n fontPanelComp.setEnabled(core_1._.exists(text));\n };\n ChartPanel.prototype.initPaddingPanel = function () {\n var paddingPanelComp = this.wireBean(new paddingPanel_1.PaddingPanel(this.chartController));\n this.chartGroup.addItem(paddingPanelComp);\n this.activePanels.push(paddingPanelComp);\n };\n ChartPanel.prototype.initBackgroundPanel = function () {\n var backgroundPanelComp = this.wireBean(new backgroundPanel_1.BackgroundPanel(this.chartController));\n this.chartGroup.addItem(backgroundPanelComp);\n this.activePanels.push(backgroundPanelComp);\n };\n ChartPanel.prototype.destroyActivePanels = function () {\n this.activePanels.forEach(function (panel) {\n core_1._.removeFromParent(panel.getGui());\n panel.destroy();\n });\n };\n ChartPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n ChartPanel.TEMPLATE = \"
\\n \\n \\n \\n
\";\n __decorate([\n core_1.RefSelector('chartGroup')\n ], ChartPanel.prototype, \"chartGroup\", void 0);\n __decorate([\n core_1.RefSelector('titleInput')\n ], ChartPanel.prototype, \"titleInput\", void 0);\n __decorate([\n core_1.Autowired('chartTranslator')\n ], ChartPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ChartPanel.prototype, \"init\", null);\n return ChartPanel;\n}(core_1.Component));\nexports.ChartPanel = ChartPanel;\n//# sourceMappingURL=chartPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar PaddingPanel = /** @class */ (function (_super) {\n __extends(PaddingPanel, _super);\n function PaddingPanel(chartController) {\n var _this = _super.call(this) || this;\n _this.chartController = chartController;\n return _this;\n }\n PaddingPanel.prototype.init = function () {\n this.setTemplate(PaddingPanel.TEMPLATE);\n this.initGroup();\n this.initChartPaddingItems();\n };\n PaddingPanel.prototype.initGroup = function () {\n this.chartPaddingGroup\n .setTitle(this.chartTranslator.translate(\"padding\"))\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(true);\n };\n PaddingPanel.prototype.initChartPaddingItems = function () {\n var _this = this;\n var initInput = function (property, input) {\n input.setLabel(_this.chartTranslator.translate(property))\n .setValue(_this.chartController.getChartProxy().getChartPaddingOption(property))\n .setMaxValue(200)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartController.getChartProxy().setChartPaddingOption(property, newValue); });\n };\n initInput('top', this.paddingTopSlider);\n initInput('right', this.paddingRightSlider);\n initInput('bottom', this.paddingBottomSlider);\n initInput('left', this.paddingLeftSlider);\n };\n PaddingPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n \\n
\";\n __decorate([\n core_1.RefSelector('chartPaddingGroup')\n ], PaddingPanel.prototype, \"chartPaddingGroup\", void 0);\n __decorate([\n core_1.RefSelector('paddingTopSlider')\n ], PaddingPanel.prototype, \"paddingTopSlider\", void 0);\n __decorate([\n core_1.RefSelector('paddingRightSlider')\n ], PaddingPanel.prototype, \"paddingRightSlider\", void 0);\n __decorate([\n core_1.RefSelector('paddingBottomSlider')\n ], PaddingPanel.prototype, \"paddingBottomSlider\", void 0);\n __decorate([\n core_1.RefSelector('paddingLeftSlider')\n ], PaddingPanel.prototype, \"paddingLeftSlider\", void 0);\n __decorate([\n core_1.Autowired('chartTranslator')\n ], PaddingPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], PaddingPanel.prototype, \"init\", null);\n return PaddingPanel;\n}(core_1.Component));\nexports.PaddingPanel = PaddingPanel;\n//# sourceMappingURL=paddingPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar BackgroundPanel = /** @class */ (function (_super) {\n __extends(BackgroundPanel, _super);\n function BackgroundPanel(chartController) {\n var _this = _super.call(this) || this;\n _this.chartController = chartController;\n return _this;\n }\n BackgroundPanel.prototype.init = function () {\n this.setTemplate(BackgroundPanel.TEMPLATE);\n this.initGroup();\n this.initColorPicker();\n };\n BackgroundPanel.prototype.initGroup = function () {\n var _this = this;\n this.group\n .setTitle(this.chartTranslator.translate('background'))\n .setEnabled(this.chartController.getChartProxy().getChartOption('background.visible'))\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(false)\n .onEnableChange(function (enabled) { return _this.chartController.getChartProxy().setChartOption('background.visible', enabled); });\n };\n BackgroundPanel.prototype.initColorPicker = function () {\n var _this = this;\n this.colorPicker\n .setLabel(this.chartTranslator.translate('color'))\n .setLabelWidth('flex')\n .setInputWidth(45)\n .setValue(this.chartController.getChartProxy().getChartOption('background.fill'))\n .onValueChange(function (newColor) { return _this.chartController.getChartProxy().setChartOption('background.fill', newColor); });\n };\n BackgroundPanel.TEMPLATE = \"
\\n \\n \\n \\n
\";\n __decorate([\n core_1.RefSelector('chartBackgroundGroup')\n ], BackgroundPanel.prototype, \"group\", void 0);\n __decorate([\n core_1.RefSelector('colorPicker')\n ], BackgroundPanel.prototype, \"colorPicker\", void 0);\n __decorate([\n core_1.Autowired('chartTranslator')\n ], BackgroundPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], BackgroundPanel.prototype, \"init\", null);\n return BackgroundPanel;\n}(core_1.Component));\nexports.BackgroundPanel = BackgroundPanel;\n//# sourceMappingURL=backgroundPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar markersPanel_1 = require(\"./markersPanel\");\nvar shadowPanel_1 = require(\"./shadowPanel\");\nvar AreaSeriesPanel = /** @class */ (function (_super) {\n __extends(AreaSeriesPanel, _super);\n function AreaSeriesPanel(chartController) {\n var _this = _super.call(this) || this;\n _this.activePanels = [];\n _this.chartController = chartController;\n return _this;\n }\n AreaSeriesPanel.prototype.init = function () {\n this.setTemplate(AreaSeriesPanel.TEMPLATE);\n this.initSeriesGroup();\n this.initSeriesTooltips();\n this.initSeriesLineWidth();\n this.initOpacity();\n this.initMarkersPanel();\n this.initShadowPanel();\n };\n AreaSeriesPanel.prototype.initSeriesGroup = function () {\n this.seriesGroup\n .setTitle(this.chartTranslator.translate(\"series\"))\n .toggleGroupExpand(false)\n .hideEnabledCheckbox(true);\n };\n AreaSeriesPanel.prototype.initSeriesTooltips = function () {\n var _this = this;\n this.seriesTooltipsToggle\n .setLabel(this.chartTranslator.translate(\"tooltips\"))\n .setLabelAlignment(\"left\")\n .setLabelWidth(\"flex\")\n .setInputWidth(40)\n .setValue(this.getChartProxy().getSeriesOption(\"tooltip.enabled\") || false)\n .onValueChange(function (newValue) { return _this.getChartProxy().setSeriesOption(\"tooltip.enabled\", newValue); });\n };\n AreaSeriesPanel.prototype.initSeriesLineWidth = function () {\n var _this = this;\n this.seriesLineWidthSlider\n .setLabel(this.chartTranslator.translate(\"lineWidth\"))\n .setMaxValue(10)\n .setTextFieldWidth(45)\n .setValue(this.getChartProxy().getSeriesOption(\"stroke.width\"))\n .onValueChange(function (newValue) { return _this.getChartProxy().setSeriesOption(\"stroke.width\", newValue); });\n };\n AreaSeriesPanel.prototype.initOpacity = function () {\n var _this = this;\n this.seriesLineOpacitySlider\n .setLabel(this.chartTranslator.translate(\"strokeOpacity\"))\n .setStep(0.05)\n .setMaxValue(1)\n .setTextFieldWidth(45)\n .setValue(this.getChartProxy().getSeriesOption(\"stroke.opacity\") || \"1\")\n .onValueChange(function (newValue) { return _this.getChartProxy().setSeriesOption(\"stroke.opacity\", newValue); });\n this.seriesFillOpacitySlider\n .setLabel(this.chartTranslator.translate(\"fillOpacity\"))\n .setStep(0.05)\n .setMaxValue(1)\n .setTextFieldWidth(45)\n .setValue(this.getChartProxy().getSeriesOption(\"fill.opacity\") || \"1\")\n .onValueChange(function (newValue) { return _this.getChartProxy().setSeriesOption(\"fill.opacity\", newValue); });\n };\n AreaSeriesPanel.prototype.initMarkersPanel = function () {\n var markersPanelComp = this.wireBean(new markersPanel_1.MarkersPanel(this.chartController));\n this.seriesGroup.addItem(markersPanelComp);\n this.activePanels.push(markersPanelComp);\n };\n AreaSeriesPanel.prototype.initShadowPanel = function () {\n var shadowPanelComp = this.wireBean(new shadowPanel_1.ShadowPanel(this.chartController));\n this.seriesGroup.addItem(shadowPanelComp);\n this.activePanels.push(shadowPanelComp);\n };\n AreaSeriesPanel.prototype.destroyActivePanels = function () {\n this.activePanels.forEach(function (panel) {\n core_1._.removeFromParent(panel.getGui());\n panel.destroy();\n });\n };\n AreaSeriesPanel.prototype.getChartProxy = function () {\n return this.chartController.getChartProxy();\n };\n AreaSeriesPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n AreaSeriesPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n \\n
\";\n __decorate([\n core_1.RefSelector('seriesGroup')\n ], AreaSeriesPanel.prototype, \"seriesGroup\", void 0);\n __decorate([\n core_1.RefSelector('seriesTooltipsToggle')\n ], AreaSeriesPanel.prototype, \"seriesTooltipsToggle\", void 0);\n __decorate([\n core_1.RefSelector('seriesLineWidthSlider')\n ], AreaSeriesPanel.prototype, \"seriesLineWidthSlider\", void 0);\n __decorate([\n core_1.RefSelector('seriesLineOpacitySlider')\n ], AreaSeriesPanel.prototype, \"seriesLineOpacitySlider\", void 0);\n __decorate([\n core_1.RefSelector('seriesFillOpacitySlider')\n ], AreaSeriesPanel.prototype, \"seriesFillOpacitySlider\", void 0);\n __decorate([\n core_1.Autowired('chartTranslator')\n ], AreaSeriesPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], AreaSeriesPanel.prototype, \"init\", null);\n return AreaSeriesPanel;\n}(core_1.Component));\nexports.AreaSeriesPanel = AreaSeriesPanel;\n//# sourceMappingURL=areaSeriesPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar markersPanel_1 = require(\"./markersPanel\");\nvar ScatterSeriesPanel = /** @class */ (function (_super) {\n __extends(ScatterSeriesPanel, _super);\n function ScatterSeriesPanel(chartController) {\n var _this = _super.call(this) || this;\n _this.activePanels = [];\n _this.chartController = chartController;\n return _this;\n }\n ScatterSeriesPanel.prototype.init = function () {\n this.setTemplate(ScatterSeriesPanel.TEMPLATE);\n this.initSeriesGroup();\n this.initSeriesTooltips();\n this.initMarkersPanel();\n };\n ScatterSeriesPanel.prototype.initSeriesGroup = function () {\n this.seriesGroup\n .setTitle(this.chartTranslator.translate(\"series\"))\n .toggleGroupExpand(false)\n .hideEnabledCheckbox(true);\n };\n ScatterSeriesPanel.prototype.initSeriesTooltips = function () {\n var _this = this;\n this.seriesTooltipsToggle\n .setLabel(this.chartTranslator.translate(\"tooltips\"))\n .setLabelAlignment(\"left\")\n .setLabelWidth(\"flex\")\n .setInputWidth(40)\n .setValue(this.getChartProxy().getSeriesOption(\"tooltip.enabled\") || false)\n .onValueChange(function (newValue) { return _this.getChartProxy().setSeriesOption(\"tooltip.enabled\", newValue); });\n };\n ScatterSeriesPanel.prototype.initMarkersPanel = function () {\n var markersPanelComp = this.wireBean(new markersPanel_1.MarkersPanel(this.chartController));\n this.seriesGroup.addItem(markersPanelComp);\n this.activePanels.push(markersPanelComp);\n };\n ScatterSeriesPanel.prototype.destroyActivePanels = function () {\n this.activePanels.forEach(function (panel) {\n core_1._.removeFromParent(panel.getGui());\n panel.destroy();\n });\n };\n ScatterSeriesPanel.prototype.getChartProxy = function () {\n return this.chartController.getChartProxy();\n };\n ScatterSeriesPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n ScatterSeriesPanel.TEMPLATE = \"
\\n \\n \\n \\n
\";\n __decorate([\n core_1.RefSelector('seriesGroup')\n ], ScatterSeriesPanel.prototype, \"seriesGroup\", void 0);\n __decorate([\n core_1.RefSelector('seriesTooltipsToggle')\n ], ScatterSeriesPanel.prototype, \"seriesTooltipsToggle\", void 0);\n __decorate([\n core_1.Autowired('chartTranslator')\n ], ScatterSeriesPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ScatterSeriesPanel.prototype, \"init\", null);\n return ScatterSeriesPanel;\n}(core_1.Component));\nexports.ScatterSeriesPanel = ScatterSeriesPanel;\n//# sourceMappingURL=scatterSeriesPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar miniChartsContainer_1 = require(\"./miniChartsContainer\");\nvar chartController_1 = require(\"../../chartController\");\nvar ChartSettingsPanel = /** @class */ (function (_super) {\n __extends(ChartSettingsPanel, _super);\n function ChartSettingsPanel(chartController) {\n var _this = _super.call(this, ChartSettingsPanel.TEMPLATE) || this;\n _this.miniCharts = [];\n _this.cardItems = [];\n _this.chartController = chartController;\n return _this;\n }\n ChartSettingsPanel.prototype.postConstruct = function () {\n this.resetPalettes();\n this.ePrevBtn.insertAdjacentElement('afterbegin', core_1._.createIconNoSpan('smallLeft', this.gridOptionsWrapper));\n this.eNextBtn.insertAdjacentElement('afterbegin', core_1._.createIconNoSpan('smallRight', this.gridOptionsWrapper));\n this.addDestroyableEventListener(this.ePrevBtn, 'click', this.prev.bind(this));\n this.addDestroyableEventListener(this.eNextBtn, 'click', this.next.bind(this));\n this.addDestroyableEventListener(this.chartController, chartController_1.ChartController.EVENT_CHART_UPDATED, this.resetPalettes.bind(this));\n };\n ChartSettingsPanel.prototype.resetPalettes = function () {\n var _this = this;\n var palettes = this.chartController.getPalettes();\n if (palettes === this.palettes) {\n return;\n }\n this.palettes = palettes;\n this.activePalette = this.chartController.getPaletteName();\n if (!this.palettes.has(this.activePalette)) {\n this.activePalette = undefined;\n }\n this.paletteNames = [];\n this.cardItems = [];\n core_1._.clearElement(this.eCardSelector);\n this.destroyMiniCharts();\n this.palettes.forEach(function (palette, name) {\n if (!_this.activePalette) {\n _this.activePalette = name;\n }\n _this.paletteNames.push(name);\n var isActivePalette = _this.activePalette === name;\n var fills = palette.fills, strokes = palette.strokes;\n var miniChartsContainer = _this.wireBean(new miniChartsContainer_1.MiniChartsContainer(_this.chartController, fills, strokes));\n _this.miniCharts.push(miniChartsContainer);\n _this.eMiniChartsContainer.appendChild(miniChartsContainer.getGui());\n _this.addCardLink(name);\n if (isActivePalette) {\n miniChartsContainer.refreshSelected();\n }\n else {\n core_1._.addCssClass(miniChartsContainer.getGui(), 'ag-hidden');\n }\n });\n core_1._.addOrRemoveCssClass(this.eNavBar, 'ag-hidden', this.palettes.size <= 1);\n };\n ChartSettingsPanel.prototype.addCardLink = function (paletteName) {\n var _this = this;\n var link = document.createElement('div');\n core_1._.addCssClass(link, 'ag-nav-card-item');\n if (paletteName === this.activePalette) {\n core_1._.addCssClass(link, 'ag-selected');\n }\n this.addDestroyableEventListener(link, 'click', function () {\n var _a = _this, activePalette = _a.activePalette, isAnimating = _a.isAnimating, paletteNames = _a.paletteNames;\n if (paletteName === activePalette || isAnimating) {\n return;\n }\n _this.setActivePalette(paletteName, paletteNames.indexOf(paletteName) < paletteNames.indexOf(activePalette) ? 'left' : 'right');\n });\n this.eCardSelector.appendChild(link);\n this.cardItems.push(link);\n };\n ChartSettingsPanel.prototype.getPrev = function () {\n var prev = this.paletteNames.indexOf(this.activePalette) - 1;\n if (prev < 0) {\n prev = this.paletteNames.length - 1;\n }\n return prev;\n };\n ChartSettingsPanel.prototype.prev = function () {\n if (this.isAnimating) {\n return;\n }\n this.setActivePalette(this.paletteNames[this.getPrev()], 'left');\n };\n ChartSettingsPanel.prototype.getNext = function () {\n var next = this.paletteNames.indexOf(this.activePalette) + 1;\n if (next >= this.paletteNames.length) {\n next = 0;\n }\n return next;\n };\n ChartSettingsPanel.prototype.next = function () {\n if (this.isAnimating) {\n return;\n }\n this.setActivePalette(this.paletteNames[this.getNext()], 'right');\n };\n ChartSettingsPanel.prototype.setActivePalette = function (paletteName, animationDirection) {\n var _this = this;\n var paletteIndex = this.paletteNames.indexOf(paletteName);\n core_1._.radioCssClass(this.cardItems[paletteIndex], 'ag-selected');\n var currentPalette = this.miniCharts[this.paletteNames.indexOf(this.activePalette)];\n var currentGui = currentPalette.getGui();\n var futurePalette = this.miniCharts[paletteIndex];\n var futureGui = futurePalette.getGui();\n currentPalette.refreshSelected();\n futurePalette.refreshSelected();\n var multiplier = animationDirection === 'left' ? -1 : 1;\n var final = futureGui.style.left = (core_1._.getAbsoluteWidth(this.getGui()) * multiplier) + \"px\";\n core_1._.removeCssClass(futureGui, 'ag-hidden');\n core_1._.addCssClass(currentGui, 'ag-animating');\n core_1._.addCssClass(futureGui, 'ag-animating');\n this.activePalette = paletteName;\n this.chartController.setChartPaletteName(this.activePalette);\n this.isAnimating = true;\n window.setTimeout(function () {\n currentGui.style.left = parseFloat(final) * -1 + \"px\";\n futureGui.style.left = '0px';\n }, 50);\n window.setTimeout(function () {\n _this.isAnimating = false;\n core_1._.removeCssClass(currentGui, 'ag-animating');\n core_1._.removeCssClass(futureGui, 'ag-animating');\n core_1._.addCssClass(currentGui, 'ag-hidden');\n }, 500);\n };\n ChartSettingsPanel.prototype.destroyMiniCharts = function () {\n core_1._.clearElement(this.eMiniChartsContainer);\n if (this.miniCharts) {\n this.miniCharts.forEach(function (c) { return c.destroy(); });\n }\n this.miniCharts = [];\n };\n ChartSettingsPanel.prototype.destroy = function () {\n this.destroyMiniCharts();\n _super.prototype.destroy.call(this);\n };\n ChartSettingsPanel.TEMPLATE = \"
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\";\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], ChartSettingsPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.RefSelector('eMiniChartsContainer')\n ], ChartSettingsPanel.prototype, \"eMiniChartsContainer\", void 0);\n __decorate([\n core_1.RefSelector('eNavBar')\n ], ChartSettingsPanel.prototype, \"eNavBar\", void 0);\n __decorate([\n core_1.RefSelector('eCardSelector')\n ], ChartSettingsPanel.prototype, \"eCardSelector\", void 0);\n __decorate([\n core_1.RefSelector('ePrevBtn')\n ], ChartSettingsPanel.prototype, \"ePrevBtn\", void 0);\n __decorate([\n core_1.RefSelector('eNextBtn')\n ], ChartSettingsPanel.prototype, \"eNextBtn\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ChartSettingsPanel.prototype, \"postConstruct\", null);\n __decorate([\n core_1.PreDestroy\n ], ChartSettingsPanel.prototype, \"destroy\", null);\n return ChartSettingsPanel;\n}(core_1.Component));\nexports.ChartSettingsPanel = ChartSettingsPanel;\n//# sourceMappingURL=chartSettingsPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar miniCharts_1 = require(\"./miniCharts\");\nvar MiniChartsContainer = /** @class */ (function (_super) {\n __extends(MiniChartsContainer, _super);\n function MiniChartsContainer(chartController, fills, strokes) {\n var _this = _super.call(this, MiniChartsContainer.TEMPLATE) || this;\n _this.wrappers = {};\n _this.chartController = chartController;\n _this.fills = fills;\n _this.strokes = strokes;\n return _this;\n }\n MiniChartsContainer.prototype.init = function () {\n var _this = this;\n var chartGroups = {\n columnGroup: [\n miniCharts_1.MiniColumn,\n miniCharts_1.MiniStackedColumn,\n miniCharts_1.MiniNormalizedColumn\n ],\n barGroup: [\n miniCharts_1.MiniBar,\n miniCharts_1.MiniStackedBar,\n miniCharts_1.MiniNormalizedBar\n ],\n pieGroup: [\n miniCharts_1.MiniPie,\n miniCharts_1.MiniDoughnut\n ],\n lineGroup: [\n miniCharts_1.MiniLine\n ],\n scatterGroup: [\n miniCharts_1.MiniScatter,\n miniCharts_1.MiniBubble\n ],\n areaGroup: [\n miniCharts_1.MiniArea,\n miniCharts_1.MiniStackedArea,\n miniCharts_1.MiniNormalizedArea\n ]\n };\n var eGui = this.getGui();\n Object.keys(chartGroups).forEach(function (group) {\n var chartGroup = chartGroups[group];\n var groupComponent = _this.wireBean(new core_1.AgGroupComponent({\n title: _this.chartTranslator.translate(group),\n suppressEnabledCheckbox: true,\n enabled: true,\n suppressOpenCloseIcons: true\n }));\n chartGroup.forEach(function (MiniClass) {\n var miniWrapper = document.createElement('div');\n core_1._.addCssClass(miniWrapper, 'ag-chart-mini-thumbnail');\n _this.addDestroyableEventListener(miniWrapper, 'click', function () {\n _this.chartController.setChartType(MiniClass.chartType);\n _this.refreshSelected();\n });\n _this.wrappers[MiniClass.chartType] = miniWrapper;\n _this.wireBean(new MiniClass(miniWrapper, _this.fills, _this.strokes));\n groupComponent.addItem(miniWrapper);\n });\n eGui.appendChild(groupComponent.getGui());\n });\n this.refreshSelected();\n };\n MiniChartsContainer.prototype.refreshSelected = function () {\n var type = this.chartController.getChartType();\n for (var wrapper in this.wrappers) {\n core_1._.addOrRemoveCssClass(this.wrappers[wrapper], 'ag-selected', wrapper === type);\n }\n };\n MiniChartsContainer.TEMPLATE = '
';\n __decorate([\n core_1.Autowired('chartTranslator')\n ], MiniChartsContainer.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], MiniChartsContainer.prototype, \"init\", null);\n return MiniChartsContainer;\n}(core_1.Component));\nexports.MiniChartsContainer = MiniChartsContainer;\n//# sourceMappingURL=miniChartsContainer.js.map","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./miniColumn\"));\n__export(require(\"./miniStackedColumn\"));\n__export(require(\"./miniNormalizedColumn\"));\n__export(require(\"./miniBar\"));\n__export(require(\"./miniStackedBar\"));\n__export(require(\"./miniNormalizedBar\"));\n__export(require(\"./miniPie\"));\n__export(require(\"./miniDoughnut\"));\n__export(require(\"./miniLine\"));\n__export(require(\"./miniScatter\"));\n__export(require(\"./miniBubble\"));\n__export(require(\"./miniArea\"));\n__export(require(\"./miniStackedArea\"));\n__export(require(\"./miniNormalizedArea\"));\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar miniChartWithAxes_1 = require(\"./miniChartWithAxes\");\nvar rect_1 = require(\"../../../../../charts/scene/shape/rect\");\nvar bandScale_1 = require(\"../../../../../charts/scale/bandScale\");\nvar linearScale_1 = require(\"../../../../../charts/scale/linearScale\");\nvar MiniColumn = /** @class */ (function (_super) {\n __extends(MiniColumn, _super);\n function MiniColumn(parent, fills, strokes) {\n var _this = _super.call(this, parent, \"groupedColumnTooltip\") || this;\n var padding = _this.padding;\n var size = _this.size;\n var data = [2, 3, 4];\n var xScale = new bandScale_1.BandScale();\n xScale.domain = [0, 1, 2];\n xScale.range = [padding, size - padding];\n xScale.paddingInner = 0.3;\n xScale.paddingOuter = 0.3;\n var yScale = linearScale_1.default();\n yScale.domain = [0, 4];\n yScale.range = [size - padding, padding];\n var bottom = yScale.convert(0);\n var width = xScale.bandwidth;\n _this.bars = data.map(function (datum, i) {\n var top = yScale.convert(datum);\n var rect = new rect_1.Rect();\n rect.x = xScale.convert(i);\n rect.y = top;\n rect.width = width;\n rect.height = bottom - top;\n rect.strokeWidth = 1;\n rect.crisp = true;\n return rect;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.bars);\n return _this;\n }\n MiniColumn.prototype.updateColors = function (fills, strokes) {\n this.bars.forEach(function (bar, i) {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n };\n MiniColumn.chartType = core_1.ChartType.GroupedColumn;\n return MiniColumn;\n}(miniChartWithAxes_1.MiniChartWithAxes));\nexports.MiniColumn = MiniColumn;\n//# sourceMappingURL=miniColumn.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar miniStackedColumn_1 = require(\"./miniStackedColumn\");\nvar MiniNormalizedColumn = /** @class */ (function (_super) {\n __extends(MiniNormalizedColumn, _super);\n function MiniNormalizedColumn(parent, fills, strokes) {\n return _super.call(this, parent, fills, strokes, MiniNormalizedColumn.data, [0, 10], \"normalizedColumnTooltip\") || this;\n }\n MiniNormalizedColumn.chartType = core_1.ChartType.NormalizedColumn;\n MiniNormalizedColumn.data = [\n [10, 10, 10],\n [6, 7, 8],\n [2, 4, 6]\n ];\n return MiniNormalizedColumn;\n}(miniStackedColumn_1.MiniStackedColumn));\nexports.MiniNormalizedColumn = MiniNormalizedColumn;\n//# sourceMappingURL=miniNormalizedColumn.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar miniChartWithAxes_1 = require(\"./miniChartWithAxes\");\nvar rect_1 = require(\"../../../../../charts/scene/shape/rect\");\nvar linearScale_1 = require(\"../../../../../charts/scale/linearScale\");\nvar bandScale_1 = require(\"../../../../../charts/scale/bandScale\");\nvar MiniBar = /** @class */ (function (_super) {\n __extends(MiniBar, _super);\n function MiniBar(parent, fills, strokes) {\n var _this = _super.call(this, parent, \"groupedBarTooltip\") || this;\n var padding = _this.padding;\n var size = _this.size;\n var data = [2, 3, 4];\n var yScale = new bandScale_1.BandScale();\n yScale.domain = [0, 1, 2];\n yScale.range = [padding, size - padding];\n yScale.paddingInner = 0.3;\n yScale.paddingOuter = 0.3;\n var xScale = linearScale_1.default();\n xScale.domain = [0, 4];\n xScale.range = [size - padding, padding];\n var bottom = xScale.convert(0);\n var height = yScale.bandwidth;\n _this.bars = data.map(function (datum, i) {\n var rect = new rect_1.Rect();\n rect.x = padding;\n rect.y = yScale.convert(i);\n rect.width = bottom - xScale.convert(datum);\n rect.height = height;\n rect.strokeWidth = 1;\n rect.crisp = true;\n return rect;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.bars);\n return _this;\n }\n MiniBar.prototype.updateColors = function (fills, strokes) {\n this.bars.forEach(function (bar, i) {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n };\n MiniBar.chartType = core_1.ChartType.GroupedBar;\n return MiniBar;\n}(miniChartWithAxes_1.MiniChartWithAxes));\nexports.MiniBar = MiniBar;\n//# sourceMappingURL=miniBar.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar miniStackedBar_1 = require(\"./miniStackedBar\");\nvar MiniNormalizedBar = /** @class */ (function (_super) {\n __extends(MiniNormalizedBar, _super);\n function MiniNormalizedBar(parent, fills, strokes) {\n return _super.call(this, parent, fills, strokes, MiniNormalizedBar.data, [0, 10], \"normalizedBarTooltip\") || this;\n }\n MiniNormalizedBar.chartType = core_1.ChartType.NormalizedBar;\n MiniNormalizedBar.data = [\n [10, 10, 10],\n [6, 7, 8],\n [2, 4, 6]\n ];\n return MiniNormalizedBar;\n}(miniStackedBar_1.MiniStackedBar));\nexports.MiniNormalizedBar = MiniNormalizedBar;\n//# sourceMappingURL=miniNormalizedBar.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar miniDoughnut_1 = require(\"./miniDoughnut\");\nvar MiniPie = /** @class */ (function (_super) {\n __extends(MiniPie, _super);\n function MiniPie(parent, fills, strokes) {\n return _super.call(this, parent, fills, strokes, 0, \"pieTooltip\") || this;\n }\n MiniPie.chartType = core_1.ChartType.Pie;\n return MiniPie;\n}(miniDoughnut_1.MiniDoughnut));\nexports.MiniPie = MiniPie;\n//# sourceMappingURL=miniPie.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar miniChartWithAxes_1 = require(\"./miniChartWithAxes\");\nvar path_1 = require(\"../../../../../charts/scene/shape/path\");\nvar linearScale_1 = require(\"../../../../../charts/scale/linearScale\");\nvar clipRect_1 = require(\"../../../../../charts/scene/clipRect\");\nvar MiniLine = /** @class */ (function (_super) {\n __extends(MiniLine, _super);\n function MiniLine(parent, fills, strokes) {\n var _this = _super.call(this, parent, \"lineTooltip\") || this;\n var size = _this.size;\n var padding = _this.padding;\n var xScale = linearScale_1.default();\n xScale.domain = [0, 4];\n xScale.range = [padding, size - padding];\n var yScale = linearScale_1.default();\n yScale.domain = [0, 10];\n yScale.range = [size - padding, padding];\n var data = [\n [9, 7, 8, 5, 6],\n [5, 6, 3, 4, 1],\n [1, 3, 4, 8, 7]\n ];\n _this.lines = data.map(function (series) {\n var line = new path_1.Path();\n line.strokeWidth = 3;\n line.lineCap = \"round\";\n line.fill = undefined;\n series.forEach(function (datum, i) {\n line.path[i > 0 ? \"lineTo\" : \"moveTo\"](xScale.convert(i), yScale.convert(datum));\n });\n return line;\n });\n _this.updateColors(fills, strokes);\n var clipRect = new clipRect_1.ClipRect();\n clipRect.x = clipRect.y = padding;\n clipRect.width = clipRect.height = size - padding * 2;\n clipRect.append(_this.lines);\n _this.root.append(clipRect);\n return _this;\n }\n MiniLine.prototype.updateColors = function (fills, strokes) {\n this.lines.forEach(function (line, i) {\n line.stroke = fills[i];\n });\n };\n MiniLine.chartType = core_1.ChartType.Line;\n return MiniLine;\n}(miniChartWithAxes_1.MiniChartWithAxes));\nexports.MiniLine = MiniLine;\n//# sourceMappingURL=miniLine.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar miniChartWithAxes_1 = require(\"./miniChartWithAxes\");\nvar linearScale_1 = require(\"../../../../../charts/scale/linearScale\");\nvar clipRect_1 = require(\"../../../../../charts/scene/clipRect\");\nvar arc_1 = require(\"../../../../../charts/scene/shape/arc\");\nvar MiniScatter = /** @class */ (function (_super) {\n __extends(MiniScatter, _super);\n function MiniScatter(parent, fills, strokes) {\n var _this = _super.call(this, parent, \"scatterTooltip\") || this;\n var size = _this.size;\n var padding = _this.padding;\n // [x, y] pairs\n var data = [\n [[0.3, 3], [1.1, 0.9], [2, 0.4], [3.4, 2.4]],\n [[0, 0.3], [1, 2], [2.4, 1.4], [3, 0]]\n ];\n var xScale = linearScale_1.default();\n xScale.domain = [-0.5, 4];\n xScale.range = [padding * 2, size - padding];\n var yScale = linearScale_1.default();\n yScale.domain = [-0.5, 3.5];\n yScale.range = [size - padding, padding];\n var points = [];\n data.forEach(function (series) {\n series.forEach(function (_a) {\n var x = _a[0], y = _a[1];\n var arc = new arc_1.Arc();\n arc.strokeWidth = 1;\n arc.centerX = xScale.convert(x);\n arc.centerY = yScale.convert(y);\n arc.radiusX = arc.radiusY = 2.5;\n points.push(arc);\n });\n });\n _this.points = points;\n _this.updateColors(fills, strokes);\n var clipRect = new clipRect_1.ClipRect();\n clipRect.x = clipRect.y = padding;\n clipRect.width = clipRect.height = size - padding * 2;\n clipRect.append(_this.points);\n _this.root.append(clipRect);\n return _this;\n }\n MiniScatter.prototype.updateColors = function (fills, strokes) {\n this.points.forEach(function (line, i) {\n line.stroke = strokes[i % strokes.length];\n line.fill = fills[i % fills.length];\n });\n };\n MiniScatter.chartType = core_1.ChartType.Scatter;\n return MiniScatter;\n}(miniChartWithAxes_1.MiniChartWithAxes));\nexports.MiniScatter = MiniScatter;\n//# sourceMappingURL=miniScatter.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar miniChartWithAxes_1 = require(\"./miniChartWithAxes\");\nvar linearScale_1 = require(\"../../../../../charts/scale/linearScale\");\nvar clipRect_1 = require(\"../../../../../charts/scene/clipRect\");\nvar arc_1 = require(\"../../../../../charts/scene/shape/arc\");\nvar MiniBubble = /** @class */ (function (_super) {\n __extends(MiniBubble, _super);\n function MiniBubble(parent, fills, strokes) {\n var _this = _super.call(this, parent, \"bubbleTooltip\") || this;\n var size = _this.size;\n var padding = _this.padding;\n // [x, y, radius] triples\n var data = [\n [[0.1, 0.3, 5], [0.5, 0.4, 7], [0.2, 0.8, 7]], [[0.8, 0.7, 5], [0.7, 0.3, 9]]\n ];\n var xScale = linearScale_1.default();\n xScale.domain = [0, 1];\n xScale.range = [padding * 2, size - padding];\n var yScale = linearScale_1.default();\n yScale.domain = [0, 1];\n yScale.range = [size - padding, padding];\n var points = [];\n data.forEach(function (series) {\n series.forEach(function (_a) {\n var x = _a[0], y = _a[1], radius = _a[2];\n var arc = new arc_1.Arc();\n arc.strokeWidth = 1;\n arc.centerX = xScale.convert(x);\n arc.centerY = yScale.convert(y);\n arc.radiusX = arc.radiusY = radius;\n arc.fillOpacity = 0.7;\n points.push(arc);\n });\n });\n _this.points = points;\n _this.updateColors(fills, strokes);\n var clipRect = new clipRect_1.ClipRect();\n clipRect.x = padding;\n clipRect.y = padding;\n clipRect.width = size - padding * 2;\n clipRect.height = size - padding * 2;\n clipRect.append(_this.points);\n _this.root.append(clipRect);\n return _this;\n }\n MiniBubble.prototype.updateColors = function (fills, strokes) {\n this.points.forEach(function (line, i) {\n line.stroke = strokes[i % strokes.length];\n line.fill = fills[i % fills.length];\n });\n };\n MiniBubble.chartType = core_1.ChartType.Bubble;\n return MiniBubble;\n}(miniChartWithAxes_1.MiniChartWithAxes));\nexports.MiniBubble = MiniBubble;\n//# sourceMappingURL=miniBubble.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar miniChartWithAxes_1 = require(\"./miniChartWithAxes\");\nvar path_1 = require(\"../../../../../charts/scene/shape/path\");\nvar linearScale_1 = require(\"../../../../../charts/scale/linearScale\");\nvar bandScale_1 = require(\"../../../../../charts/scale/bandScale\");\nvar MiniArea = /** @class */ (function (_super) {\n __extends(MiniArea, _super);\n function MiniArea(parent, fills, strokes, data) {\n if (data === void 0) { data = MiniArea.data; }\n var _this = _super.call(this, parent, \"groupedAreaTooltip\") || this;\n var size = _this.size;\n var padding = _this.padding;\n var xScale = new bandScale_1.BandScale();\n xScale.domain = [0, 1, 2];\n xScale.paddingInner = 1;\n xScale.paddingOuter = 0;\n xScale.range = [padding + 0.5, size - padding - 0.5];\n var yScale = linearScale_1.default();\n yScale.domain = [0, 6];\n yScale.range = [size - padding + 0.5, padding];\n var xCount = data.length;\n var last = xCount * 2 - 1;\n var pathData = [];\n var bottomY = yScale.convert(0);\n data.forEach(function (datum, i) {\n var x = xScale.convert(i);\n datum.forEach(function (yDatum, j) {\n var y = yScale.convert(yDatum);\n var points = pathData[j] || (pathData[j] = []);\n points[i] = {\n x: x,\n y: y\n };\n points[last - i] = {\n x: x,\n y: bottomY\n };\n });\n });\n _this.areas = pathData.reverse().map(function (points) {\n var area = new path_1.Path();\n area.strokeWidth = 1;\n area.fillOpacity = 0.7;\n var path = area.path;\n path.clear();\n points.forEach(function (point, i) { return path[i > 0 ? \"lineTo\" : \"moveTo\"](point.x, point.y); });\n path.closePath();\n return area;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.areas);\n return _this;\n }\n MiniArea.prototype.updateColors = function (fills, strokes) {\n this.areas.forEach(function (area, i) {\n area.fill = fills[i];\n area.stroke = strokes[i];\n });\n };\n MiniArea.chartType = core_1.ChartType.Area;\n MiniArea.data = [\n [1, 3, 5],\n [2, 6, 4],\n [5, 3, 1]\n ];\n return MiniArea;\n}(miniChartWithAxes_1.MiniChartWithAxes));\nexports.MiniArea = MiniArea;\n//# sourceMappingURL=miniArea.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar miniStackedArea_1 = require(\"./miniStackedArea\");\nvar MiniNormalizedArea = /** @class */ (function (_super) {\n __extends(MiniNormalizedArea, _super);\n function MiniNormalizedArea(parent, fills, strokes, data) {\n if (data === void 0) { data = MiniNormalizedArea.data; }\n return _super.call(this, parent, fills, strokes, data, \"normalizedAreaTooltip\") || this;\n }\n MiniNormalizedArea.chartType = core_1.ChartType.NormalizedArea;\n MiniNormalizedArea.data = miniStackedArea_1.MiniStackedArea.data.map(function (stack) {\n var sum = stack.reduce(function (p, c) { return p + c; }, 0);\n return stack.map(function (v) { return v / sum * 16; });\n });\n return MiniNormalizedArea;\n}(miniStackedArea_1.MiniStackedArea));\nexports.MiniNormalizedArea = MiniNormalizedArea;\n//# sourceMappingURL=miniNormalizedArea.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar chartBuilder_1 = require(\"../../../../charts/chartBuilder\");\nvar cartesianChartProxy_1 = require(\"./cartesianChartProxy\");\nvar BarChartProxy = /** @class */ (function (_super) {\n __extends(BarChartProxy, _super);\n function BarChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.initChartOptions();\n _this.recreateChart();\n var barSeries = chartBuilder_1.ChartBuilder.createSeries(_this.getSeriesDefaults());\n if (barSeries) {\n barSeries.flipXY = !_this.isColumnChart();\n _this.chart.addSeries(barSeries);\n }\n return _this;\n }\n BarChartProxy.prototype.createChart = function (options) {\n var _a = this.chartProxyParams, grouping = _a.grouping, parentElement = _a.parentElement;\n var builderFunction;\n if (this.isColumnChart()) {\n builderFunction = grouping ? 'createGroupedColumnChart' : 'createColumnChart';\n }\n else {\n builderFunction = grouping ? 'createGroupedBarChart' : 'createBarChart';\n }\n return chartBuilder_1.ChartBuilder[builderFunction](parentElement, options);\n };\n BarChartProxy.prototype.update = function (params) {\n var chart = this.chart;\n var barSeries = chart.series[0];\n var _a = this.getPalette(), fills = _a.fills, strokes = _a.strokes;\n barSeries.data = this.transformData(params.data, params.category.id);\n barSeries.xKey = params.category.id;\n barSeries.xName = params.category.name;\n barSeries.yKeys = params.fields.map(function (f) { return f.colId; });\n barSeries.yNames = params.fields.map(function (f) { return f.displayName; });\n barSeries.fills = fills;\n barSeries.strokes = strokes;\n this.updateLabelRotation(params.category.id, !this.isColumnChart());\n };\n BarChartProxy.prototype.getDefaultOptions = function () {\n var isColumnChart = this.isColumnChart();\n var fontOptions = this.getDefaultFontOptions();\n var options = this.getDefaultCartesianChartOptions();\n options.xAxis.label.rotation = isColumnChart ? 335 : 0;\n options.yAxis.label.rotation = isColumnChart ? 0 : 335;\n options.seriesDefaults = __assign(__assign({}, options.seriesDefaults), { tooltip: {\n enabled: true,\n }, label: __assign(__assign({}, fontOptions), { enabled: false }), shadow: this.getDefaultDropShadowOptions() });\n return options;\n };\n BarChartProxy.prototype.isColumnChart = function () {\n return core_1._.includes([core_1.ChartType.GroupedColumn, core_1.ChartType.StackedColumn, core_1.ChartType.NormalizedColumn], this.chartType);\n };\n BarChartProxy.prototype.getSeriesDefaults = function () {\n var chartType = this.chartType;\n var isGrouped = chartType === core_1.ChartType.GroupedColumn || chartType === core_1.ChartType.GroupedBar;\n var isNormalized = chartType === core_1.ChartType.NormalizedColumn || chartType === core_1.ChartType.NormalizedBar;\n return __assign(__assign({}, this.chartOptions.seriesDefaults), { type: 'bar', grouped: isGrouped, normalizedTo: isNormalized ? 100 : undefined });\n };\n return BarChartProxy;\n}(cartesianChartProxy_1.CartesianChartProxy));\nexports.BarChartProxy = BarChartProxy;\n//# sourceMappingURL=barChartProxy.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar chartBuilder_1 = require(\"../../../../charts/chartBuilder\");\nvar categoryAxis_1 = require(\"../../../../charts/chart/axis/categoryAxis\");\nvar cartesianChartProxy_1 = require(\"./cartesianChartProxy\");\nvar chartAxis_1 = require(\"../../../../charts/chart/chartAxis\");\nvar AreaChartProxy = /** @class */ (function (_super) {\n __extends(AreaChartProxy, _super);\n function AreaChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.initChartOptions();\n _this.recreateChart();\n var areaSeries = chartBuilder_1.ChartBuilder.createSeries(_this.getSeriesDefaults());\n if (areaSeries) {\n _this.chart.addSeries(areaSeries);\n }\n return _this;\n }\n AreaChartProxy.prototype.createChart = function (options) {\n var _a = this.chartProxyParams, grouping = _a.grouping, parentElement = _a.parentElement;\n var chart = chartBuilder_1.ChartBuilder[grouping ? \"createGroupedAreaChart\" : \"createAreaChart\"](parentElement, options);\n chart.axes\n .filter(function (axis) { return axis.position === chartAxis_1.ChartAxisPosition.Bottom && axis instanceof categoryAxis_1.CategoryAxis; })\n .forEach(function (axis) {\n axis.scale.paddingInner = 1;\n axis.scale.paddingOuter = 0;\n });\n return chart;\n };\n AreaChartProxy.prototype.update = function (params) {\n if (this.chartType === core_1.ChartType.Area) {\n // area charts have multiple series\n this.updateAreaChart(params);\n }\n else {\n // stacked and normalized has a single series\n var areaSeries = this.chart.series[0];\n var _a = this.getPalette(), fills = _a.fills, strokes = _a.strokes;\n areaSeries.data = this.transformData(params.data, params.category.id);\n areaSeries.xKey = params.category.id;\n areaSeries.xName = params.category.name;\n areaSeries.yKeys = params.fields.map(function (f) { return f.colId; });\n areaSeries.yNames = params.fields.map(function (f) { return f.displayName; });\n areaSeries.fills = fills;\n areaSeries.strokes = strokes;\n }\n this.updateLabelRotation(params.category.id);\n };\n AreaChartProxy.prototype.updateAreaChart = function (params) {\n var _this = this;\n var chart = this.chart;\n if (params.fields.length === 0) {\n chart.removeAllSeries();\n return;\n }\n var fieldIds = params.fields.map(function (f) { return f.colId; });\n var _a = this.getPalette(), fills = _a.fills, strokes = _a.strokes;\n var existingSeriesById = chart.series.reduceRight(function (map, series, i) {\n var id = series.yKeys[0];\n if (fieldIds.indexOf(id) === i) {\n map.set(id, series);\n }\n else {\n chart.removeSeries(series);\n }\n return map;\n }, new Map());\n var data = this.transformData(params.data, params.category.id);\n var previousSeries = undefined;\n params.fields.forEach(function (f, index) {\n var areaSeries = existingSeriesById.get(f.colId);\n var fill = fills[index % fills.length];\n var stroke = strokes[index % strokes.length];\n if (areaSeries) {\n areaSeries.data = data;\n areaSeries.xKey = params.category.id;\n areaSeries.xName = params.category.name;\n areaSeries.yKeys = [f.colId];\n areaSeries.yNames = [f.displayName];\n areaSeries.fills = [fill];\n areaSeries.strokes = [stroke];\n }\n else {\n var seriesDefaults = _this.getSeriesDefaults();\n var options = __assign(__assign({}, seriesDefaults), { data: data, field: {\n xKey: params.category.id,\n xName: params.category.name,\n yKeys: [f.colId],\n yNames: [f.displayName],\n }, fill: __assign(__assign({}, seriesDefaults.fill), { colors: [fill] }), stroke: __assign(__assign({}, seriesDefaults.stroke), { colors: [stroke] }) });\n areaSeries = chartBuilder_1.ChartBuilder.createSeries(options);\n chart.addSeriesAfter(areaSeries, previousSeries);\n }\n previousSeries = areaSeries;\n });\n };\n AreaChartProxy.prototype.getDefaultOptions = function () {\n var options = this.getDefaultCartesianChartOptions();\n options.xAxis.label.rotation = 335;\n options.seriesDefaults = __assign(__assign({}, options.seriesDefaults), { fill: __assign(__assign({}, options.seriesDefaults.fill), { opacity: this.chartType === core_1.ChartType.Area ? 0.7 : 1 }), stroke: __assign(__assign({}, options.seriesDefaults.stroke), { width: 3 }), marker: {\n type: 'circle',\n enabled: true,\n size: 6,\n strokeWidth: 1,\n }, tooltip: {\n enabled: true,\n }, shadow: this.getDefaultDropShadowOptions() });\n return options;\n };\n AreaChartProxy.prototype.getSeriesDefaults = function () {\n return __assign(__assign({}, this.chartOptions.seriesDefaults), { type: 'area', normalizedTo: this.chartType === core_1.ChartType.NormalizedArea ? 100 : undefined });\n };\n return AreaChartProxy;\n}(cartesianChartProxy_1.CartesianChartProxy));\nexports.AreaChartProxy = AreaChartProxy;\n//# sourceMappingURL=areaChartProxy.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar chartBuilder_1 = require(\"../../../../charts/chartBuilder\");\nvar cartesianChartProxy_1 = require(\"./cartesianChartProxy\");\nvar timeAxis_1 = require(\"../../../../charts/chart/axis/timeAxis\");\nvar categoryAxis_1 = require(\"../../../../charts/chart/axis/categoryAxis\");\nvar typeChecker_1 = require(\"../../typeChecker\");\nvar LineChartProxy = /** @class */ (function (_super) {\n __extends(LineChartProxy, _super);\n function LineChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.initChartOptions();\n _this.recreateChart();\n return _this;\n }\n LineChartProxy.prototype.createChart = function (options) {\n var _a = this.chartProxyParams, grouping = _a.grouping, parentElement = _a.parentElement;\n return chartBuilder_1.ChartBuilder[grouping ? \"createGroupedLineChart\" : \"createLineChart\"](parentElement, options);\n };\n LineChartProxy.prototype.update = function (params) {\n var _this = this;\n if (params.fields.length === 0) {\n this.chart.removeAllSeries();\n return;\n }\n this.updateAxes(params.data[0], params.category.id);\n var chart = this.chart;\n var fieldIds = params.fields.map(function (f) { return f.colId; });\n var _a = this.getPalette(), fills = _a.fills, strokes = _a.strokes;\n var data = this.transformData(params.data, params.category.id);\n var existingSeriesById = chart.series.reduceRight(function (map, series, i) {\n var id = series.yKey;\n if (fieldIds.indexOf(id) === i) {\n map.set(id, series);\n }\n else {\n chart.removeSeries(series);\n }\n return map;\n }, new Map());\n var previousSeries = undefined;\n params.fields.forEach(function (f, index) {\n var lineSeries = existingSeriesById.get(f.colId);\n var fill = fills[index % fills.length];\n var stroke = strokes[index % strokes.length];\n if (lineSeries) {\n lineSeries.title = f.displayName;\n lineSeries.data = data;\n lineSeries.xKey = params.category.id;\n lineSeries.xName = params.category.name;\n lineSeries.yKey = f.colId;\n lineSeries.yName = f.displayName;\n lineSeries.fill = fill;\n lineSeries.stroke = fill; // this is deliberate, so that the line colours match the fills of other series\n }\n else {\n var seriesDefaults = _this.chartOptions.seriesDefaults;\n var options = __assign(__assign({}, seriesDefaults), { type: 'line', title: f.displayName, data: data, field: {\n xKey: params.category.id,\n xName: params.category.name,\n yKey: f.colId,\n yName: f.displayName,\n }, fill: __assign(__assign({}, seriesDefaults.fill), { color: fill }), stroke: __assign(__assign({}, seriesDefaults.stroke), { color: fill }), marker: __assign(__assign({}, seriesDefaults.marker), { stroke: stroke }) });\n lineSeries = chartBuilder_1.ChartBuilder.createSeries(options);\n chart.addSeriesAfter(lineSeries, previousSeries);\n }\n previousSeries = lineSeries;\n });\n this.updateLabelRotation(params.category.id);\n };\n LineChartProxy.prototype.updateAxes = function (testDatum, categoryKey) {\n var chartOptions = this.chartOptions;\n if (chartOptions.xAxis.type) {\n return;\n }\n var xAxis = this.chart.axes.filter(function (a) { return a.position === 'bottom'; })[0];\n if (!xAxis) {\n return;\n }\n var categoryIsDate = typeChecker_1.isDate(testDatum && testDatum[categoryKey]);\n if (categoryIsDate && !(xAxis instanceof timeAxis_1.TimeAxis)) {\n var options = __assign(__assign({}, this.chartOptions), { xAxis: __assign(__assign({}, this.chartOptions.xAxis), { type: 'time' }) });\n this.recreateChart(options);\n }\n else if (!categoryIsDate && !(xAxis instanceof categoryAxis_1.CategoryAxis)) {\n this.recreateChart();\n }\n };\n LineChartProxy.prototype.getDefaultOptions = function () {\n var options = this.getDefaultCartesianChartOptions();\n options.xAxis.label.rotation = 335;\n options.seriesDefaults = __assign(__assign({}, options.seriesDefaults), { stroke: __assign(__assign({}, options.seriesDefaults.stroke), { width: 3 }), marker: {\n enabled: true,\n type: 'circle',\n size: 6,\n strokeWidth: 1,\n }, tooltip: {\n enabled: true,\n } });\n return options;\n };\n return LineChartProxy;\n}(cartesianChartProxy_1.CartesianChartProxy));\nexports.LineChartProxy = LineChartProxy;\n//# sourceMappingURL=lineChartProxy.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar chartBuilder_1 = require(\"../../../../charts/chartBuilder\");\nvar polarChartProxy_1 = require(\"./polarChartProxy\");\nvar PieChartProxy = /** @class */ (function (_super) {\n __extends(PieChartProxy, _super);\n function PieChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.initChartOptions();\n _this.recreateChart();\n return _this;\n }\n PieChartProxy.prototype.createChart = function (options) {\n return chartBuilder_1.ChartBuilder.createPieChart(this.chartProxyParams.parentElement, options);\n };\n PieChartProxy.prototype.update = function (params) {\n var chart = this.chart;\n if (params.fields.length === 0) {\n chart.removeAllSeries();\n return;\n }\n var existingSeries = chart.series[0];\n var existingSeriesId = existingSeries && existingSeries.angleKey;\n var pieSeriesField = params.fields[0];\n var _a = this.getPalette(), fills = _a.fills, strokes = _a.strokes;\n var seriesDefaults = this.chartOptions.seriesDefaults;\n var pieSeries = existingSeries;\n var calloutColors = seriesDefaults.callout && seriesDefaults.callout.colors;\n if (existingSeriesId !== pieSeriesField.colId) {\n chart.removeSeries(existingSeries);\n var seriesOptions = __assign(__assign({}, seriesDefaults), { type: \"pie\", field: {\n angleKey: pieSeriesField.colId,\n }, title: __assign(__assign({}, seriesDefaults.title), { text: seriesDefaults.title.text || params.fields[0].displayName }) });\n pieSeries = chartBuilder_1.ChartBuilder.createSeries(seriesOptions);\n }\n pieSeries.angleName = pieSeriesField.displayName;\n pieSeries.labelKey = params.category.id;\n pieSeries.labelName = params.category.name;\n pieSeries.data = params.data;\n pieSeries.fills = fills;\n pieSeries.strokes = strokes;\n if (calloutColors) {\n pieSeries.calloutColors = calloutColors;\n }\n chart.addSeries(pieSeries);\n };\n PieChartProxy.prototype.getDefaultOptions = function () {\n var strokes = this.getPredefinedPalette().strokes;\n var options = this.getDefaultChartOptions();\n var fontOptions = this.getDefaultFontOptions();\n options.seriesDefaults = __assign(__assign({}, options.seriesDefaults), { title: __assign(__assign({}, fontOptions), { enabled: false, fontSize: 12, fontWeight: 'bold' }), callout: {\n colors: strokes,\n length: 10,\n strokeWidth: 2,\n }, label: __assign(__assign({}, fontOptions), { enabled: false, offset: 3, minRequiredAngle: 0 }), tooltip: {\n enabled: true,\n }, shadow: this.getDefaultDropShadowOptions() });\n return options;\n };\n return PieChartProxy;\n}(polarChartProxy_1.PolarChartProxy));\nexports.PieChartProxy = PieChartProxy;\n//# sourceMappingURL=pieChartProxy.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar chartBuilder_1 = require(\"../../../../charts/chartBuilder\");\nvar core_1 = require(\"@ag-grid-community/core\");\nvar polarChartProxy_1 = require(\"./polarChartProxy\");\nvar DoughnutChartProxy = /** @class */ (function (_super) {\n __extends(DoughnutChartProxy, _super);\n function DoughnutChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.initChartOptions();\n _this.recreateChart();\n return _this;\n }\n DoughnutChartProxy.prototype.createChart = function (options) {\n return chartBuilder_1.ChartBuilder.createDoughnutChart(this.chartProxyParams.parentElement, options);\n };\n DoughnutChartProxy.prototype.update = function (params) {\n if (params.fields.length === 0) {\n this.chart.removeAllSeries();\n return;\n }\n var doughnutChart = this.chart;\n var fieldIds = params.fields.map(function (f) { return f.colId; });\n var seriesMap = {};\n doughnutChart.series.forEach(function (series) {\n var pieSeries = series;\n var id = pieSeries.angleKey;\n if (core_1._.includes(fieldIds, id)) {\n seriesMap[id] = pieSeries;\n }\n });\n var seriesDefaults = this.chartOptions.seriesDefaults;\n var _a = this.getPalette(), fills = _a.fills, strokes = _a.strokes;\n var offset = 0;\n params.fields.forEach(function (f, index) {\n var existingSeries = seriesMap[f.colId];\n var seriesOptions = __assign(__assign({}, seriesDefaults), { type: \"pie\", field: {\n angleKey: f.colId,\n }, showInLegend: index === 0, title: __assign(__assign({}, seriesDefaults.title), { text: seriesDefaults.title.text || f.displayName }) });\n var calloutColors = seriesOptions.callout && seriesOptions.callout.colors;\n var pieSeries = existingSeries || chartBuilder_1.ChartBuilder.createSeries(seriesOptions);\n pieSeries.angleName = f.displayName;\n pieSeries.labelKey = params.category.id;\n pieSeries.labelName = params.category.name;\n pieSeries.data = params.data;\n pieSeries.fills = fills;\n pieSeries.strokes = strokes;\n // Normally all series provide legend items for every slice.\n // For our use case, where all series have the same number of slices in the same order with the same labels\n // (all of which can be different in other use cases) we don't want to show repeating labels in the legend,\n // so we only show legend items for the first series, and then when the user toggles the slices of the\n // first series in the legend, we programmatically toggle the corresponding slices of other series.\n if (index === 0) {\n pieSeries.toggleSeriesItem = function (itemId, enabled) {\n if (doughnutChart) {\n doughnutChart.series.forEach(function (series) {\n series.dataEnabled[itemId] = enabled;\n });\n }\n pieSeries.scheduleData();\n };\n }\n pieSeries.outerRadiusOffset = offset;\n offset -= 20;\n pieSeries.innerRadiusOffset = offset;\n offset -= 20;\n if (calloutColors) {\n pieSeries.calloutColors = calloutColors;\n }\n if (!existingSeries) {\n seriesMap[f.colId] = pieSeries;\n }\n });\n // Because repaints are automatic, it's important to remove/add/update series at once,\n // so that we don't get painted twice.\n doughnutChart.series = core_1._.values(seriesMap);\n };\n DoughnutChartProxy.prototype.getDefaultOptions = function () {\n var strokes = this.getPredefinedPalette().strokes;\n var options = this.getDefaultChartOptions();\n var fontOptions = this.getDefaultFontOptions();\n options.seriesDefaults = __assign(__assign({}, options.seriesDefaults), { title: __assign(__assign({}, fontOptions), { enabled: true, fontSize: 12, fontWeight: 'bold' }), callout: {\n colors: strokes,\n length: 10,\n strokeWidth: 2,\n }, label: __assign(__assign({}, fontOptions), { enabled: false, offset: 3, minRequiredAngle: 0 }), tooltip: {\n enabled: true,\n }, shadow: this.getDefaultDropShadowOptions() });\n return options;\n };\n return DoughnutChartProxy;\n}(polarChartProxy_1.PolarChartProxy));\nexports.DoughnutChartProxy = DoughnutChartProxy;\n//# sourceMappingURL=doughnutChartProxy.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar ChartTranslator = /** @class */ (function () {\n function ChartTranslator() {\n }\n ChartTranslator_1 = ChartTranslator;\n ChartTranslator.prototype.translate = function (toTranslate) {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var defaultTranslation = ChartTranslator_1.DEFAULT_TRANSLATIONS[toTranslate];\n return translate(toTranslate, defaultTranslation);\n };\n var ChartTranslator_1;\n ChartTranslator.DEFAULT_TRANSLATIONS = {\n pivotChartTitle: 'Pivot Chart',\n rangeChartTitle: 'Range Chart',\n settings: 'Settings',\n data: 'Data',\n format: 'Format',\n categories: 'Categories',\n series: 'Series',\n xyValues: 'X Y Values',\n paired: 'Paired Mode',\n axis: 'Axis',\n color: 'Color',\n thickness: 'Thickness',\n xRotation: 'X Rotation',\n yRotation: 'Y Rotation',\n ticks: 'Ticks',\n width: 'Width',\n length: 'Length',\n padding: 'Padding',\n chart: 'Chart',\n title: 'Title',\n background: 'Background',\n font: 'Font',\n top: 'Top',\n right: 'Right',\n bottom: 'Bottom',\n left: 'Left',\n labels: 'Labels',\n size: 'Size',\n minSize: 'Minimum Size',\n maxSize: 'Maximum Size',\n legend: 'Legend',\n position: 'Position',\n markerSize: 'Marker Size',\n markerStroke: 'Marker Stroke',\n markerPadding: 'Marker Padding',\n itemPaddingX: 'Item Padding X',\n itemPaddingY: 'Item Padding Y',\n strokeWidth: 'Stroke Width',\n offset: 'Offset',\n offsets: 'Offsets',\n tooltips: 'Tooltips',\n callout: 'Callout',\n markers: 'Markers',\n shadow: 'Shadow',\n blur: 'Blur',\n xOffset: 'X Offset',\n yOffset: 'Y Offset',\n lineWidth: 'Line Width',\n normal: 'Normal',\n bold: 'Bold',\n italic: 'Italic',\n boldItalic: 'Bold Italic',\n predefined: 'Predefined',\n fillOpacity: 'Fill Opacity',\n strokeOpacity: 'Line Opacity',\n columnGroup: 'Column',\n barGroup: 'Bar',\n pieGroup: 'Pie',\n lineGroup: 'Line',\n scatterGroup: 'X Y (Scatter)',\n areaGroup: 'Area',\n groupedColumnTooltip: 'Grouped',\n stackedColumnTooltip: 'Stacked',\n normalizedColumnTooltip: '100% Stacked',\n groupedBarTooltip: 'Grouped',\n stackedBarTooltip: 'Stacked',\n normalizedBarTooltip: '100% Stacked',\n pieTooltip: 'Pie',\n doughnutTooltip: 'Doughnut',\n lineTooltip: 'Line',\n groupedAreaTooltip: 'Area',\n stackedAreaTooltip: 'Stacked',\n normalizedAreaTooltip: '100% Stacked',\n scatterTooltip: 'Scatter',\n bubbleTooltip: 'Bubble',\n noDataToChart: 'No data available to be charted.',\n pivotChartRequiresPivotMode: 'Pivot Chart requires Pivot Mode enabled.',\n };\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], ChartTranslator.prototype, \"gridOptionsWrapper\", void 0);\n ChartTranslator = ChartTranslator_1 = __decorate([\n core_1.Bean(\"chartTranslator\")\n ], ChartTranslator);\n return ChartTranslator;\n}());\nexports.ChartTranslator = ChartTranslator;\n//# sourceMappingURL=chartTranslator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar core_2 = require(\"@ag-grid-enterprise/core\");\nvar rangeController_1 = require(\"./rangeSelection/rangeController\");\nvar fillHandle_1 = require(\"./rangeSelection/fillHandle\");\nvar rangeHandle_1 = require(\"./rangeSelection/rangeHandle\");\nexports.RangeSelectionModule = {\n moduleName: core_1.ModuleNames.RangeSelectionModule,\n beans: [rangeController_1.RangeController],\n agStackComponents: [\n { componentName: 'AgFillHandle', componentClass: fillHandle_1.FillHandle },\n { componentName: 'AgRangeHandle', componentClass: rangeHandle_1.RangeHandle }\n ],\n dependantModules: [\n core_2.EnterpriseCoreModule\n ]\n};\n//# sourceMappingURL=rangeSelectionModule.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar RangeController = /** @class */ (function () {\n function RangeController() {\n this.cellRanges = [];\n this.bodyScrollListener = this.onBodyScroll.bind(this);\n this.dragging = false;\n }\n RangeController.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.autoScrollService = new AutoScrollService(this.gridPanel, this.gridOptionsWrapper);\n };\n RangeController.prototype.init = function () {\n this.logger = this.loggerFactory.create('RangeController');\n this.eventService.addEventListener(core_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.removeAllCellRanges.bind(this));\n this.eventService.addEventListener(core_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.removeAllCellRanges.bind(this));\n this.eventService.addEventListener(core_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.removeAllCellRanges.bind(this));\n this.eventService.addEventListener(core_1.Events.EVENT_COLUMN_GROUP_OPENED, this.refreshLastRangeStart.bind(this));\n this.eventService.addEventListener(core_1.Events.EVENT_COLUMN_MOVED, this.refreshLastRangeStart.bind(this));\n this.eventService.addEventListener(core_1.Events.EVENT_COLUMN_PINNED, this.refreshLastRangeStart.bind(this));\n this.eventService.addEventListener(core_1.Events.EVENT_COLUMN_VISIBLE, this.onColumnVisibleChange.bind(this));\n };\n RangeController.prototype.onColumnVisibleChange = function () {\n var _this = this;\n // first move start column in last cell range (i.e. series chart range)\n this.refreshLastRangeStart();\n // then check if the column visibility has changed in any cell range\n this.cellRanges.forEach(function (cellRange) {\n var beforeCols = cellRange.columns;\n // remove hidden cols from cell range\n cellRange.columns = cellRange.columns.filter(function (col) { return col.isVisible(); });\n var colsInRangeChanged = !core_1._.compareArrays(beforeCols, cellRange.columns);\n if (colsInRangeChanged) {\n // notify users and other parts of grid (i.e. status panel) that range has changed\n _this.dispatchChangedEvent(false, true, cellRange.id);\n }\n });\n };\n RangeController.prototype.refreshLastRangeStart = function () {\n var lastRange = core_1._.last(this.cellRanges);\n if (!lastRange) {\n return;\n }\n this.refreshRangeStart(lastRange);\n };\n RangeController.prototype.isContiguousRange = function (cellRange) {\n var rangeColumns = cellRange.columns;\n if (!rangeColumns.length) {\n return false;\n }\n var allColumns = this.columnController.getAllDisplayedColumns();\n var allPositions = rangeColumns.map(function (c) { return allColumns.indexOf(c); }).sort(function (a, b) { return a - b; });\n return core_1._.last(allPositions) - allPositions[0] + 1 === rangeColumns.length;\n };\n RangeController.prototype.getRangeStartRow = function (cellRange) {\n if (cellRange.startRow && cellRange.endRow) {\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\n cellRange.startRow : cellRange.endRow;\n }\n var rowPinned = this.pinnedRowModel.getPinnedTopRowCount() > 0 ? core_1.Constants.PINNED_TOP : undefined;\n return { rowIndex: 0, rowPinned: rowPinned };\n };\n RangeController.prototype.getRangeEndRow = function (cellRange) {\n if (cellRange.startRow && cellRange.endRow) {\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\n cellRange.endRow : cellRange.startRow;\n }\n var pinnedBottomRowCount = this.pinnedRowModel.getPinnedBottomRowCount();\n var pinnedBottom = pinnedBottomRowCount > 0;\n if (pinnedBottom) {\n return {\n rowIndex: pinnedBottomRowCount - 1,\n rowPinned: core_1.Constants.PINNED_BOTTOM\n };\n }\n return {\n rowIndex: this.rowModel.getRowCount() - 1,\n rowPinned: undefined\n };\n };\n RangeController.prototype.setRangeToCell = function (cell, appendRange) {\n if (appendRange === void 0) { appendRange = false; }\n if (!this.gridOptionsWrapper.isEnableRangeSelection()) {\n return;\n }\n var columns = this.calculateColumnsBetween(cell.column, cell.column);\n if (!columns) {\n return;\n }\n var suppressMultiRangeSelections = this.gridOptionsWrapper.isSuppressMultiRangeSelection();\n // if not appending, then clear previous range selections\n if (suppressMultiRangeSelections || !appendRange || core_1._.missing(this.cellRanges)) {\n this.removeAllCellRanges(true);\n }\n var rowForCell = {\n rowIndex: cell.rowIndex,\n rowPinned: cell.rowPinned\n };\n // if there is already a range for this cell, then we reuse the same range, otherwise the user\n // can ctrl & click a cell many times and hit ctrl+c, which would result in the cell getting copied\n // many times to the clipboard.\n var cellRange;\n for (var i = 0; i < this.cellRanges.length; i++) {\n var range = this.cellRanges[i];\n var matches = \n // check cols are same\n (range.columns && range.columns.length === 1 && range.columns[0] === cell.column) &&\n // check rows are same\n this.rowPositionUtils.sameRow(rowForCell, range.startRow) &&\n this.rowPositionUtils.sameRow(rowForCell, range.endRow);\n if (matches) {\n cellRange = range;\n break;\n }\n }\n if (cellRange) {\n // we need it at the end of the list, as the dragStart picks the last created\n // range as the start point for the drag\n var atEndOfList = core_1._.last(this.cellRanges) === cellRange;\n if (!atEndOfList) {\n core_1._.removeFromArray(this.cellRanges, cellRange);\n this.cellRanges.push(cellRange);\n }\n }\n else {\n cellRange = {\n startRow: rowForCell,\n endRow: rowForCell,\n columns: columns,\n startColumn: cell.column\n };\n this.cellRanges.push(cellRange);\n }\n this.newestRangeStartCell = cell;\n this.onDragStop();\n this.dispatchChangedEvent(false, true, cellRange.id);\n };\n RangeController.prototype.extendLatestRangeToCell = function (cellPosition) {\n if (this.isEmpty() || !this.newestRangeStartCell) {\n return;\n }\n var cellRange = core_1._.last(this.cellRanges);\n this.updateRangeEnd(cellRange, cellPosition);\n };\n RangeController.prototype.updateRangeEnd = function (cellRange, cellPosition, silent) {\n var endColumn = cellPosition.column;\n var colsToAdd = this.calculateColumnsBetween(cellRange.startColumn, endColumn);\n if (!colsToAdd) {\n return;\n }\n cellRange.columns = colsToAdd;\n cellRange.endRow = { rowIndex: cellPosition.rowIndex, rowPinned: cellPosition.rowPinned };\n if (!silent) {\n this.dispatchChangedEvent(false, true, cellRange.id);\n }\n };\n RangeController.prototype.refreshRangeStart = function (cellRange) {\n var startColumn = cellRange.startColumn, columns = cellRange.columns;\n var moveColInCellRange = function (colToMove, moveToFront) {\n var otherCols = cellRange.columns.filter(function (col) { return col !== colToMove; });\n if (colToMove) {\n cellRange.startColumn = colToMove;\n cellRange.columns = moveToFront ? __spreadArrays([colToMove], otherCols) : __spreadArrays(otherCols, [colToMove]);\n }\n else {\n cellRange.columns = otherCols;\n }\n };\n var _a = this.getRangeEdgeColumns(cellRange), left = _a.left, right = _a.right;\n var shouldMoveLeftCol = startColumn === columns[0] && startColumn !== left;\n if (shouldMoveLeftCol) {\n moveColInCellRange(left, true);\n return;\n }\n var shouldMoveRightCol = startColumn === core_1._.last(columns) && startColumn === right;\n if (shouldMoveRightCol) {\n moveColInCellRange(right, false);\n return;\n }\n };\n RangeController.prototype.getRangeEdgeColumns = function (cellRange) {\n var allColumns = this.columnController.getAllDisplayedColumns();\n var allIndices = cellRange.columns\n .map(function (c) { return allColumns.indexOf(c); })\n .filter(function (i) { return i > -1; })\n .sort(function (a, b) { return a - b; });\n return {\n left: allColumns[allIndices[0]],\n right: allColumns[core_1._.last(allIndices)]\n };\n };\n // returns true if successful, false if not successful\n RangeController.prototype.extendLatestRangeInDirection = function (key) {\n if (this.isEmpty() || !this.newestRangeStartCell) {\n return;\n }\n var lastRange = core_1._.last(this.cellRanges);\n var startCell = this.newestRangeStartCell;\n var firstCol = lastRange.columns[0];\n var lastCol = core_1._.last(lastRange.columns);\n // find the cell that is at the furthest away corner from the starting cell\n var endCellIndex = lastRange.endRow.rowIndex;\n var endCellFloating = lastRange.endRow.rowPinned;\n var endCellColumn = startCell.column === firstCol ? lastCol : firstCol;\n var endCell = { column: endCellColumn, rowIndex: endCellIndex, rowPinned: endCellFloating };\n var newEndCell = this.cellNavigationService.getNextCellToFocus(key, endCell);\n // if user is at end of grid, so no cell to extend to, we return false\n if (!newEndCell) {\n return;\n }\n this.setCellRange({\n rowStartIndex: startCell.rowIndex,\n rowStartPinned: startCell.rowPinned,\n rowEndIndex: newEndCell.rowIndex,\n rowEndPinned: newEndCell.rowPinned,\n columnStart: startCell.column,\n columnEnd: newEndCell.column\n });\n return newEndCell;\n };\n RangeController.prototype.setCellRange = function (params) {\n if (!this.gridOptionsWrapper.isEnableRangeSelection()) {\n return;\n }\n this.removeAllCellRanges(true);\n this.addCellRange(params);\n };\n RangeController.prototype.setCellRanges = function (cellRanges) {\n var _this = this;\n this.removeAllCellRanges(true);\n cellRanges.forEach(function (newRange) {\n if (newRange.columns && newRange.startRow) {\n _this.newestRangeStartCell = {\n rowIndex: newRange.startRow.rowIndex,\n rowPinned: newRange.startRow.rowPinned,\n column: newRange.columns[0]\n };\n }\n _this.cellRanges.push(newRange);\n });\n this.dispatchChangedEvent(false, true);\n };\n RangeController.prototype.createCellRangeFromCellRangeParams = function (params) {\n var _this = this;\n var columns;\n if (params.columns) {\n columns = params.columns.map(function (c) { return _this.columnController.getColumnWithValidation(c); }).filter(function (c) { return c; });\n }\n else {\n var columnStart = this.columnController.getColumnWithValidation(params.columnStart);\n var columnEnd = this.columnController.getColumnWithValidation(params.columnEnd);\n if (!columnStart || !columnEnd) {\n return;\n }\n columns = this.calculateColumnsBetween(columnStart, columnEnd);\n }\n if (!columns) {\n return;\n }\n var startRow = params.rowStartIndex != null ? {\n rowIndex: params.rowStartIndex,\n rowPinned: params.rowStartPinned\n } : undefined;\n var endRow = params.rowEndIndex != null ? {\n rowIndex: params.rowEndIndex,\n rowPinned: params.rowEndPinned\n } : undefined;\n return {\n startRow: startRow,\n endRow: endRow,\n columns: columns,\n startColumn: columns[0]\n };\n };\n RangeController.prototype.addCellRange = function (params) {\n if (!this.gridOptionsWrapper.isEnableRangeSelection()) {\n return;\n }\n var newRange = this.createCellRangeFromCellRangeParams(params);\n if (newRange) {\n this.cellRanges.push(newRange);\n this.dispatchChangedEvent(false, true, newRange.id);\n }\n };\n RangeController.prototype.getCellRanges = function () {\n return this.cellRanges;\n };\n RangeController.prototype.isEmpty = function () {\n return this.cellRanges.length === 0;\n };\n RangeController.prototype.isMoreThanOneCell = function () {\n if (this.cellRanges.length === 0) {\n // no ranges, so not more than one cell\n return false;\n }\n else if (this.cellRanges.length > 1) {\n // many ranges, so more than one cell\n return true;\n }\n // only one range, return true if range has more than one\n var range = this.cellRanges[0];\n var startRow = this.getRangeStartRow(range);\n var endRow = this.getRangeEndRow(range);\n return startRow.rowPinned !== endRow.rowPinned ||\n startRow.rowIndex !== endRow.rowIndex ||\n range.columns.length !== 1;\n };\n RangeController.prototype.removeAllCellRanges = function (silent) {\n if (this.isEmpty()) {\n return;\n }\n this.onDragStop();\n this.cellRanges.length = 0;\n if (!silent) {\n this.dispatchChangedEvent(false, true);\n }\n };\n // as the user is dragging outside of the panel, the div starts to scroll, which in turn\n // means we are selection more (or less) cells, but the mouse isn't moving, so we recalculate\n // the selection my mimicking a new mouse event\n RangeController.prototype.onBodyScroll = function () {\n this.onDragging(this.lastMouseEvent);\n };\n RangeController.prototype.isCellInAnyRange = function (cell) {\n return this.getCellRangeCount(cell) > 0;\n };\n RangeController.prototype.isCellInSpecificRange = function (cell, range) {\n var columnInRange = range.columns !== null && core_1._.includes(range.columns, cell.column);\n var rowInRange = this.isRowInRange(cell.rowIndex, cell.rowPinned, range);\n return columnInRange && rowInRange;\n };\n RangeController.prototype.isLastCellOfRange = function (cellRange, cell) {\n var allColumns = this.columnController.getAllDisplayedColumns();\n var allPositions = cellRange.columns.map(function (c) { return allColumns.indexOf(c); }).sort(function (a, b) { return a - b; });\n var startRow = cellRange.startRow, endRow = cellRange.endRow;\n var lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\n var isLastColumn = allColumns.indexOf(cell.column) === core_1._.last(allPositions);\n var isLastRow = cell.rowIndex === lastRow.rowIndex && cell.rowPinned === lastRow.rowPinned;\n return isLastColumn && isLastRow;\n };\n // returns the number of ranges this cell is in\n RangeController.prototype.getCellRangeCount = function (cell) {\n var _this = this;\n if (this.isEmpty()) {\n return 0;\n }\n return this.cellRanges.filter(function (cellRange) { return _this.isCellInSpecificRange(cell, cellRange); }).length;\n };\n RangeController.prototype.isRowInRange = function (rowIndex, floating, cellRange) {\n var firstRow = this.getRangeStartRow(cellRange);\n var lastRow = this.getRangeEndRow(cellRange);\n var thisRow = { rowIndex: rowIndex, rowPinned: floating };\n // compare rowPinned with == instead of === because it can be `null` or `undefined`\n var equalsFirstRow = thisRow.rowIndex === firstRow.rowIndex && thisRow.rowPinned == firstRow.rowPinned;\n var equalsLastRow = thisRow.rowIndex === lastRow.rowIndex && thisRow.rowPinned == lastRow.rowPinned;\n if (equalsFirstRow || equalsLastRow) {\n return true;\n }\n var afterFirstRow = !this.rowPositionUtils.before(thisRow, firstRow);\n var beforeLastRow = this.rowPositionUtils.before(thisRow, lastRow);\n return afterFirstRow && beforeLastRow;\n };\n RangeController.prototype.getDraggingRange = function () {\n return this.draggingRange;\n };\n RangeController.prototype.onDragStart = function (mouseEvent) {\n if (!this.gridOptionsWrapper.isEnableRangeSelection()) {\n return;\n }\n var ctrlKey = mouseEvent.ctrlKey, metaKey = mouseEvent.metaKey, shiftKey = mouseEvent.shiftKey;\n // ctrlKey for windows, metaKey for Apple\n var multiKeyPressed = ctrlKey || metaKey;\n var allowMulti = !this.gridOptionsWrapper.isSuppressMultiRangeSelection();\n var multiSelectKeyPressed = allowMulti ? multiKeyPressed : false;\n var mouseCell = this.mouseEventService.getCellPositionForEvent(mouseEvent);\n if (core_1._.missing(mouseCell)) {\n // if drag wasn't on cell, then do nothing, including do not set dragging=true,\n // (which them means onDragging and onDragStop do nothing)\n return;\n }\n if (!multiSelectKeyPressed && (!shiftKey || core_1._.exists(core_1._.last(this.cellRanges).type))) {\n this.removeAllCellRanges(true);\n }\n this.dragging = true;\n this.draggingCell = mouseCell;\n this.lastMouseEvent = mouseEvent;\n if (!shiftKey) {\n this.newestRangeStartCell = mouseCell;\n }\n // if we didn't clear the ranges, then dragging means the user clicked, and when the\n // user clicks it means a range of one cell was created. we need to extend this range\n // rather than creating another range. otherwise we end up with two distinct ranges\n // from a drag operation (one from click, and one from drag).\n if (this.cellRanges.length > 0) {\n this.draggingRange = core_1._.last(this.cellRanges);\n }\n else {\n var mouseRowPosition = {\n rowIndex: mouseCell.rowIndex,\n rowPinned: mouseCell.rowPinned\n };\n this.draggingRange = {\n startRow: mouseRowPosition,\n endRow: mouseRowPosition,\n columns: [mouseCell.column],\n startColumn: this.newestRangeStartCell.column\n };\n this.cellRanges.push(this.draggingRange);\n }\n this.gridPanel.addScrollEventListener(this.bodyScrollListener);\n this.dispatchChangedEvent(true, false, this.draggingRange.id);\n };\n RangeController.prototype.onDragging = function (mouseEvent) {\n var _this = this;\n if (!this.dragging || !mouseEvent) {\n return;\n }\n this.lastMouseEvent = mouseEvent;\n var cellPosition = this.mouseEventService.getCellPositionForEvent(mouseEvent);\n var isMouseAndStartInPinned = function (position) {\n return cellPosition && cellPosition.rowPinned === position && _this.newestRangeStartCell.rowPinned === position;\n };\n var skipVerticalScroll = isMouseAndStartInPinned('top') || isMouseAndStartInPinned('bottom');\n this.autoScrollService.check(mouseEvent, skipVerticalScroll);\n if (!cellPosition ||\n !this.draggingCell ||\n this.cellPositionUtils.equals(this.draggingCell, cellPosition)) {\n return;\n }\n var columns = this.calculateColumnsBetween(this.newestRangeStartCell.column, cellPosition.column);\n if (!columns) {\n return;\n }\n this.draggingCell = cellPosition;\n this.draggingRange.endRow = {\n rowIndex: cellPosition.rowIndex,\n rowPinned: cellPosition.rowPinned\n };\n this.draggingRange.columns = columns;\n this.dispatchChangedEvent(false, false, this.draggingRange.id);\n };\n RangeController.prototype.onDragStop = function () {\n if (!this.dragging) {\n return;\n }\n var id = this.draggingRange.id;\n this.autoScrollService.ensureCleared();\n this.gridPanel.removeScrollEventListener(this.bodyScrollListener);\n this.lastMouseEvent = null;\n this.dragging = false;\n this.draggingRange = undefined;\n this.draggingCell = undefined;\n this.dispatchChangedEvent(false, true, id);\n };\n RangeController.prototype.dispatchChangedEvent = function (started, finished, id) {\n var event = Object.freeze({\n type: core_1.Events.EVENT_RANGE_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n started: started,\n finished: finished,\n id: id,\n });\n this.eventService.dispatchEvent(event);\n };\n RangeController.prototype.calculateColumnsBetween = function (columnFrom, columnTo) {\n var allColumns = this.columnController.getAllDisplayedColumns();\n var isSameColumn = columnFrom === columnTo;\n var fromIndex = allColumns.indexOf(columnFrom);\n if (fromIndex < 0) {\n console.warn(\"ag-Grid: column \" + columnFrom.getId() + \" is not visible\");\n return undefined;\n }\n var toIndex = isSameColumn ? fromIndex : allColumns.indexOf(columnTo);\n if (toIndex < 0) {\n console.warn(\"ag-Grid: column \" + columnTo.getId() + \" is not visible\");\n return undefined;\n }\n if (isSameColumn) {\n return [columnFrom];\n }\n var firstIndex = Math.min(fromIndex, toIndex);\n var lastIndex = firstIndex === fromIndex ? toIndex : fromIndex;\n var columns = [];\n for (var i = firstIndex; i <= lastIndex; i++) {\n columns.push(allColumns[i]);\n }\n return columns;\n };\n __decorate([\n core_1.Autowired('loggerFactory')\n ], RangeController.prototype, \"loggerFactory\", void 0);\n __decorate([\n core_1.Autowired('rowModel')\n ], RangeController.prototype, \"rowModel\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], RangeController.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], RangeController.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('mouseEventService')\n ], RangeController.prototype, \"mouseEventService\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], RangeController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('columnApi')\n ], RangeController.prototype, \"columnApi\", void 0);\n __decorate([\n core_1.Autowired('gridApi')\n ], RangeController.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.Autowired('cellNavigationService')\n ], RangeController.prototype, \"cellNavigationService\", void 0);\n __decorate([\n core_1.Autowired(\"pinnedRowModel\")\n ], RangeController.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n core_1.Autowired('rowPositionUtils')\n ], RangeController.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n core_1.Autowired('cellPositionUtils')\n ], RangeController.prototype, \"cellPositionUtils\", void 0);\n __decorate([\n core_1.PostConstruct\n ], RangeController.prototype, \"init\", null);\n RangeController = __decorate([\n core_1.Bean('rangeController')\n ], RangeController);\n return RangeController;\n}());\nexports.RangeController = RangeController;\nvar AutoScrollService = /** @class */ (function () {\n function AutoScrollService(gridPanel, gridOptionsWrapper) {\n this.tickingInterval = null;\n this.gridPanel = gridPanel;\n this.gridOptionsWrapper = gridOptionsWrapper;\n }\n AutoScrollService.prototype.check = function (mouseEvent, skipVerticalScroll) {\n if (skipVerticalScroll === void 0) { skipVerticalScroll = false; }\n var rect = this.gridPanel.getBodyClientRect();\n skipVerticalScroll = skipVerticalScroll || this.gridOptionsWrapper.getDomLayout() !== core_1.Constants.DOM_LAYOUT_NORMAL;\n // we don't do ticking if grid is auto height unless we have a horizontal scroller\n if (skipVerticalScroll && !this.gridPanel.isHorizontalScrollShowing()) {\n return;\n }\n this.tickLeft = mouseEvent.clientX < (rect.left + 20);\n this.tickRight = mouseEvent.clientX > (rect.right - 20);\n this.tickUp = mouseEvent.clientY < (rect.top + 20) && !skipVerticalScroll;\n this.tickDown = mouseEvent.clientY > (rect.bottom - 20) && !skipVerticalScroll;\n if (this.tickLeft || this.tickRight || this.tickUp || this.tickDown) {\n this.ensureTickingStarted();\n }\n else {\n this.ensureCleared();\n }\n };\n AutoScrollService.prototype.ensureTickingStarted = function () {\n if (this.tickingInterval === null) {\n this.tickingInterval = window.setInterval(this.doTick.bind(this), 100);\n this.tickCount = 0;\n }\n };\n AutoScrollService.prototype.doTick = function () {\n this.tickCount++;\n var vScrollPosition = this.gridPanel.getVScrollPosition();\n var hScrollPosition = this.gridPanel.getHScrollPosition();\n var tickAmount;\n tickAmount = this.tickCount > 20 ? 200 : (this.tickCount > 10 ? 80 : 40);\n if (this.tickUp) {\n this.gridPanel.setVerticalScrollPosition(vScrollPosition.top - tickAmount);\n }\n if (this.tickDown) {\n this.gridPanel.setVerticalScrollPosition(vScrollPosition.top + tickAmount);\n }\n if (this.tickLeft) {\n this.gridPanel.setHorizontalScrollPosition(hScrollPosition.left - tickAmount);\n }\n if (this.tickRight) {\n this.gridPanel.setHorizontalScrollPosition(hScrollPosition.left + tickAmount);\n }\n };\n AutoScrollService.prototype.ensureCleared = function () {\n if (this.tickingInterval) {\n window.clearInterval(this.tickingInterval);\n this.tickingInterval = null;\n }\n };\n return AutoScrollService;\n}());\n//# sourceMappingURL=rangeController.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar abstractSelectionHandle_1 = require(\"./abstractSelectionHandle\");\nvar FillHandle = /** @class */ (function (_super) {\n __extends(FillHandle, _super);\n function FillHandle() {\n var _this = _super.call(this, FillHandle.TEMPLATE) || this;\n _this.markedCellComps = [];\n _this.cellValues = [];\n _this.isUp = false;\n _this.isLeft = false;\n _this.isReduce = false;\n _this.type = 'fill';\n return _this;\n }\n FillHandle.prototype.onDrag = function (e) {\n if (!this.initialXY) {\n var _a = this.getGui().getBoundingClientRect(), left = _a.left, top_1 = _a.top;\n this.initialXY = { x: left, y: top_1 };\n }\n var _b = this.initialXY, x = _b.x, y = _b.y;\n var diffX = Math.abs(x - e.clientX);\n var diffY = Math.abs(y - e.clientY);\n var direction = diffX > diffY ? 'x' : 'y';\n if (direction !== this.dragAxis) {\n this.dragAxis = direction;\n }\n if (!this.initialPosition) {\n var cellComp = this.getCellComp();\n if (!cellComp) {\n return;\n }\n this.initialPosition = cellComp.getCellPosition();\n }\n var lastCellHovered = this.getLastCellHovered();\n if (lastCellHovered && lastCellHovered !== this.lastCellMarked) {\n this.lastCellMarked = lastCellHovered;\n this.markPathFrom(this.initialPosition, lastCellHovered);\n }\n };\n FillHandle.prototype.onDragEnd = function (e) {\n if (!this.markedCellComps.length) {\n return;\n }\n var isX = this.dragAxis === 'x';\n var initialRange = this.getCellRange();\n var colLen = initialRange.columns.length;\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n var finalRange;\n if (!this.isUp && !this.isLeft) {\n finalRange = this.rangeController.createCellRangeFromCellRangeParams({\n rowStartIndex: rangeStartRow.rowIndex,\n rowStartPinned: rangeStartRow.rowPinned,\n columnStart: initialRange.columns[0],\n rowEndIndex: isX ? rangeEndRow.rowIndex : this.lastCellMarked.rowIndex,\n rowEndPinned: isX ? rangeEndRow.rowPinned : this.lastCellMarked.rowPinned,\n columnEnd: isX ? this.lastCellMarked.column : initialRange.columns[colLen - 1]\n });\n }\n else {\n var startRow = isX ? rangeStartRow : this.lastCellMarked;\n finalRange = this.rangeController.createCellRangeFromCellRangeParams({\n rowStartIndex: startRow.rowIndex,\n rowStartPinned: startRow.rowPinned,\n columnStart: isX ? this.lastCellMarked.column : initialRange.columns[0],\n rowEndIndex: rangeEndRow.rowIndex,\n rowEndPinned: rangeEndRow.rowPinned,\n columnEnd: initialRange.columns[colLen - 1]\n });\n }\n if (finalRange) {\n // raising fill events for undo / redo\n this.raiseFillStartEvent();\n this.handleValueChanged(initialRange, finalRange, e);\n this.rangeController.setCellRanges([finalRange]);\n this.raiseFillEndEvent(initialRange, finalRange);\n }\n };\n FillHandle.prototype.raiseFillStartEvent = function () {\n var fillStartEvent = {\n type: core_1.Events.EVENT_FILL_START,\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n api: this.gridOptionsWrapper.getApi()\n };\n this.eventService.dispatchEvent(fillStartEvent);\n };\n FillHandle.prototype.raiseFillEndEvent = function (initialRange, finalRange) {\n var fillEndEvent = {\n type: core_1.Events.EVENT_FILL_END,\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n api: this.gridOptionsWrapper.getApi(),\n initialRange: initialRange,\n finalRange: finalRange\n };\n this.eventService.dispatchEvent(fillEndEvent);\n };\n FillHandle.prototype.handleValueChanged = function (initialRange, finalRange, e) {\n var _this = this;\n var initialRangeEndRow = this.rangeController.getRangeEndRow(initialRange);\n var initialRangeStartRow = this.rangeController.getRangeStartRow(initialRange);\n var finalRangeEndRow = this.rangeController.getRangeEndRow(finalRange);\n var finalRangeStartRow = this.rangeController.getRangeStartRow(finalRange);\n var isVertical = this.dragAxis === 'y';\n // if the range is being reduced in size, all we need to do is\n // clear the cells that are no longer part of the range\n if (this.isReduce && !this.gridOptionsWrapper.isSuppressClearOnFillReduction()) {\n var columns = isVertical\n ? initialRange.columns\n : initialRange.columns.filter(function (col) { return finalRange.columns.indexOf(col) < 0; });\n var startRow = isVertical ? this.cellNavigationService.getRowBelow(finalRangeEndRow) : finalRangeStartRow;\n if (startRow) {\n this.clearCellsInRange(startRow, initialRangeEndRow, columns);\n }\n return;\n }\n var withinInitialRange = true;\n var values = [];\n var initialValues = [];\n var idx = 0;\n var resetValues = function () {\n values.length = 0;\n initialValues.length = 0;\n idx = 0;\n };\n var iterateAcrossCells = function (column, columns) {\n var currentRow = _this.isUp ? initialRangeEndRow : initialRangeStartRow;\n var finished = false;\n if (isVertical) {\n withinInitialRange = true;\n resetValues();\n }\n var _loop_1 = function () {\n var rowNode = _this.rowPositionUtils.getRowNode(currentRow);\n if (!rowNode) {\n return \"break\";\n }\n if (isVertical && column) {\n fillValues(values, column, rowNode, function () {\n return !_this.rowPositionUtils.sameRow(currentRow, _this.isUp ? initialRangeStartRow : initialRangeEndRow);\n });\n }\n else if (columns) {\n withinInitialRange = true;\n resetValues();\n columns.forEach(function (col) { return fillValues(values, col, rowNode, function () { return col !== (_this.isLeft ? initialRange.columns[0] : core_1._.last(initialRange.columns)); }); });\n }\n finished = _this.rowPositionUtils.sameRow(currentRow, _this.isUp ? finalRangeStartRow : finalRangeEndRow);\n currentRow = _this.isUp\n ? _this.cellNavigationService.getRowAbove(currentRow)\n : _this.cellNavigationService.getRowBelow(currentRow);\n };\n while (!finished && currentRow) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n };\n var fillValues = function (values, col, rowNode, updateInitialSet) {\n var currentValue;\n if (withinInitialRange) {\n currentValue = _this.valueService.getValue(col, rowNode);\n initialValues.push(currentValue);\n withinInitialRange = updateInitialSet();\n }\n else {\n currentValue = _this.processValues(e, values, initialValues, col, rowNode, idx++);\n if (col.isCellEditable(rowNode)) {\n _this.valueService.setValue(rowNode, col, currentValue);\n }\n }\n values.push(currentValue);\n };\n if (isVertical) {\n initialRange.columns.forEach(function (col) {\n iterateAcrossCells(col);\n });\n }\n else {\n var columns = this.isLeft ? __spreadArrays(finalRange.columns).reverse() : finalRange.columns;\n iterateAcrossCells(undefined, columns);\n }\n };\n FillHandle.prototype.clearCellsInRange = function (startRow, endRow, columns) {\n var _this = this;\n var currentRow = startRow;\n var finished = false;\n var _loop_2 = function () {\n var rowNode = this_1.rowPositionUtils.getRowNode(currentRow);\n // should never happen, defensive programming\n if (!rowNode) {\n return \"break\";\n }\n columns.forEach(function (col) {\n if (col.isCellEditable(rowNode)) {\n _this.valueService.setValue(rowNode, col, null);\n }\n });\n finished = this_1.rowPositionUtils.sameRow(currentRow, endRow);\n currentRow = this_1.cellNavigationService.getRowBelow(currentRow);\n };\n var this_1 = this;\n while (!finished && currentRow) {\n var state_2 = _loop_2();\n if (state_2 === \"break\")\n break;\n }\n };\n FillHandle.prototype.processValues = function (event, values, initialValues, col, rowNode, idx) {\n var userFillOperation = this.gridOptionsWrapper.getFillOperation();\n var isVertical = this.dragAxis === 'y';\n var direction;\n if (isVertical) {\n direction = this.isUp ? 'up' : 'down';\n }\n else {\n direction = this.isLeft ? 'left' : 'right';\n }\n if (userFillOperation) {\n var userResult = userFillOperation({\n event: event,\n values: values,\n initialValues: initialValues,\n currentIndex: idx,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n direction: direction,\n column: isVertical ? col : undefined,\n rowNode: !isVertical ? rowNode : undefined // only present if left / right\n });\n if (userResult !== false) {\n return userResult;\n }\n }\n var allNumbers = !values.some(function (val) { return isNaN(parseFloat(val)); });\n // values should be copied in order if the alt key is pressed\n // or if the values contain strings and numbers\n // However, if we only have one initial value selected, and that\n // value is a number and we are also pressing alt, then we should\n // increment or decrement the value by 1 based on direction.\n if (event.altKey || !allNumbers) {\n if (allNumbers && initialValues.length === 1) {\n var multiplier = (this.isUp || this.isLeft) ? -1 : 1;\n return core_1._.last(values) + 1 * multiplier;\n }\n return values[idx % values.length];\n }\n return core_1._.last(core_1._.findLineByLeastSquares(values.map(Number)));\n };\n FillHandle.prototype.clearValues = function () {\n this.clearMarkedPath();\n this.clearCellValues();\n this.lastCellMarked = undefined;\n _super.prototype.clearValues.call(this);\n };\n FillHandle.prototype.clearMarkedPath = function () {\n this.markedCellComps.forEach(function (cellComp) {\n var eGui = cellComp.getGui();\n core_1._.removeCssClass(eGui, 'ag-selection-fill-top');\n core_1._.removeCssClass(eGui, 'ag-selection-fill-right');\n core_1._.removeCssClass(eGui, 'ag-selection-fill-bottom');\n core_1._.removeCssClass(eGui, 'ag-selection-fill-left');\n });\n this.markedCellComps.length = 0;\n this.isUp = false;\n this.isLeft = false;\n this.isReduce = false;\n };\n FillHandle.prototype.clearCellValues = function () {\n this.cellValues.length = 0;\n };\n FillHandle.prototype.markPathFrom = function (initialPosition, currentPosition) {\n this.clearMarkedPath();\n this.clearCellValues();\n if (this.dragAxis === 'y') {\n if (this.rowPositionUtils.sameRow(currentPosition, initialPosition)) {\n return;\n }\n var isBefore = this.rowPositionUtils.before(currentPosition, initialPosition);\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n if (isBefore && ((currentPosition.rowPinned == rangeStartRow.rowPinned &&\n currentPosition.rowIndex >= rangeStartRow.rowIndex) ||\n (rangeStartRow.rowPinned != rangeEndRow.rowPinned &&\n currentPosition.rowPinned == rangeEndRow.rowPinned &&\n currentPosition.rowIndex <= rangeEndRow.rowIndex))) {\n this.reduceVertical(initialPosition, currentPosition);\n this.isReduce = true;\n }\n else {\n this.extendVertical(initialPosition, currentPosition, isBefore);\n this.isReduce = false;\n }\n }\n else {\n var initialColumn = initialPosition.column;\n var currentColumn = currentPosition.column;\n if (initialColumn === currentColumn) {\n return;\n }\n var displayedColumns = this.columnController.getAllDisplayedColumns();\n var initialIndex = displayedColumns.indexOf(initialColumn);\n var currentIndex = displayedColumns.indexOf(currentColumn);\n if (currentIndex <= initialIndex && currentIndex >= displayedColumns.indexOf(this.getCellRange().columns[0])) {\n this.reduceHorizontal(initialPosition, currentPosition);\n this.isReduce = true;\n }\n else {\n this.extendHorizontal(initialPosition, currentPosition, currentIndex < initialIndex);\n this.isReduce = false;\n }\n }\n };\n FillHandle.prototype.extendVertical = function (initialPosition, endPosition, isMovingUp) {\n var _a = this, rowRenderer = _a.rowRenderer, rangeController = _a.rangeController;\n var row = initialPosition;\n do {\n var cellRange = this.getCellRange();\n var colLen = cellRange.columns.length;\n for (var i = 0; i < colLen; i++) {\n var column = cellRange.columns[i];\n var rowPos = { rowIndex: row.rowIndex, rowPinned: row.rowPinned };\n var cellPos = __assign(__assign({}, rowPos), { column: column });\n var cellInRange = rangeController.isCellInSpecificRange(cellPos, cellRange);\n var isInitialRow = this.rowPositionUtils.sameRow(row, initialPosition);\n if (isMovingUp) {\n this.isUp = true;\n }\n if (!isInitialRow) {\n var cellComp = rowRenderer.getComponentForCell(cellPos);\n if (cellComp) {\n this.markedCellComps.push(cellComp);\n var eGui = cellComp.getGui();\n if (!cellInRange) {\n core_1._.addOrRemoveCssClass(eGui, 'ag-selection-fill-left', i === 0);\n core_1._.addOrRemoveCssClass(eGui, 'ag-selection-fill-right', i === colLen - 1);\n }\n core_1._.addOrRemoveCssClass(eGui, isMovingUp ? 'ag-selection-fill-top' : 'ag-selection-fill-bottom', this.rowPositionUtils.sameRow(row, endPosition));\n }\n }\n }\n if (this.rowPositionUtils.sameRow(row, endPosition)) {\n break;\n }\n } while (row = isMovingUp ?\n this.cellNavigationService.getRowAbove(row) :\n this.cellNavigationService.getRowBelow(row));\n };\n FillHandle.prototype.reduceVertical = function (initialPosition, endPosition) {\n var row = initialPosition;\n do {\n var cellRange = this.getCellRange();\n var colLen = cellRange.columns.length;\n var isLastRow = this.rowPositionUtils.sameRow(row, endPosition);\n for (var i = 0; i < colLen; i++) {\n var rowPos = { rowIndex: row.rowIndex, rowPinned: row.rowPinned };\n var celPos = __assign(__assign({}, rowPos), { column: cellRange.columns[i] });\n var cellComp = this.rowRenderer.getComponentForCell(celPos);\n if (cellComp) {\n this.markedCellComps.push(cellComp);\n var eGui = cellComp.getGui();\n core_1._.addOrRemoveCssClass(eGui, 'ag-selection-fill-bottom', this.rowPositionUtils.sameRow(row, endPosition));\n }\n }\n if (isLastRow) {\n break;\n }\n } while (row = this.cellNavigationService.getRowAbove(row));\n };\n FillHandle.prototype.extendHorizontal = function (initialPosition, endPosition, isMovingLeft) {\n var _this = this;\n var allCols = this.columnController.getAllDisplayedColumns();\n var startCol = allCols.indexOf(isMovingLeft ? endPosition.column : initialPosition.column);\n var endCol = allCols.indexOf(isMovingLeft ? this.getCellRange().columns[0] : endPosition.column);\n var offset = isMovingLeft ? 0 : 1;\n var colsToMark = allCols.slice(startCol + offset, endCol + offset);\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n colsToMark.forEach(function (column) {\n var row = rangeStartRow;\n var isLastRow = false;\n do {\n isLastRow = _this.rowPositionUtils.sameRow(row, rangeEndRow);\n var cellComp = _this.rowRenderer.getComponentForCell({\n rowIndex: row.rowIndex,\n rowPinned: row.rowPinned,\n column: column\n });\n if (cellComp) {\n _this.markedCellComps.push(cellComp);\n var eGui = cellComp.getGui();\n core_1._.addOrRemoveCssClass(eGui, 'ag-selection-fill-top', _this.rowPositionUtils.sameRow(row, rangeStartRow));\n core_1._.addOrRemoveCssClass(eGui, 'ag-selection-fill-bottom', _this.rowPositionUtils.sameRow(row, rangeEndRow));\n if (isMovingLeft) {\n _this.isLeft = true;\n core_1._.addOrRemoveCssClass(eGui, 'ag-selection-fill-left', column === colsToMark[0]);\n }\n else {\n core_1._.addOrRemoveCssClass(eGui, 'ag-selection-fill-right', column === core_1._.last(colsToMark));\n }\n }\n row = _this.cellNavigationService.getRowBelow(row);\n } while (!isLastRow);\n });\n };\n FillHandle.prototype.reduceHorizontal = function (initialPosition, endPosition) {\n var _this = this;\n var allCols = this.columnController.getAllDisplayedColumns();\n var startCol = allCols.indexOf(endPosition.column);\n var endCol = allCols.indexOf(initialPosition.column);\n var colsToMark = allCols.slice(startCol, endCol);\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n colsToMark.forEach(function (column) {\n var row = rangeStartRow;\n var isLastRow = false;\n do {\n isLastRow = _this.rowPositionUtils.sameRow(row, rangeEndRow);\n var cellComp = _this.rowRenderer.getComponentForCell({\n rowIndex: row.rowIndex,\n rowPinned: row.rowPinned,\n column: column\n });\n if (cellComp) {\n _this.markedCellComps.push(cellComp);\n var eGui = cellComp.getGui();\n core_1._.addOrRemoveCssClass(eGui, 'ag-selection-fill-right', column === colsToMark[0]);\n }\n row = _this.cellNavigationService.getRowBelow(row);\n } while (!isLastRow);\n });\n };\n FillHandle.prototype.refresh = function (cellComp) {\n var cellRange = this.rangeController.getCellRanges()[0];\n var isColumnRange = !cellRange.startRow || !cellRange.endRow;\n if (isColumnRange) {\n this.destroy();\n return;\n }\n _super.prototype.refresh.call(this, cellComp);\n };\n FillHandle.TEMPLATE = '
';\n __decorate([\n core_1.Autowired('valueService')\n ], FillHandle.prototype, \"valueService\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], FillHandle.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], FillHandle.prototype, \"gridOptionsWrapper\", void 0);\n return FillHandle;\n}(abstractSelectionHandle_1.AbstractSelectionHandle));\nexports.FillHandle = FillHandle;\n//# sourceMappingURL=fillHandle.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar abstractSelectionHandle_1 = require(\"./abstractSelectionHandle\");\nvar RangeHandle = /** @class */ (function (_super) {\n __extends(RangeHandle, _super);\n function RangeHandle() {\n var _this = _super.call(this, RangeHandle.TEMPLATE) || this;\n _this.type = 'range';\n _this.rangeFixed = false;\n return _this;\n }\n RangeHandle.prototype.onDrag = function (e) {\n var lastCellHovered = this.getLastCellHovered();\n if (!lastCellHovered) {\n return;\n }\n var cellRanges = this.rangeController.getCellRanges();\n var lastRange = core_1._.last(cellRanges);\n if (!this.rangeFixed) {\n this.fixRangeStartEnd(lastRange);\n this.rangeFixed = true;\n }\n this.endPosition = {\n rowIndex: lastCellHovered.rowIndex,\n rowPinned: lastCellHovered.rowPinned,\n column: lastCellHovered.column\n };\n // check if the cell ranges are for a chart\n if (cellRanges.length === 2 && cellRanges[0].type === core_1.CellRangeType.DIMENSION && lastRange.type === core_1.CellRangeType.VALUE) {\n var rowChanged = !this.rowPositionUtils.sameRow(this.endPosition, this.rangeController.getRangeEndRow(lastRange));\n if (rowChanged) {\n // ensure the dimension range is kept in sync with the value range (which has the handle)\n this.rangeController.updateRangeEnd(cellRanges[0], __assign(__assign({}, this.endPosition), { column: cellRanges[0].columns[0] }), true);\n }\n }\n this.rangeController.extendLatestRangeToCell(this.endPosition);\n };\n RangeHandle.prototype.onDragEnd = function (e) {\n var cellRange = core_1._.last(this.rangeController.getCellRanges());\n this.fixRangeStartEnd(cellRange);\n this.rangeFixed = false;\n };\n RangeHandle.prototype.fixRangeStartEnd = function (cellRange) {\n var startRow = this.rangeController.getRangeStartRow(cellRange);\n var endRow = this.rangeController.getRangeEndRow(cellRange);\n var column = cellRange.columns[0];\n cellRange.startRow = startRow;\n cellRange.endRow = endRow;\n cellRange.startColumn = column;\n };\n RangeHandle.TEMPLATE = '
';\n return RangeHandle;\n}(abstractSelectionHandle_1.AbstractSelectionHandle));\nexports.RangeHandle = RangeHandle;\n//# sourceMappingURL=rangeHandle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar core_2 = require(\"@ag-grid-enterprise/core\");\nvar detailCellRenderer_1 = require(\"./masterDetail/detailCellRenderer\");\nexports.MasterDetailModule = {\n moduleName: core_1.ModuleNames.MasterDetailModule,\n beans: [],\n userComponents: [\n { componentName: 'agDetailCellRenderer', componentClass: detailCellRenderer_1.DetailCellRenderer }\n ],\n dependantModules: [\n core_2.EnterpriseCoreModule\n ]\n};\n//# sourceMappingURL=masterDetailModule.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar DetailCellRenderer = /** @class */ (function (_super) {\n __extends(DetailCellRenderer, _super);\n function DetailCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.needRefresh = false;\n return _this;\n }\n DetailCellRenderer.prototype.refresh = function () {\n // if we return true, it means we pretend to the grid\n // that we have refreshed, so refresh will never happen.\n if (this.suppressRefresh) {\n return true;\n }\n // otherwise we only refresh if the data has changed in the node\n // since the last time. this happens when user updates data using transaction.\n var res = !this.needRefresh;\n this.needRefresh = false;\n return res;\n };\n DetailCellRenderer.prototype.init = function (params) {\n var _this = this;\n this.rowId = params.node.id;\n this.masterGridApi = params.api;\n this.suppressRefresh = params.suppressRefresh;\n this.selectAndSetTemplate(params);\n if (core_1._.exists(this.eDetailGrid)) {\n this.addThemeToDetailGrid();\n this.createDetailsGrid(params);\n this.registerDetailWithMaster(params.node);\n this.loadRowData(params);\n window.setTimeout(function () {\n // ensure detail grid api still exists (grid may be destroyed when async call tries to set data)\n if (_this.detailGridOptions.api) {\n _this.detailGridOptions.api.doLayout();\n }\n }, 0);\n }\n else {\n console.warn('ag-Grid: reference to eDetailGrid was missing from the details template. ' +\n 'Please add ref=\"eDetailGrid\" to the template.');\n }\n this.addDestroyableEventListener(params.node.parent, core_1.RowNode.EVENT_DATA_CHANGED, function () {\n _this.needRefresh = true;\n });\n };\n DetailCellRenderer.prototype.addThemeToDetailGrid = function () {\n // this is needed by environment service of the child grid, the class needs to be on\n // the grid div itself - the browser's CSS on the other hand just inherits from the parent grid theme.\n var theme = this.environment.getTheme().theme;\n if (theme) {\n core_1._.addCssClass(this.eDetailGrid, theme);\n }\n };\n DetailCellRenderer.prototype.registerDetailWithMaster = function (rowNode) {\n var _this = this;\n var gridInfo = {\n id: this.rowId,\n api: this.detailGridOptions.api,\n columnApi: this.detailGridOptions.columnApi\n };\n // register with api\n this.masterGridApi.addDetailGridInfo(this.rowId, gridInfo);\n // register with node\n rowNode.detailGridInfo = gridInfo;\n this.addDestroyFunc(function () {\n _this.masterGridApi.removeDetailGridInfo(_this.rowId); // unregister from api\n rowNode.detailGridInfo = null; // unregister from node\n });\n };\n DetailCellRenderer.prototype.selectAndSetTemplate = function (params) {\n var paramsAny = params;\n if (core_1._.missing(paramsAny.template)) {\n // use default template\n this.setTemplate(DetailCellRenderer.TEMPLATE);\n }\n else {\n // use user provided template\n if (typeof paramsAny.template === 'string') {\n this.setTemplate(paramsAny.template);\n }\n else if (typeof paramsAny.template === 'function') {\n var templateFunc = paramsAny.template;\n var template = templateFunc(params);\n this.setTemplate(template);\n }\n else {\n console.warn('ag-Grid: detailCellRendererParams.template should be function or string');\n this.setTemplate(DetailCellRenderer.TEMPLATE);\n }\n }\n };\n DetailCellRenderer.prototype.createDetailsGrid = function (params) {\n // we clone the detail grid options, as otherwise it would be shared\n // across many instances, and that would be a problem because we set\n // api and columnApi into gridOptions\n var _this = this;\n var gridOptions = params.detailGridOptions;\n if (core_1._.missing(gridOptions)) {\n console.warn('ag-Grid: could not find detail grid options for master detail, ' +\n 'please set gridOptions.detailCellRendererParams.detailGridOptions');\n }\n // IMPORTANT - gridOptions must be cloned\n this.detailGridOptions = core_1._.cloneObject(gridOptions);\n // tslint:disable-next-line\n new core_1.Grid(this.eDetailGrid, this.detailGridOptions, {\n $scope: params.$scope,\n $compile: params.$compile,\n providedBeanInstances: {\n // a temporary fix for AG-1574\n // AG-1715 raised to do a wider ranging refactor to improve this\n agGridReact: params.agGridReact,\n // AG-1716 - directly related to AG-1574 and AG-1715\n frameworkComponentWrapper: params.frameworkComponentWrapper\n }\n });\n this.addDestroyFunc(function () {\n if (_this.detailGridOptions.api) {\n _this.detailGridOptions.api.destroy();\n }\n });\n };\n DetailCellRenderer.prototype.loadRowData = function (params) {\n var userFunc = params.getDetailRowData;\n if (!userFunc) {\n console.warn('ag-Grid: could not find getDetailRowData for master / detail, ' +\n 'please set gridOptions.detailCellRendererParams.getDetailRowData');\n return;\n }\n var funcParams = {\n node: params.node,\n data: params.data,\n successCallback: this.setRowData.bind(this)\n };\n userFunc(funcParams);\n };\n DetailCellRenderer.prototype.setRowData = function (rowData) {\n // ensure detail grid api still exists (grid may be destroyed when async call tries to set data)\n if (this.detailGridOptions.api) {\n this.detailGridOptions.api.setRowData(rowData);\n }\n };\n DetailCellRenderer.TEMPLATE = \"
\\n
\\n
\";\n __decorate([\n core_1.RefSelector('eDetailGrid')\n ], DetailCellRenderer.prototype, \"eDetailGrid\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], DetailCellRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('environment')\n ], DetailCellRenderer.prototype, \"environment\", void 0);\n return DetailCellRenderer;\n}(core_1.Component));\nexports.DetailCellRenderer = DetailCellRenderer;\n//# sourceMappingURL=detailCellRenderer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar core_2 = require(\"@ag-grid-enterprise/core\");\nvar enterpriseMenu_1 = require(\"./menu/enterpriseMenu\");\nvar contextMenu_1 = require(\"./menu/contextMenu\");\nvar menuItemMapper_1 = require(\"./menu/menuItemMapper\");\nexports.MenuModule = {\n moduleName: core_1.ModuleNames.MenuModule,\n beans: [enterpriseMenu_1.EnterpriseMenuFactory, contextMenu_1.ContextMenuFactory, menuItemMapper_1.MenuItemMapper],\n dependantModules: [\n core_2.EnterpriseCoreModule\n ]\n};\n//# sourceMappingURL=menuModule.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar menuList_1 = require(\"./menuList\");\nvar menuItemComponent_1 = require(\"./menuItemComponent\");\nvar EnterpriseMenuFactory = /** @class */ (function () {\n function EnterpriseMenuFactory() {\n }\n EnterpriseMenuFactory.prototype.hideActiveMenu = function () {\n if (this.activeMenu) {\n this.activeMenu.destroy();\n }\n };\n EnterpriseMenuFactory.prototype.showMenuAfterMouseEvent = function (column, mouseEvent, defaultTab) {\n var _this = this;\n this.showMenu(column, function (menu) {\n _this.popupService.positionPopupUnderMouseEvent({\n column: column,\n type: 'columnMenu',\n mouseEvent: mouseEvent,\n ePopup: menu.getGui()\n });\n if (defaultTab) {\n menu.showTab(defaultTab);\n }\n }, defaultTab);\n };\n EnterpriseMenuFactory.prototype.showMenuAfterButtonClick = function (column, eventSource, defaultTab, restrictToTabs) {\n var _this = this;\n var multiplier = -1;\n var alignSide = 'left';\n if (this.gridOptionsWrapper.isEnableRtl()) {\n multiplier = 1;\n alignSide = 'right';\n }\n this.showMenu(column, function (menu) {\n var minDims = menu.getMinDimensions();\n _this.popupService.positionPopupUnderComponent({\n column: column,\n type: 'columnMenu',\n eventSource: eventSource,\n ePopup: menu.getGui(),\n nudgeX: 9 * multiplier,\n nudgeY: -23,\n minWidth: minDims.width,\n minHeight: minDims.height,\n alignSide: alignSide,\n keepWithinBounds: true\n });\n if (defaultTab) {\n menu.showTab(defaultTab);\n }\n }, defaultTab, restrictToTabs);\n };\n EnterpriseMenuFactory.prototype.showMenu = function (column, positionCallback, defaultTab, restrictToTabs) {\n var _this = this;\n var menu = new EnterpriseMenu(column, this.lastSelectedTab, restrictToTabs);\n this.context.wireBean(menu);\n var eMenuGui = menu.getGui();\n // need to show filter before positioning, as only after filter\n // is visible can we find out what the width of it is\n var hidePopup = this.popupService.addAsModalPopup(eMenuGui, true, function () {\n menu.destroy();\n column.setMenuVisible(false, \"contextMenu\");\n });\n menu.afterGuiAttached({\n hidePopup: hidePopup\n });\n positionCallback(menu);\n if (!defaultTab) {\n menu.showTabBasedOnPreviousSelection();\n }\n menu.addEventListener(EnterpriseMenu.EVENT_TAB_SELECTED, function (event) {\n _this.lastSelectedTab = event.key;\n });\n column.setMenuVisible(true, \"contextMenu\");\n this.activeMenu = menu;\n menu.addEventListener(core_1.BeanStub.EVENT_DESTROYED, function () {\n if (_this.activeMenu === menu) {\n _this.activeMenu = null;\n }\n });\n };\n EnterpriseMenuFactory.prototype.isMenuEnabled = function (column) {\n return column.getMenuTabs(EnterpriseMenu.TABS_DEFAULT).length > 0;\n };\n __decorate([\n core_1.Autowired('context')\n ], EnterpriseMenuFactory.prototype, \"context\", void 0);\n __decorate([\n core_1.Autowired('popupService')\n ], EnterpriseMenuFactory.prototype, \"popupService\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], EnterpriseMenuFactory.prototype, \"gridOptionsWrapper\", void 0);\n EnterpriseMenuFactory = __decorate([\n core_1.Bean('menuFactory')\n ], EnterpriseMenuFactory);\n return EnterpriseMenuFactory;\n}());\nexports.EnterpriseMenuFactory = EnterpriseMenuFactory;\nvar EnterpriseMenu = /** @class */ (function (_super) {\n __extends(EnterpriseMenu, _super);\n function EnterpriseMenu(column, initialSelection, restrictTo) {\n var _this = _super.call(this) || this;\n _this.tabFactories = {};\n _this.includeChecks = {};\n _this.timeOfLastColumnChange = Date.now();\n _this.column = column;\n _this.initialSelection = initialSelection;\n _this.tabFactories[EnterpriseMenu.TAB_GENERAL] = _this.createMainPanel.bind(_this);\n _this.tabFactories[EnterpriseMenu.TAB_FILTER] = _this.createFilterPanel.bind(_this);\n _this.tabFactories[EnterpriseMenu.TAB_COLUMNS] = _this.createColumnsPanel.bind(_this);\n _this.includeChecks[EnterpriseMenu.TAB_GENERAL] = function () { return true; };\n _this.includeChecks[EnterpriseMenu.TAB_FILTER] = function () { return column.isFilterAllowed(); };\n _this.includeChecks[EnterpriseMenu.TAB_COLUMNS] = function () { return true; };\n _this.restrictTo = restrictTo;\n return _this;\n }\n EnterpriseMenu.prototype.getMinDimensions = function () {\n return this.tabbedLayout.getMinDimensions();\n };\n EnterpriseMenu.prototype.init = function () {\n var _this = this;\n var tabs = this.getTabsToCreate()\n .map(function (menuTabName) { return _this.createTab(menuTabName); });\n this.tabbedLayout = new core_1.TabbedLayout({\n items: tabs,\n cssClass: 'ag-menu',\n onActiveItemClicked: this.onHidePopup.bind(this),\n onItemClicked: this.onTabItemClicked.bind(this)\n });\n this.eventService.addEventListener(core_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n };\n EnterpriseMenu.prototype.getTabsToCreate = function () {\n var _this = this;\n if (this.restrictTo) {\n return this.restrictTo;\n }\n return this.column.getMenuTabs(EnterpriseMenu.TABS_DEFAULT)\n .filter(function (tabName) { return _this.isValidMenuTabItem(tabName); })\n .filter(function (tabName) { return _this.isNotSuppressed(tabName); })\n .filter(function (tabName) { return _this.isModuleLoaded(tabName); });\n };\n EnterpriseMenu.prototype.isModuleLoaded = function (menuTabName) {\n if (menuTabName === EnterpriseMenu.TAB_COLUMNS) {\n return core_1.ModuleRegistry.isRegistered(core_1.ModuleNames.ColumnToolPanelModule);\n }\n else {\n return true;\n }\n };\n EnterpriseMenu.prototype.isValidMenuTabItem = function (menuTabName) {\n var isValid = true;\n var itemsToConsider = EnterpriseMenu.TABS_DEFAULT;\n if (this.restrictTo != null) {\n isValid = this.restrictTo.indexOf(menuTabName) > -1;\n itemsToConsider = this.restrictTo;\n }\n isValid = isValid && EnterpriseMenu.TABS_DEFAULT.indexOf(menuTabName) > -1;\n if (!isValid) {\n console.warn(\"Trying to render an invalid menu item '\" + menuTabName + \"'. Check that your 'menuTabs' contains one of [\" + itemsToConsider + \"]\");\n }\n return isValid;\n };\n EnterpriseMenu.prototype.isNotSuppressed = function (menuTabName) {\n return this.includeChecks[menuTabName]();\n };\n EnterpriseMenu.prototype.createTab = function (name) {\n return this.tabFactories[name]();\n };\n EnterpriseMenu.prototype.showTabBasedOnPreviousSelection = function () {\n // show the tab the user was on last time they had a menu open\n this.showTab(this.initialSelection);\n };\n EnterpriseMenu.prototype.showTab = function (toShow) {\n if (this.tabItemColumns && toShow === EnterpriseMenu.TAB_COLUMNS) {\n this.tabbedLayout.showItem(this.tabItemColumns);\n }\n else if (this.tabItemFilter && toShow === EnterpriseMenu.TAB_FILTER) {\n this.tabbedLayout.showItem(this.tabItemFilter);\n }\n else if (this.tabItemGeneral && toShow === EnterpriseMenu.TAB_GENERAL) {\n this.tabbedLayout.showItem(this.tabItemGeneral);\n }\n else {\n this.tabbedLayout.showFirstItem();\n }\n };\n EnterpriseMenu.prototype.onTabItemClicked = function (event) {\n var key = null;\n switch (event.item) {\n case this.tabItemColumns:\n key = EnterpriseMenu.TAB_COLUMNS;\n break;\n case this.tabItemFilter:\n key = EnterpriseMenu.TAB_FILTER;\n break;\n case this.tabItemGeneral:\n key = EnterpriseMenu.TAB_GENERAL;\n break;\n }\n if (key) {\n var ev = {\n type: EnterpriseMenu.EVENT_TAB_SELECTED,\n key: key\n };\n this.dispatchEvent(ev);\n }\n };\n EnterpriseMenu.prototype.destroy = function () {\n if (this.columnSelectPanel) {\n this.columnSelectPanel.destroy();\n }\n if (this.mainMenuList) {\n this.mainMenuList.destroy();\n }\n _super.prototype.destroy.call(this);\n };\n EnterpriseMenu.prototype.getMenuItems = function () {\n var defaultMenuOptions = this.getDefaultMenuOptions();\n var result;\n var userFunc = this.gridOptionsWrapper.getMainMenuItemsFunc();\n if (userFunc) {\n var userOptions = userFunc({\n column: this.column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n defaultItems: defaultMenuOptions\n });\n result = userOptions;\n }\n else {\n result = defaultMenuOptions;\n }\n // GUI looks weird when two separators are side by side. this can happen accidentally\n // if we remove items from the menu then two separators can edit up adjacent.\n core_1._.removeRepeatsFromArray(result, EnterpriseMenu.MENU_ITEM_SEPARATOR);\n return result;\n };\n EnterpriseMenu.prototype.getDefaultMenuOptions = function () {\n var result = [];\n var allowPinning = !this.column.getColDef().lockPinned;\n var rowGroupCount = this.columnController.getRowGroupColumns().length;\n var doingGrouping = rowGroupCount > 0;\n var groupedByThisColumn = this.columnController.getRowGroupColumns().indexOf(this.column) >= 0;\n var allowValue = this.column.isAllowValue();\n var allowRowGroup = this.column.isAllowRowGroup();\n var isPrimary = this.column.isPrimary();\n var pivotModeOn = this.columnController.isPivotMode();\n var isInMemoryRowModel = this.rowModel.getType() === core_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n var usingTreeData = this.gridOptionsWrapper.isTreeData();\n var allowValueAgg = \n // if primary, then only allow aggValue if grouping and it's a value columns\n (isPrimary && doingGrouping && allowValue)\n // secondary columns can always have aggValue, as it means it's a pivot value column\n || !isPrimary;\n if (allowPinning) {\n result.push('pinSubMenu');\n }\n if (allowValueAgg) {\n result.push('valueAggSubMenu');\n }\n if (allowPinning || allowValueAgg) {\n result.push(EnterpriseMenu.MENU_ITEM_SEPARATOR);\n }\n result.push('autoSizeThis');\n result.push('autoSizeAll');\n result.push(EnterpriseMenu.MENU_ITEM_SEPARATOR);\n if (allowRowGroup && this.column.isPrimary()) {\n if (groupedByThisColumn) {\n result.push('rowUnGroup');\n }\n else {\n result.push('rowGroup');\n }\n }\n result.push(EnterpriseMenu.MENU_ITEM_SEPARATOR);\n result.push('resetColumns');\n // only add grouping expand/collapse if grouping in the InMemoryRowModel\n // if pivoting, we only have expandable groups if grouping by 2 or more columns\n // as the lowest level group is not expandable while pivoting.\n // if not pivoting, then any active row group can be expanded.\n var allowExpandAndContract = false;\n if (isInMemoryRowModel) {\n if (usingTreeData) {\n allowExpandAndContract = true;\n }\n else {\n allowExpandAndContract = pivotModeOn ? rowGroupCount > 1 : rowGroupCount > 0;\n }\n }\n if (allowExpandAndContract) {\n result.push('expandAll');\n result.push('contractAll');\n }\n return result;\n };\n EnterpriseMenu.prototype.createMainPanel = function () {\n this.mainMenuList = new menuList_1.MenuList();\n this.getContext().wireBean(this.mainMenuList);\n var menuItems = this.getMenuItems();\n var menuItemsMapped = this.menuItemMapper.mapWithStockItems(menuItems, this.column);\n this.mainMenuList.addMenuItems(menuItemsMapped);\n this.mainMenuList.addEventListener(menuItemComponent_1.MenuItemComponent.EVENT_ITEM_SELECTED, this.onHidePopup.bind(this));\n this.tabItemGeneral = {\n title: core_1._.createIconNoSpan('menu', this.gridOptionsWrapper, this.column),\n bodyPromise: core_1.Promise.resolve(this.mainMenuList.getGui()),\n name: EnterpriseMenu.TAB_GENERAL\n };\n return this.tabItemGeneral;\n };\n EnterpriseMenu.prototype.onHidePopup = function () {\n this.hidePopupFunc();\n };\n EnterpriseMenu.prototype.createFilterPanel = function () {\n var filterWrapper = this.filterManager.getOrCreateFilterWrapper(this.column, 'COLUMN_MENU');\n var afterFilterAttachedCallback = null;\n // slightly odd block this - this promise will always have been resolved by the time it gets here, so won't be\n // async (_unless_ in react or similar, but if so why not encountered before now?).\n // I'd suggest a future improvement would be to remove/replace this promise as this block just wont work if it is\n // async and is confusing if you don't have this context\n if (filterWrapper.filterPromise) {\n filterWrapper.filterPromise.then(function (filter) {\n if (filter.afterGuiAttached) {\n afterFilterAttachedCallback = filter.afterGuiAttached.bind(filter);\n }\n });\n }\n this.tabItemFilter = {\n title: core_1._.createIconNoSpan('filter', this.gridOptionsWrapper, this.column),\n bodyPromise: filterWrapper.guiPromise.promise,\n afterAttachedCallback: afterFilterAttachedCallback,\n name: EnterpriseMenu.TAB_FILTER\n };\n return this.tabItemFilter;\n };\n EnterpriseMenu.prototype.createColumnsPanel = function () {\n var eWrapperDiv = document.createElement('div');\n core_1._.addCssClass(eWrapperDiv, 'ag-menu-column-select-wrapper');\n this.columnSelectPanel = this.getContext().createComponent('AG-PRIMARY-COLS');\n this.columnSelectPanel.init(false, {\n suppressValues: false,\n suppressPivots: false,\n suppressRowGroups: false,\n suppressPivotMode: false,\n contractColumnSelection: false,\n suppressColumnExpandAll: false,\n suppressColumnFilter: false,\n suppressColumnSelectAll: false,\n suppressSideButtons: false,\n suppressSyncLayoutWithGrid: false,\n api: this.gridApi\n });\n eWrapperDiv.appendChild(this.columnSelectPanel.getGui());\n this.tabItemColumns = {\n title: core_1._.createIconNoSpan('columns', this.gridOptionsWrapper, this.column),\n bodyPromise: core_1.Promise.resolve(eWrapperDiv),\n name: EnterpriseMenu.TAB_COLUMNS\n };\n return this.tabItemColumns;\n };\n EnterpriseMenu.prototype.afterGuiAttached = function (params) {\n var _this = this;\n this.tabbedLayout.setAfterAttachedParams({ hidePopup: params.hidePopup });\n this.hidePopupFunc = params.hidePopup;\n var initialScroll = this.gridApi.getHorizontalPixelRange().left;\n // if the user scrolls the grid horizontally, we want to hide the menu, as the menu will not appear in the right location anymore\n var onBodyScroll = function (event) {\n // If the user hides columns using the columns tab in this menu, it will change the size of the\n // grid content and lead to a bodyScroll event. But we don't want to hide the menu for that kind\n // of indirect scrolling. Assume that any bodyScroll that happens right after a column change is\n // caused by that change, and ignore it.\n var msSinceLastColumnChange = Date.now() - _this.timeOfLastColumnChange;\n if (msSinceLastColumnChange < 500) {\n return;\n }\n // if h scroll, popup is no longer over the column\n if (event.direction === 'horizontal') {\n var newScroll = _this.gridApi.getHorizontalPixelRange().left;\n if (Math.abs(newScroll - initialScroll) > _this.gridOptionsWrapper.getScrollbarWidth()) {\n params.hidePopup();\n }\n }\n };\n this.addDestroyFunc(params.hidePopup);\n this.addDestroyableEventListener(this.eventService, 'bodyScroll', onBodyScroll);\n };\n EnterpriseMenu.prototype.getGui = function () {\n return this.tabbedLayout.getGui();\n };\n EnterpriseMenu.prototype.onDisplayedColumnsChanged = function () {\n this.timeOfLastColumnChange = Date.now();\n };\n EnterpriseMenu.EVENT_TAB_SELECTED = 'tabSelected';\n EnterpriseMenu.TAB_FILTER = 'filterMenuTab';\n EnterpriseMenu.TAB_GENERAL = 'generalMenuTab';\n EnterpriseMenu.TAB_COLUMNS = 'columnsMenuTab';\n EnterpriseMenu.TABS_DEFAULT = [EnterpriseMenu.TAB_GENERAL, EnterpriseMenu.TAB_FILTER, EnterpriseMenu.TAB_COLUMNS];\n EnterpriseMenu.MENU_ITEM_SEPARATOR = 'separator';\n __decorate([\n core_1.Autowired('columnController')\n ], EnterpriseMenu.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('filterManager')\n ], EnterpriseMenu.prototype, \"filterManager\", void 0);\n __decorate([\n core_1.Autowired('gridApi')\n ], EnterpriseMenu.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], EnterpriseMenu.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], EnterpriseMenu.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('menuItemMapper')\n ], EnterpriseMenu.prototype, \"menuItemMapper\", void 0);\n __decorate([\n core_1.Autowired('rowModel')\n ], EnterpriseMenu.prototype, \"rowModel\", void 0);\n __decorate([\n core_1.PostConstruct\n ], EnterpriseMenu.prototype, \"init\", null);\n return EnterpriseMenu;\n}(core_1.BeanStub));\nexports.EnterpriseMenu = EnterpriseMenu;\n//# sourceMappingURL=enterpriseMenu.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar menuItemComponent_1 = require(\"./menuItemComponent\");\nvar menuList_1 = require(\"./menuList\");\nvar ContextMenuFactory = /** @class */ (function () {\n function ContextMenuFactory() {\n }\n ContextMenuFactory.prototype.init = function () {\n };\n ContextMenuFactory.prototype.hideActiveMenu = function () {\n if (!this.activeMenu) {\n return;\n }\n this.activeMenu.destroy();\n };\n ContextMenuFactory.prototype.getMenuItems = function (node, column, value) {\n var defaultMenuOptions = [];\n if (core_1._.exists(node) && core_1.ModuleRegistry.isRegistered(core_1.ModuleNames.ClipboardModule)) {\n if (column) {\n // only makes sense if column exists, could have originated from a row\n defaultMenuOptions.push('copy', 'copyWithHeaders', 'paste', 'separator');\n }\n }\n else {\n // if user clicks outside of a cell (eg below the rows, or not rows present)\n // nothing to show, perhaps tool panels???\n }\n if (this.gridOptionsWrapper.isEnableCharts() &&\n core_1.ModuleRegistry.isRegistered(core_1.ModuleNames.RangeSelectionModule) &&\n core_1.ModuleRegistry.isRegistered(core_1.ModuleNames.GridChartsModule)) {\n if (this.columnController.isPivotMode()) {\n defaultMenuOptions.push('pivotChart');\n }\n if (this.rangeController && !this.rangeController.isEmpty()) {\n defaultMenuOptions.push('chartRange');\n }\n }\n if (core_1._.exists(node)) {\n // if user clicks a cell\n var csvModuleMissing = !core_1.ModuleRegistry.isRegistered(core_1.ModuleNames.CsvExportModule);\n var excelModuleMissing = !core_1.ModuleRegistry.isRegistered(core_1.ModuleNames.ExcelExportModule);\n var suppressExcel = this.gridOptionsWrapper.isSuppressExcelExport() || excelModuleMissing;\n var suppressCsv = this.gridOptionsWrapper.isSuppressCsvExport() || csvModuleMissing;\n var onIPad = core_1._.isIOSUserAgent();\n var anyExport = !onIPad && (!suppressExcel || !suppressCsv);\n if (anyExport) {\n defaultMenuOptions.push('export');\n }\n }\n if (this.gridOptionsWrapper.getContextMenuItemsFunc()) {\n var userFunc = this.gridOptionsWrapper.getContextMenuItemsFunc();\n var params = {\n node: node,\n column: column,\n value: value,\n defaultItems: defaultMenuOptions.length ? defaultMenuOptions : undefined,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n return userFunc ? userFunc(params) : undefined;\n }\n return defaultMenuOptions;\n };\n ContextMenuFactory.prototype.showMenu = function (node, column, value, mouseEvent) {\n var _this = this;\n var menuItems = this.getMenuItems(node, column, value);\n if (menuItems === undefined || core_1._.missingOrEmpty(menuItems)) {\n return;\n }\n var menu = new ContextMenu(menuItems);\n this.context.wireBean(menu);\n var eMenuGui = menu.getGui();\n // need to show filter before positioning, as only after filter\n // is visible can we find out what the width of it is\n var hidePopup = this.popupService.addAsModalPopup(eMenuGui, true, function () { return menu.destroy(); }, mouseEvent);\n this.popupService.positionPopupUnderMouseEvent({\n column: column,\n rowNode: node,\n type: 'contextMenu',\n mouseEvent: mouseEvent,\n ePopup: eMenuGui\n });\n menu.afterGuiAttached({\n hidePopup: hidePopup\n });\n this.activeMenu = menu;\n menu.addEventListener(core_1.BeanStub.EVENT_DESTROYED, function () {\n if (_this.activeMenu === menu) {\n _this.activeMenu = null;\n }\n });\n };\n __decorate([\n core_1.Autowired('context')\n ], ContextMenuFactory.prototype, \"context\", void 0);\n __decorate([\n core_1.Autowired('popupService')\n ], ContextMenuFactory.prototype, \"popupService\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], ContextMenuFactory.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('rowModel')\n ], ContextMenuFactory.prototype, \"rowModel\", void 0);\n __decorate([\n core_1.Optional('rangeController')\n ], ContextMenuFactory.prototype, \"rangeController\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], ContextMenuFactory.prototype, \"columnController\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ContextMenuFactory.prototype, \"init\", null);\n ContextMenuFactory = __decorate([\n core_1.Bean('contextMenuFactory')\n ], ContextMenuFactory);\n return ContextMenuFactory;\n}());\nexports.ContextMenuFactory = ContextMenuFactory;\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n function ContextMenu(menuItems) {\n var _this = _super.call(this, '
') || this;\n _this.menuItems = menuItems;\n return _this;\n }\n ContextMenu.prototype.addMenuItems = function () {\n var menuList = new menuList_1.MenuList();\n this.getContext().wireBean(menuList);\n var menuItemsMapped = this.menuItemMapper.mapWithStockItems(this.menuItems, null);\n menuList.addMenuItems(menuItemsMapped);\n this.appendChild(menuList);\n menuList.addEventListener(menuItemComponent_1.MenuItemComponent.EVENT_ITEM_SELECTED, this.destroy.bind(this));\n };\n ContextMenu.prototype.afterGuiAttached = function (params) {\n if (params.hidePopup) {\n this.addDestroyFunc(params.hidePopup);\n }\n // if the body scrolls, we want to hide the menu, as the menu will not appear in the right location anymore\n this.addDestroyableEventListener(this.eventService, 'bodyScroll', this.destroy.bind(this));\n };\n __decorate([\n core_1.Autowired('eventService')\n ], ContextMenu.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('menuItemMapper')\n ], ContextMenu.prototype, \"menuItemMapper\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ContextMenu.prototype, \"addMenuItems\", null);\n return ContextMenu;\n}(core_1.Component));\n//# sourceMappingURL=contextMenu.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar MenuItemMapper = /** @class */ (function () {\n function MenuItemMapper() {\n }\n MenuItemMapper.prototype.mapWithStockItems = function (originalList, column) {\n var _this = this;\n if (!originalList) {\n return [];\n }\n var resultList = [];\n originalList.forEach(function (menuItemOrString) {\n var result;\n if (typeof menuItemOrString === 'string') {\n result = _this.getStockMenuItem(menuItemOrString, column);\n }\n else {\n result = menuItemOrString;\n }\n // if no mapping, can happen when module is not loaded but user tries to use module anyway\n if (!result) {\n return;\n }\n if (result.subMenu) {\n var resultDef = result;\n resultDef.subMenu = _this.mapWithStockItems(resultDef.subMenu, column);\n }\n if (result != null) {\n resultList.push(result);\n }\n });\n return resultList;\n };\n MenuItemMapper.prototype.getStockMenuItem = function (key, column) {\n var _this = this;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var skipHeaderOnAutoSize = this.gridOptionsWrapper.isSkipHeaderOnAutoSize();\n switch (key) {\n case 'pinSubMenu':\n return {\n name: localeTextFunc('pinColumn', 'Pin Column'),\n icon: core_1._.createIconNoSpan('menuPin', this.gridOptionsWrapper, null),\n subMenu: ['pinLeft', 'pinRight', 'clearPinned']\n };\n case 'pinLeft':\n return {\n name: localeTextFunc('pinLeft', 'Pin Left'),\n action: function () { return _this.columnController.setColumnPinned(column, core_1.Constants.PINNED_LEFT, \"contextMenu\"); },\n checked: column.isPinnedLeft()\n };\n case 'pinRight':\n return {\n name: localeTextFunc('pinRight', 'Pin Right'),\n action: function () { return _this.columnController.setColumnPinned(column, core_1.Constants.PINNED_RIGHT, \"contextMenu\"); },\n checked: column.isPinnedRight()\n };\n case 'clearPinned':\n return {\n name: localeTextFunc('noPin', 'No Pin'),\n action: function () { return _this.columnController.setColumnPinned(column, null, \"contextMenu\"); },\n checked: !column.isPinned()\n };\n case 'valueAggSubMenu':\n if (core_1.ModuleRegistry.assertRegistered(core_1.ModuleNames.RowGroupingModule, 'Aggregation from Menu')) {\n return {\n name: localeTextFunc('valueAggregation', 'Value Aggregation'),\n icon: core_1._.createIconNoSpan('menuValue', this.gridOptionsWrapper, null),\n subMenu: this.createAggregationSubMenu(column)\n };\n }\n else {\n return null;\n }\n case 'autoSizeThis':\n return {\n name: localeTextFunc('autosizeThiscolumn', 'Autosize This Column'),\n action: function () { return _this.columnController.autoSizeColumn(column, skipHeaderOnAutoSize, \"contextMenu\"); }\n };\n case 'autoSizeAll':\n return {\n name: localeTextFunc('autosizeAllColumns', 'Autosize All Columns'),\n action: function () { return _this.columnController.autoSizeAllColumns(skipHeaderOnAutoSize, \"contextMenu\"); }\n };\n case 'rowGroup':\n return {\n name: localeTextFunc('groupBy', 'Group by') + ' ' + core_1._.escape(this.columnController.getDisplayNameForColumn(column, 'header')),\n action: function () { return _this.columnController.addRowGroupColumn(column, \"contextMenu\"); },\n icon: core_1._.createIconNoSpan('menuAddRowGroup', this.gridOptionsWrapper, null)\n };\n case 'rowUnGroup':\n return {\n name: localeTextFunc('ungroupBy', 'Un-Group by') + ' ' + core_1._.escape(this.columnController.getDisplayNameForColumn(column, 'header')),\n action: function () { return _this.columnController.removeRowGroupColumn(column, \"contextMenu\"); },\n icon: core_1._.createIconNoSpan('menuRemoveRowGroup', this.gridOptionsWrapper, null)\n };\n case 'resetColumns':\n return {\n name: localeTextFunc('resetColumns', 'Reset Columns'),\n action: function () { return _this.columnController.resetColumnState(false, \"contextMenu\"); }\n };\n case 'expandAll':\n return {\n name: localeTextFunc('expandAll', 'Expand All'),\n action: function () { return _this.gridApi.expandAll(); }\n };\n case 'contractAll':\n return {\n name: localeTextFunc('collapseAll', 'Collapse All'),\n action: function () { return _this.gridApi.collapseAll(); }\n };\n case 'copy':\n if (core_1.ModuleRegistry.assertRegistered(core_1.ModuleNames.ClipboardModule, 'Copy from Menu')) {\n return {\n name: localeTextFunc('copy', 'Copy'),\n shortcut: localeTextFunc('ctrlC', 'Ctrl+C'),\n icon: core_1._.createIconNoSpan('clipboardCopy', this.gridOptionsWrapper, null),\n action: function () { return _this.clipboardService.copyToClipboard(false); }\n };\n }\n else {\n return null;\n }\n case 'copyWithHeaders':\n if (core_1.ModuleRegistry.assertRegistered(core_1.ModuleNames.ClipboardModule, 'Copy with Headers from Menu')) {\n return {\n name: localeTextFunc('copyWithHeaders', 'Copy with Headers'),\n // shortcut: localeTextFunc('ctrlC','Ctrl+C'),\n icon: core_1._.createIconNoSpan('clipboardCopy', this.gridOptionsWrapper, null),\n action: function () { return _this.clipboardService.copyToClipboard(true); }\n };\n }\n else {\n return null;\n }\n case 'paste':\n if (core_1.ModuleRegistry.assertRegistered(core_1.ModuleNames.ClipboardModule, 'Copy with Headers from Menu')) {\n return {\n name: localeTextFunc('paste', 'Paste'),\n shortcut: localeTextFunc('ctrlV', 'Ctrl+V'),\n disabled: true,\n icon: core_1._.createIconNoSpan('clipboardPaste', this.gridOptionsWrapper, null),\n action: function () { return _this.clipboardService.pasteFromClipboard(); }\n };\n }\n else {\n return null;\n }\n case 'export':\n var exportSubMenuItems = [];\n var csvModuleLoaded = core_1.ModuleRegistry.isRegistered(core_1.ModuleNames.CsvExportModule);\n var excelModuleLoaded = core_1.ModuleRegistry.isRegistered(core_1.ModuleNames.ExcelExportModule);\n if (!this.gridOptionsWrapper.isSuppressCsvExport() && csvModuleLoaded) {\n exportSubMenuItems.push('csvExport');\n }\n if (!this.gridOptionsWrapper.isSuppressExcelExport() && excelModuleLoaded) {\n exportSubMenuItems.push('excelExport');\n exportSubMenuItems.push('excelXmlExport');\n }\n return {\n name: localeTextFunc('export', 'Export'),\n subMenu: exportSubMenuItems,\n icon: core_1._.createIconNoSpan('save', this.gridOptionsWrapper, null),\n };\n case 'csvExport':\n return {\n name: localeTextFunc('csvExport', 'CSV Export'),\n action: function () { return _this.gridApi.exportDataAsCsv({}); }\n };\n case 'excelExport':\n return {\n name: localeTextFunc('excelExport', 'Excel Export (.xlsx)‎'),\n action: function () { return _this.gridApi.exportDataAsExcel({\n exportMode: 'xlsx'\n }); }\n };\n case 'excelXmlExport':\n return {\n name: localeTextFunc('excelXmlExport', 'Excel Export (.xml)‎'),\n action: function () { return _this.gridApi.exportDataAsExcel({\n exportMode: 'xml'\n }); }\n };\n case 'separator':\n return 'separator';\n default:\n var chartMenuItem = this.getChartItems(key);\n if (chartMenuItem) {\n return chartMenuItem;\n }\n else {\n console.warn(\"ag-Grid: unknown menu item type \" + key);\n return null;\n }\n }\n };\n MenuItemMapper.prototype.getChartItems = function (key) {\n var _this = this;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var pivotChartMenuItem = function (localeKey, defaultText, chartType) {\n return {\n name: localeTextFunc(localeKey, defaultText),\n action: function () { return _this.chartService.createPivotChart({ chartType: chartType }); }\n };\n };\n var rangeChartMenuItem = function (localeKey, defaultText, chartType) {\n return {\n name: localeTextFunc(localeKey, defaultText),\n action: function () { return _this.chartService.createChartFromCurrentRange(chartType); }\n };\n };\n switch (key) {\n // case 'pivotChartAndPivotMode':\n // return {\n // name: localeTextFunc('pivotChartAndPivotMode', 'Pivot Chart & Pivot Mode‎'),\n // action: () => this.chartService.pivotChart(ChartType.GroupedColumn),\n // icon: _.createIconNoSpan('chart', this.gridOptionsWrapper, null)\n // };\n case 'pivotChart':\n return {\n name: localeTextFunc('pivotChart', 'Pivot Chart'),\n subMenu: [\n 'pivotColumnChart',\n 'pivotBarChart',\n 'pivotPieChart',\n 'pivotLineChart',\n 'pivotXYChart',\n 'pivotAreaChart'\n ],\n icon: core_1._.createIconNoSpan('chart', this.gridOptionsWrapper, null),\n };\n case 'chartRange':\n return {\n name: localeTextFunc('chartRange', 'Chart Range'),\n subMenu: [\n 'rangeColumnChart',\n 'rangeBarChart',\n 'rangePieChart',\n 'rangeLineChart',\n 'rangeXYChart',\n 'rangeAreaChart'\n ],\n icon: core_1._.createIconNoSpan('chart', this.gridOptionsWrapper, null),\n };\n case 'pivotColumnChart':\n return {\n name: localeTextFunc('columnChart', 'Column'),\n subMenu: ['pivotGroupedColumn', 'pivotStackedColumn', 'pivotNormalizedColumn']\n };\n case 'pivotGroupedColumn':\n return pivotChartMenuItem('groupedColumn', 'Grouped‎', core_1.ChartType.GroupedColumn);\n case 'pivotStackedColumn':\n return pivotChartMenuItem('stackedColumn', 'Stacked‎', core_1.ChartType.StackedColumn);\n case 'pivotNormalizedColumn':\n return pivotChartMenuItem('normalizedColumn', '100% Stacked‎', core_1.ChartType.NormalizedColumn);\n case 'rangeColumnChart':\n return {\n name: localeTextFunc('columnChart', 'Column'),\n subMenu: ['rangeGroupedColumn', 'rangeStackedColumn', 'rangeNormalizedColumn']\n };\n case 'rangeGroupedColumn':\n return rangeChartMenuItem('groupedColumn', 'Grouped‎', core_1.ChartType.GroupedColumn);\n case 'rangeStackedColumn':\n return rangeChartMenuItem('stackedColumn', 'Stacked‎', core_1.ChartType.StackedColumn);\n case 'rangeNormalizedColumn':\n return rangeChartMenuItem('normalizedColumn', '100% Stacked‎', core_1.ChartType.NormalizedColumn);\n case 'pivotBarChart':\n return {\n name: localeTextFunc('barChart', 'Bar'),\n subMenu: ['pivotGroupedBar', 'pivotStackedBar', 'pivotNormalizedBar']\n };\n case 'pivotGroupedBar':\n return pivotChartMenuItem('groupedBar', 'Grouped‎', core_1.ChartType.GroupedBar);\n case 'pivotStackedBar':\n return pivotChartMenuItem('stackedBar', 'Stacked‎', core_1.ChartType.StackedBar);\n case 'pivotNormalizedBar':\n return pivotChartMenuItem('normalizedBar', '100% Stacked‎', core_1.ChartType.NormalizedBar);\n case 'rangeBarChart':\n return {\n name: localeTextFunc('barChart', 'Bar'),\n subMenu: ['rangeGroupedBar', 'rangeStackedBar', 'rangeNormalizedBar']\n };\n case 'rangeGroupedBar':\n return rangeChartMenuItem('groupedBar', 'Grouped‎', core_1.ChartType.GroupedBar);\n case 'rangeStackedBar':\n return rangeChartMenuItem('stackedBar', 'Stacked‎', core_1.ChartType.StackedBar);\n case 'rangeNormalizedBar':\n return rangeChartMenuItem('normalizedBar', '100% Stacked‎', core_1.ChartType.NormalizedBar);\n case 'pivotPieChart':\n return {\n name: localeTextFunc('pieChart', 'Pie'),\n subMenu: ['pivotPie', 'pivotDoughnut']\n };\n case 'pivotPie':\n return pivotChartMenuItem('pie', 'Pie‎', core_1.ChartType.Pie);\n case 'pivotDoughnut':\n return pivotChartMenuItem('doughnut', 'Doughnut‎', core_1.ChartType.Doughnut);\n case 'rangePieChart':\n return {\n name: localeTextFunc('pieChart', 'Pie'),\n subMenu: ['rangePie', 'rangeDoughnut']\n };\n case 'rangePie':\n return rangeChartMenuItem('pie', 'Pie‎', core_1.ChartType.Pie);\n case 'rangeDoughnut':\n return rangeChartMenuItem('doughnut', 'Doughnut‎', core_1.ChartType.Doughnut);\n case 'pivotLineChart':\n return pivotChartMenuItem('line', 'Line‎', core_1.ChartType.Line);\n case 'rangeLineChart':\n return rangeChartMenuItem('line', 'Line‎', core_1.ChartType.Line);\n case 'pivotXYChart':\n return {\n name: localeTextFunc('xyChart', 'X Y (Scatter)'),\n subMenu: ['pivotScatter', 'pivotBubble']\n };\n case 'pivotScatter':\n return pivotChartMenuItem('scatter', 'Scatter‎', core_1.ChartType.Scatter);\n case 'pivotBubble':\n return pivotChartMenuItem('bubble', 'Bubble‎', core_1.ChartType.Bubble);\n case 'rangeXYChart':\n return {\n name: localeTextFunc('xyChart', 'X Y (Scatter)'),\n subMenu: ['rangeScatter', 'rangeBubble']\n };\n case 'rangeScatter':\n return rangeChartMenuItem('scatter', 'Scatter‎', core_1.ChartType.Scatter);\n case 'rangeBubble':\n return rangeChartMenuItem('bubble', 'Bubble‎', core_1.ChartType.Bubble);\n case 'pivotAreaChart':\n return {\n name: localeTextFunc('areaChart', 'Area'),\n subMenu: ['pivotArea', 'pivotStackedArea', 'pivotNormalizedArea']\n };\n case 'pivotArea':\n return pivotChartMenuItem('area', 'Area‎', core_1.ChartType.Area);\n case 'pivotStackedArea':\n return pivotChartMenuItem('stackedArea', 'Stacked‎', core_1.ChartType.StackedArea);\n case 'pivotNormalizedArea':\n return pivotChartMenuItem('normalizedArea', '100% Stacked‎', core_1.ChartType.NormalizedArea);\n case 'rangeAreaChart':\n return {\n name: localeTextFunc('areaChart', 'Area'),\n subMenu: ['rangeArea', 'rangeStackedArea', 'rangeNormalizedArea']\n };\n case 'rangeArea':\n return rangeChartMenuItem('area', 'Area‎', core_1.ChartType.Area);\n case 'rangeStackedArea':\n return rangeChartMenuItem('stackedArea', 'Stacked‎', core_1.ChartType.StackedArea);\n case 'rangeNormalizedArea':\n return rangeChartMenuItem('normalizedArea', '100% Stacked‎', core_1.ChartType.NormalizedArea);\n default:\n return null;\n }\n };\n MenuItemMapper.prototype.createAggregationSubMenu = function (column) {\n var _this = this;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var columnIsAlreadyAggValue = column.isValueActive();\n var funcNames = this.aggFuncService.getFuncNames(column);\n var columnToUse;\n if (column.isPrimary()) {\n columnToUse = column;\n }\n else {\n var pivotValueColumn = column.getColDef().pivotValueColumn;\n columnToUse = core_1._.exists(pivotValueColumn) ? pivotValueColumn : undefined;\n }\n var result = [];\n funcNames.forEach(function (funcName) {\n result.push({\n name: localeTextFunc(funcName, funcName),\n action: function () {\n _this.columnController.setColumnAggFunc(columnToUse, funcName, \"contextMenu\");\n _this.columnController.addValueColumn(columnToUse, \"contextMenu\");\n },\n checked: columnIsAlreadyAggValue && columnToUse.getAggFunc() === funcName\n });\n });\n return result;\n };\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], MenuItemMapper.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], MenuItemMapper.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('gridApi')\n ], MenuItemMapper.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.Optional('clipboardService')\n ], MenuItemMapper.prototype, \"clipboardService\", void 0);\n __decorate([\n core_1.Optional('aggFuncService')\n ], MenuItemMapper.prototype, \"aggFuncService\", void 0);\n __decorate([\n core_1.Optional('chartService')\n ], MenuItemMapper.prototype, \"chartService\", void 0);\n __decorate([\n core_1.Optional('context')\n ], MenuItemMapper.prototype, \"context\", void 0);\n MenuItemMapper = __decorate([\n core_1.Bean('menuItemMapper')\n ], MenuItemMapper);\n return MenuItemMapper;\n}());\nexports.MenuItemMapper = MenuItemMapper;\n//# sourceMappingURL=menuItemMapper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar core_2 = require(\"@ag-grid-enterprise/core\");\nvar richSelectCellEditor_1 = require(\"./richSelect/richSelectCellEditor\");\nexports.RichSelectModule = {\n moduleName: core_1.ModuleNames.RichSelectModule,\n beans: [],\n userComponents: [\n { componentName: 'agRichSelect', componentClass: richSelectCellEditor_1.RichSelectCellEditor },\n { componentName: 'agRichSelectCellEditor', componentClass: richSelectCellEditor_1.RichSelectCellEditor }\n ],\n dependantModules: [\n core_2.EnterpriseCoreModule\n ]\n};\n//# sourceMappingURL=richSelectModule.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar richSelectRow_1 = require(\"./richSelectRow\");\nvar RichSelectCellEditor = /** @class */ (function (_super) {\n __extends(RichSelectCellEditor, _super);\n function RichSelectCellEditor() {\n var _this = _super.call(this, RichSelectCellEditor.TEMPLATE) || this;\n _this.selectionConfirmed = false;\n _this.searchString = '';\n return _this;\n }\n RichSelectCellEditor.prototype.init = function (params) {\n this.params = params;\n this.selectedValue = params.value;\n this.originalSelectedValue = params.value;\n this.focusAfterAttached = params.cellStartedEdit;\n this.eValue.appendChild(core_1._.createIconNoSpan('smallDown', this.gridOptionsWrapper));\n this.virtualList = new core_1.VirtualList();\n this.getContext().wireBean(this.virtualList);\n this.virtualList.setComponentCreator(this.createRowComponent.bind(this));\n this.eList.appendChild(this.virtualList.getGui());\n if (core_1._.exists(this.params.cellHeight)) {\n this.virtualList.setRowHeight(this.params.cellHeight);\n }\n this.renderSelectedValue();\n if (core_1._.missing(params.values)) {\n console.warn('ag-Grid: richSelectCellEditor requires values for it to work');\n return;\n }\n var values = params.values;\n this.virtualList.setModel({\n getRowCount: function () { return values.length; },\n getRow: function (index) { return values[index]; }\n });\n this.addGuiEventListener('keydown', this.onKeyDown.bind(this));\n var virtualListGui = this.virtualList.getGui();\n this.addDestroyableEventListener(virtualListGui, 'click', this.onClick.bind(this));\n this.addDestroyableEventListener(virtualListGui, 'mousemove', this.onMouseMove.bind(this));\n this.clearSearchString = core_1._.debounce(this.clearSearchString, 300);\n if (core_1._.exists(params.charPress)) {\n this.searchText(params.charPress);\n }\n };\n RichSelectCellEditor.prototype.onKeyDown = function (event) {\n var key = event.which || event.keyCode;\n switch (key) {\n case core_1.Constants.KEY_ENTER:\n this.onEnterKeyDown();\n break;\n case core_1.Constants.KEY_DOWN:\n case core_1.Constants.KEY_UP:\n this.onNavigationKeyPressed(event, key);\n break;\n default:\n this.searchText(event);\n }\n };\n RichSelectCellEditor.prototype.onEnterKeyDown = function () {\n this.selectionConfirmed = true;\n this.params.stopEditing();\n };\n RichSelectCellEditor.prototype.onNavigationKeyPressed = function (event, key) {\n // if we don't stop propagation, then the grids navigation kicks in\n event.stopPropagation();\n var oldIndex = this.params.values.indexOf(this.selectedValue);\n var newIndex = key === core_1.Constants.KEY_UP ? oldIndex - 1 : oldIndex + 1;\n if (newIndex >= 0 && newIndex < this.params.values.length) {\n var valueToSelect = this.params.values[newIndex];\n this.setSelectedValue(valueToSelect);\n }\n };\n RichSelectCellEditor.prototype.searchText = function (key) {\n if (typeof key !== 'string') {\n if (!core_1._.isCharacterKey(key)) {\n return;\n }\n key = key.key;\n }\n this.searchString += key;\n this.runSearch();\n this.clearSearchString();\n };\n RichSelectCellEditor.prototype.runSearch = function () {\n var values = this.params.values;\n var searchStrings;\n if (typeof values[0] === \"number\" || typeof values[0] === \"string\") {\n searchStrings = values.map(String);\n }\n if (typeof values[0] === \"object\" && this.params.colDef.keyCreator) {\n searchStrings = values.map(this.params.colDef.keyCreator);\n }\n if (!searchStrings) {\n return;\n }\n var topSuggestion = core_1._.fuzzySuggestions(this.searchString, searchStrings, true, true)[0];\n if (!topSuggestion) {\n return;\n }\n var topSuggestionIndex = searchStrings.indexOf(topSuggestion);\n var topValue = values[topSuggestionIndex];\n this.setSelectedValue(topValue);\n };\n RichSelectCellEditor.prototype.clearSearchString = function () {\n this.searchString = '';\n };\n RichSelectCellEditor.prototype.renderSelectedValue = function () {\n var _this = this;\n var valueFormatted = this.params.formatValue(this.selectedValue);\n var eValue = this.eValue;\n var params = {\n value: this.selectedValue,\n valueFormatted: valueFormatted,\n api: this.gridOptionsWrapper.getApi()\n };\n var promise = this.userComponentFactory.newCellRenderer(this.params, params);\n if (promise != null) {\n core_1._.bindCellRendererToHtmlElement(promise, eValue);\n }\n else {\n eValue.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n if (promise) {\n promise.then(function (renderer) {\n if (renderer && renderer.destroy) {\n _this.addDestroyFunc(function () { return renderer.destroy(); });\n }\n });\n }\n else {\n if (core_1._.exists(this.selectedValue)) {\n eValue.innerHTML = valueFormatted;\n }\n else {\n core_1._.clearElement(eValue);\n }\n }\n };\n RichSelectCellEditor.prototype.setSelectedValue = function (value) {\n if (this.selectedValue === value) {\n return;\n }\n var index = this.params.values.indexOf(value);\n if (index >= 0) {\n this.selectedValue = value;\n this.virtualList.ensureIndexVisible(index);\n this.virtualList.refresh();\n }\n };\n RichSelectCellEditor.prototype.createRowComponent = function (value) {\n var valueFormatted = this.params.formatValue(value);\n var row = new richSelectRow_1.RichSelectRow(this.params);\n this.getContext().wireBean(row);\n row.setState(value, valueFormatted, value === this.selectedValue);\n return row;\n };\n RichSelectCellEditor.prototype.onMouseMove = function (mouseEvent) {\n var rect = this.virtualList.getGui().getBoundingClientRect();\n var scrollTop = this.virtualList.getScrollTop();\n var mouseY = mouseEvent.clientY - rect.top + scrollTop;\n var row = Math.floor(mouseY / this.virtualList.getRowHeight());\n var value = this.params.values[row];\n // not using utils.exist() as want empty string test to pass\n if (value !== undefined) {\n this.setSelectedValue(value);\n }\n };\n RichSelectCellEditor.prototype.onClick = function () {\n this.selectionConfirmed = true;\n this.params.stopEditing();\n };\n // we need to have the gui attached before we can draw the virtual rows, as the\n // virtual row logic needs info about the gui state\n RichSelectCellEditor.prototype.afterGuiAttached = function () {\n var selectedIndex = this.params.values.indexOf(this.selectedValue);\n // we have to call this here to get the list to have the right height, ie\n // otherwise it would not have scrolls yet and ensureIndexVisible would do nothing\n this.virtualList.refresh();\n if (selectedIndex >= 0) {\n this.virtualList.ensureIndexVisible(selectedIndex);\n }\n // we call refresh again, as the list could of moved, and we need to render the new rows\n this.virtualList.refresh();\n if (this.focusAfterAttached) {\n this.getGui().focus();\n }\n };\n RichSelectCellEditor.prototype.getValue = function () {\n // NOTE: we don't use valueParser for Set Filter. The user should provide values that are to be\n // set into the data. valueParser only really makese sense when the user is typing in text (not picking\n // form a set).\n return this.selectionConfirmed ? this.selectedValue : this.originalSelectedValue;\n };\n // tab index is needed so we can focus, which is needed for keyboard events\n RichSelectCellEditor.TEMPLATE = \"
\\n
\\n
\\n
\";\n __decorate([\n core_1.Autowired('userComponentFactory')\n ], RichSelectCellEditor.prototype, \"userComponentFactory\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], RichSelectCellEditor.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.RefSelector('eValue')\n ], RichSelectCellEditor.prototype, \"eValue\", void 0);\n __decorate([\n core_1.RefSelector('eList')\n ], RichSelectCellEditor.prototype, \"eList\", void 0);\n return RichSelectCellEditor;\n}(core_1.PopupComponent));\nexports.RichSelectCellEditor = RichSelectCellEditor;\n//# sourceMappingURL=richSelectCellEditor.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar RichSelectRow = /** @class */ (function (_super) {\n __extends(RichSelectRow, _super);\n function RichSelectRow(params) {\n var _this = _super.call(this, '
') || this;\n _this.params = params;\n return _this;\n }\n RichSelectRow.prototype.setState = function (value, valueFormatted, selected) {\n var rendererSuccessful = this.populateWithRenderer(value, valueFormatted);\n if (!rendererSuccessful) {\n this.populateWithoutRenderer(value, valueFormatted);\n }\n core_1._.addOrRemoveCssClass(this.getGui(), 'ag-rich-select-row-selected', selected);\n };\n RichSelectRow.prototype.populateWithoutRenderer = function (value, valueFormatted) {\n var valueFormattedExits = valueFormatted !== null && valueFormatted !== undefined;\n var valueToRender = valueFormattedExits ? valueFormatted : value;\n if (core_1._.exists(valueToRender) && valueToRender !== '') {\n // not using innerHTML to prevent injection of HTML\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML#Security_considerations\n this.getGui().textContent = valueToRender.toString();\n }\n else {\n // putting in blank, so if missing, at least the user can click on it\n this.getGui().innerHTML = ' ';\n }\n };\n RichSelectRow.prototype.populateWithRenderer = function (value, valueFormatted) {\n var _this = this;\n // bad coder here - we are not populating all values of the cellRendererParams\n var params = {\n value: value,\n valueFormatted: valueFormatted,\n api: this.gridOptionsWrapper.getApi()\n };\n var cellRendererPromise = this.userComponentFactory.newCellRenderer(this.params, params);\n if (cellRendererPromise != null) {\n core_1._.bindCellRendererToHtmlElement(cellRendererPromise, this.getGui());\n }\n else {\n this.getGui().innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n if (cellRendererPromise) {\n cellRendererPromise.then(function (childComponent) {\n if (childComponent && childComponent.destroy) {\n _this.addDestroyFunc(childComponent.destroy.bind(childComponent));\n }\n });\n return true;\n }\n return false;\n };\n __decorate([\n core_1.Autowired('userComponentFactory')\n ], RichSelectRow.prototype, \"userComponentFactory\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], RichSelectRow.prototype, \"gridOptionsWrapper\", void 0);\n return RichSelectRow;\n}(core_1.Component));\nexports.RichSelectRow = RichSelectRow;\n//# sourceMappingURL=richSelectRow.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar core_2 = require(\"@ag-grid-enterprise/core\");\nvar serverSideRowModel_1 = require(\"./serverSideRowModel/serverSideRowModel\");\nexports.ServerSideRowModelModule = {\n moduleName: core_1.ModuleNames.ServerSideRowModelModule,\n rowModels: { 'serverSide': serverSideRowModel_1.ServerSideRowModel },\n dependantModules: [\n core_2.EnterpriseCoreModule\n ]\n};\n//# sourceMappingURL=serverSideRowModelModule.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar serverSideCache_1 = require(\"./serverSideCache\");\nvar serverSideBlock_1 = require(\"./serverSideBlock\");\nvar ServerSideRowModel = /** @class */ (function (_super) {\n __extends(ServerSideRowModel, _super);\n function ServerSideRowModel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // we don't implement as lazy row heights is not supported in this row model\n ServerSideRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) { return false; };\n ServerSideRowModel.prototype.postConstruct = function () {\n this.rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n this.addEventListeners();\n };\n ServerSideRowModel.prototype.start = function () {\n var datasource = this.gridOptionsWrapper.getServerSideDatasource();\n if (datasource) {\n this.setDatasource(datasource);\n }\n };\n ServerSideRowModel.prototype.destroyDatasource = function () {\n if (this.datasource) {\n if (this.datasource.destroy) {\n this.datasource.destroy();\n }\n this.rowRenderer.datasourceChanged();\n this.datasource = undefined;\n }\n };\n ServerSideRowModel.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ServerSideRowModel');\n };\n ServerSideRowModel.prototype.addEventListeners = function () {\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onColumnRowGroupChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_ROW_GROUP_OPENED, this.onRowGroupOpened.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.onColumnEverything.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_VALUE_CHANGED, this.onValueChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_PIVOT_CHANGED, this.onColumnPivotChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n };\n ServerSideRowModel.prototype.setDatasource = function (datasource) {\n this.destroyDatasource();\n this.datasource = datasource;\n this.reset();\n };\n ServerSideRowModel.prototype.isLastRowFound = function () {\n if (this.cacheExists()) {\n return this.rootNode.childrenCache.isMaxRowFound();\n }\n else {\n return false;\n }\n };\n ServerSideRowModel.prototype.onColumnEverything = function () {\n // this is a hack for one customer only, so they can suppress the resetting of the columns.\n // The problem the customer had was they were api.setColumnDefs() after the data source came\n // back with data. So this stops the reload from the grid after the data comes back.\n // Once we have \"AG-1591 Allow delta changes to columns\" fixed, then this hack can be taken out.\n if (this.gridOptionsWrapper.isSuppressEnterpriseResetOnNewColumns()) {\n return;\n }\n // every other customer can continue as normal and have it working!!!\n // check if anything pertaining to fetching data has changed, and if it has, reset, but if\n // it has not, don't reset\n var resetRequired;\n if (!this.cacheParams) {\n resetRequired = true;\n }\n else {\n var rowGroupColumnVos = this.toValueObjects(this.columnController.getRowGroupColumns());\n var valueColumnVos = this.toValueObjects(this.columnController.getValueColumns());\n var pivotColumnVos = this.toValueObjects(this.columnController.getPivotColumns());\n var sortModelDifferent = !core_1._.jsonEquals(this.cacheParams.sortModel, this.sortController.getSortModel());\n var rowGroupDifferent = !core_1._.jsonEquals(this.cacheParams.rowGroupCols, rowGroupColumnVos);\n var pivotDifferent = !core_1._.jsonEquals(this.cacheParams.pivotCols, pivotColumnVos);\n var valuesDifferent = !core_1._.jsonEquals(this.cacheParams.valueCols, valueColumnVos);\n resetRequired = sortModelDifferent || rowGroupDifferent || pivotDifferent || valuesDifferent;\n }\n if (resetRequired) {\n this.reset();\n }\n };\n ServerSideRowModel.prototype.onFilterChanged = function () {\n this.reset();\n };\n // returns back all the cols that were effected by the sorting. eg if we were sorting by col A,\n // and now we are sorting by col B, the list of impacted cols should be A and B. so if a cache\n // is impacted by sorting on A or B then it needs to be refreshed. this includes where the cache\n // was previously sorted by A and then the A sort now needs to be cleared.\n ServerSideRowModel.prototype.findChangedColumnsInSort = function (newSortModel, oldSortModel) {\n var allColsInBothSorts = [];\n [newSortModel, oldSortModel].forEach(function (sortModel) {\n if (sortModel) {\n var ids = sortModel.map(function (sm) { return sm.colId; });\n allColsInBothSorts = allColsInBothSorts.concat(ids);\n }\n });\n var differentSorts = function (oldSortItem, newSortItem) {\n var oldSort = oldSortItem ? oldSortItem.sort : null;\n var newSort = newSortItem ? newSortItem.sort : null;\n return oldSort !== newSort;\n };\n var differentIndexes = function (oldSortItem, newSortItem) {\n var oldIndex = oldSortModel.indexOf(oldSortItem);\n var newIndex = newSortModel.indexOf(newSortItem);\n return oldIndex !== newIndex;\n };\n return allColsInBothSorts.filter(function (colId) {\n var oldSortItem = core_1._.find(oldSortModel, function (sm) { return sm.colId === colId; });\n var newSortItem = core_1._.find(newSortModel, function (sm) { return sm.colId === colId; });\n return differentSorts(oldSortItem, newSortItem) || differentIndexes(oldSortItem, newSortItem);\n });\n };\n ServerSideRowModel.prototype.onSortChanged = function () {\n if (!this.cacheExists()) {\n return;\n }\n var newSortModel = this.extractSortModel();\n var oldSortModel = this.cacheParams.sortModel;\n var changedColumnsInSort = this.findChangedColumnsInSort(newSortModel, oldSortModel);\n this.cacheParams.sortModel = newSortModel;\n var rowGroupColIds = this.columnController.getRowGroupColumns().map(function (col) { return col.getId(); });\n var serverSideCache = this.rootNode.childrenCache;\n var sortingWithValueCol = this.isSortingWithValueColumn(changedColumnsInSort);\n var sortingWithSecondaryCol = this.isSortingWithSecondaryColumn(changedColumnsInSort);\n var sortAlwaysResets = this.gridOptionsWrapper.isServerSideSortingAlwaysResets();\n if (sortAlwaysResets || sortingWithValueCol || sortingWithSecondaryCol) {\n this.reset();\n }\n else {\n serverSideCache.refreshCacheAfterSort(changedColumnsInSort, rowGroupColIds);\n }\n };\n ServerSideRowModel.prototype.onValueChanged = function () {\n this.reset();\n };\n ServerSideRowModel.prototype.onColumnRowGroupChanged = function () {\n this.reset();\n };\n ServerSideRowModel.prototype.onColumnPivotChanged = function () {\n this.reset();\n };\n ServerSideRowModel.prototype.onPivotModeChanged = function () {\n this.reset();\n };\n ServerSideRowModel.prototype.onRowGroupOpened = function (event) {\n var _this = this;\n var rowNode = event.node;\n if (rowNode.expanded) {\n if (rowNode.master) {\n this.createDetailNode(rowNode);\n }\n else if (core_1._.missing(rowNode.childrenCache)) {\n this.createNodeCache(rowNode);\n }\n }\n else {\n if (this.gridOptionsWrapper.isPurgeClosedRowNodes() && core_1._.exists(rowNode.childrenCache)) {\n rowNode.childrenCache.destroy();\n rowNode.childrenCache = null;\n }\n }\n var shouldAnimate = function () {\n var rowAnimationEnabled = _this.gridOptionsWrapper.isAnimateRows();\n if (rowNode.master) {\n return rowAnimationEnabled && rowNode.expanded;\n }\n return rowAnimationEnabled;\n };\n this.updateRowIndexesAndBounds();\n var modelUpdatedEvent = {\n type: core_1.Events.EVENT_MODEL_UPDATED,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n newPage: false,\n newData: false,\n animate: shouldAnimate(),\n keepRenderedRows: true\n };\n this.eventService.dispatchEvent(modelUpdatedEvent);\n };\n ServerSideRowModel.prototype.reset = function () {\n this.rootNode = new core_1.RowNode();\n this.rootNode.group = true;\n this.rootNode.level = -1;\n this.getContext().wireBean(this.rootNode);\n if (this.datasource) {\n this.createNewRowNodeBlockLoader();\n this.cacheParams = this.createCacheParams();\n this.createNodeCache(this.rootNode);\n this.updateRowIndexesAndBounds();\n }\n // this event: 1) clears selection 2) updates filters 3) shows/hides 'no rows' overlay\n var rowDataChangedEvent = {\n type: core_1.Events.EVENT_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(rowDataChangedEvent);\n // this gets the row to render rows (or remove the previously rendered rows, as it's blank to start).\n // important to NOT pass in an event with keepRenderedRows or animate, as we want the renderer\n // to treat the rows as new rows, as it's all new data\n var modelUpdatedEvent = {\n type: core_1.Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n animate: false,\n keepRenderedRows: false,\n newData: false,\n newPage: false\n };\n this.eventService.dispatchEvent(modelUpdatedEvent);\n };\n ServerSideRowModel.prototype.createNewRowNodeBlockLoader = function () {\n this.destroyRowNodeBlockLoader();\n var maxConcurrentRequests = this.gridOptionsWrapper.getMaxConcurrentDatasourceRequests();\n var blockLoadDebounceMillis = this.gridOptionsWrapper.getBlockLoadDebounceMillis();\n this.rowNodeBlockLoader = new core_1.RowNodeBlockLoader(maxConcurrentRequests, blockLoadDebounceMillis);\n this.getContext().wireBean(this.rowNodeBlockLoader);\n };\n ServerSideRowModel.prototype.destroyRowNodeBlockLoader = function () {\n if (this.rowNodeBlockLoader) {\n this.rowNodeBlockLoader.destroy();\n this.rowNodeBlockLoader = undefined;\n }\n };\n ServerSideRowModel.prototype.toValueObjects = function (columns) {\n var _this = this;\n return columns.map(function (col) { return ({\n id: col.getId(),\n aggFunc: col.getAggFunc(),\n displayName: _this.columnController.getDisplayNameForColumn(col, 'model'),\n field: col.getColDef().field\n }); });\n };\n ServerSideRowModel.prototype.createCacheParams = function () {\n var rowGroupColumnVos = this.toValueObjects(this.columnController.getRowGroupColumns());\n var valueColumnVos = this.toValueObjects(this.columnController.getValueColumns());\n var pivotColumnVos = this.toValueObjects(this.columnController.getPivotColumns());\n var dynamicRowHeight = this.gridOptionsWrapper.isDynamicRowHeight();\n var maxBlocksInCache = this.gridOptionsWrapper.getMaxBlocksInCache();\n if (dynamicRowHeight && maxBlocksInCache >= 0) {\n console.warn('ag-Grid: Server Side Row Model does not support Dynamic Row Height and Cache Purging. ' +\n 'Either a) remove getRowHeight() callback or b) remove maxBlocksInCache property. Purging has been disabled.');\n maxBlocksInCache = undefined;\n }\n if (maxBlocksInCache >= 0 && this.columnController.isAutoRowHeightActive()) {\n console.warn('ag-Grid: Server Side Row Model does not support Auto Row Height and Cache Purging. ' +\n 'Either a) remove colDef.autoHeight or b) remove maxBlocksInCache property. Purging has been disabled.');\n maxBlocksInCache = undefined;\n }\n var params = {\n // the columns the user has grouped and aggregated by\n valueCols: valueColumnVos,\n rowGroupCols: rowGroupColumnVos,\n pivotCols: pivotColumnVos,\n pivotMode: this.columnController.isPivotMode(),\n // sort and filter model\n filterModel: this.filterManager.getFilterModel(),\n sortModel: this.extractSortModel(),\n rowNodeBlockLoader: this.rowNodeBlockLoader,\n datasource: this.datasource,\n lastAccessedSequence: new core_1.NumberSequence(),\n overflowSize: 1,\n initialRowCount: 1,\n maxConcurrentRequests: this.gridOptionsWrapper.getMaxConcurrentDatasourceRequests() || 0,\n maxBlocksInCache: maxBlocksInCache,\n blockSize: this.gridOptionsWrapper.getCacheBlockSize(),\n rowHeight: this.rowHeight,\n dynamicRowHeight: dynamicRowHeight\n };\n // set defaults\n if (!(params.maxConcurrentRequests >= 1)) {\n params.maxConcurrentRequests = 2;\n }\n // page size needs to be 1 or greater. having it at 1 would be silly, as you would be hitting the\n // server for one page at a time. so the default if not specified is 100.\n if (!(params.blockSize >= 1)) {\n params.blockSize = serverSideBlock_1.ServerSideBlock.DefaultBlockSize;\n }\n // if user doesn't give initial rows to display, we assume zero\n if (!(params.initialRowCount >= 1)) {\n params.initialRowCount = 0;\n }\n // if user doesn't provide overflow, we use default overflow of 1, so user can scroll past\n // the current page and request first row of next page\n if (!(params.overflowSize >= 1)) {\n params.overflowSize = 1;\n }\n return params;\n };\n ServerSideRowModel.prototype.createNodeCache = function (rowNode) {\n var cache = new serverSideCache_1.ServerSideCache(this.cacheParams, rowNode);\n this.getContext().wireBean(cache);\n cache.addEventListener(core_1.RowNodeCache.EVENT_CACHE_UPDATED, this.onCacheUpdated.bind(this));\n rowNode.childrenCache = cache;\n };\n ServerSideRowModel.prototype.onCacheUpdated = function () {\n this.updateRowIndexesAndBounds();\n var modelUpdatedEvent = {\n type: core_1.Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n animate: this.gridOptionsWrapper.isAnimateRows(),\n keepRenderedRows: true,\n newPage: false,\n newData: false\n };\n this.eventService.dispatchEvent(modelUpdatedEvent);\n };\n ServerSideRowModel.prototype.updateRowIndexesAndBounds = function () {\n if (this.cacheExists()) {\n // NOTE: should not be casting here, the RowModel should use IServerSideRowModel interface?\n var serverSideCache = this.rootNode.childrenCache;\n this.resetRowTops(serverSideCache);\n this.setDisplayIndexes(serverSideCache);\n }\n };\n ServerSideRowModel.prototype.setDisplayIndexes = function (cache) {\n var numberSequence = new core_1.NumberSequence();\n var nextRowTop = { value: 0 };\n cache.setDisplayIndexes(numberSequence, nextRowTop);\n };\n // resetting row tops is needed for animation, as part of the operation is saving the old location,\n // which is needed for rows that are transitioning in\n ServerSideRowModel.prototype.resetRowTops = function (cache) {\n var numberSequence = new core_1.NumberSequence();\n cache.forEachNodeDeep(function (rowNode) { return rowNode.clearRowTop(); }, numberSequence);\n };\n ServerSideRowModel.prototype.getRow = function (index) {\n if (this.cacheExists()) {\n return this.rootNode.childrenCache.getRow(index);\n }\n return null;\n };\n ServerSideRowModel.prototype.getRowCount = function () {\n if (!this.cacheExists()) {\n return 1;\n }\n var serverSideCache = this.rootNode.childrenCache;\n var res = serverSideCache.getDisplayIndexEnd();\n return res;\n };\n ServerSideRowModel.prototype.getTopLevelRowCount = function () {\n if (!this.cacheExists()) {\n return 1;\n }\n var serverSideCache = this.rootNode.childrenCache;\n return serverSideCache.getVirtualRowCount();\n };\n ServerSideRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n if (!this.cacheExists()) {\n return topLevelIndex;\n }\n var serverSideCache = this.rootNode.childrenCache;\n return serverSideCache.getTopLevelRowDisplayedIndex(topLevelIndex);\n };\n ServerSideRowModel.prototype.getRowBounds = function (index) {\n if (!this.cacheExists()) {\n return {\n rowTop: 0,\n rowHeight: this.rowHeight\n };\n }\n var serverSideCache = this.rootNode.childrenCache;\n return serverSideCache.getRowBounds(index);\n };\n ServerSideRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n if (pixel === 0) {\n return 0;\n }\n if (!this.cacheExists()) {\n return 0;\n }\n var serverSideCache = this.rootNode.childrenCache;\n return serverSideCache.getRowIndexAtPixel(pixel);\n };\n ServerSideRowModel.prototype.getCurrentPageHeight = function () {\n return this.rowHeight * this.getRowCount();\n };\n ServerSideRowModel.prototype.isEmpty = function () {\n return false;\n };\n ServerSideRowModel.prototype.isRowsToRender = function () {\n return this.cacheExists() && this.getRowCount() > 0;\n };\n ServerSideRowModel.prototype.getType = function () {\n return core_1.Constants.ROW_MODEL_TYPE_SERVER_SIDE;\n };\n ServerSideRowModel.prototype.forEachNode = function (callback) {\n if (this.cacheExists()) {\n this.rootNode.childrenCache.forEachNodeDeep(callback);\n }\n };\n ServerSideRowModel.prototype.executeOnCache = function (route, callback) {\n if (this.cacheExists()) {\n var topLevelCache = this.rootNode.childrenCache;\n var cacheToPurge = topLevelCache.getChildCache(route);\n if (cacheToPurge) {\n callback(cacheToPurge);\n }\n }\n };\n ServerSideRowModel.prototype.purgeCache = function (route) {\n if (route === void 0) { route = []; }\n this.executeOnCache(route, function (cache) { return cache.purgeCache(); });\n };\n ServerSideRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n if (core_1._.exists(firstInRange) && firstInRange.parent !== lastInRange.parent) {\n return [];\n }\n return lastInRange.parent.childrenCache.getRowNodesInRange(firstInRange, lastInRange);\n };\n ServerSideRowModel.prototype.getRowNode = function (id) {\n var result = null;\n this.forEachNode(function (rowNode) {\n if (rowNode.id === id) {\n result = rowNode;\n }\n if (rowNode.detailNode && rowNode.detailNode.id === id) {\n result = rowNode.detailNode;\n }\n });\n return result;\n };\n ServerSideRowModel.prototype.getBlockState = function () {\n if (this.rowNodeBlockLoader) {\n return this.rowNodeBlockLoader.getBlockState();\n }\n else {\n return null;\n }\n };\n // always returns true - this is used by the\n ServerSideRowModel.prototype.isRowPresent = function (rowNode) {\n var foundRowNode = this.getRowNode(rowNode.id);\n return !!foundRowNode;\n };\n ServerSideRowModel.prototype.extractSortModel = function () {\n var sortModel = this.sortController.getSortModel();\n // when using tree data we just return the sort model with the 'ag-Grid-AutoColumn' as is, i.e not broken out\n // into it's constitute group columns as they are not defined up front and can vary per node.\n if (this.gridOptionsWrapper.isTreeData()) {\n return sortModel;\n }\n var rowGroupCols = this.toValueObjects(this.columnController.getRowGroupColumns());\n // find index of auto group column in sort model\n var autoGroupIndex = -1;\n for (var i = 0; i < sortModel.length; ++i) {\n if (sortModel[i].colId === core_1.Constants.GROUP_AUTO_COLUMN_ID) {\n autoGroupIndex = i;\n break;\n }\n }\n // replace auto column with individual group columns\n if (autoGroupIndex > -1) {\n var individualGroupCols = rowGroupCols.map(function (group) {\n return {\n colId: group.field,\n sort: sortModel[autoGroupIndex].sort\n };\n });\n // remove auto group column\n sortModel.splice(autoGroupIndex, 1);\n var _loop_1 = function (i) {\n var individualGroupCol = individualGroupCols[i];\n // don't add individual group column if non group column already exists as it gets precedence\n var sameNonGroupColumnExists = sortModel.some(function (sm) { return sm.colId === individualGroupCol.colId; });\n if (sameNonGroupColumnExists) {\n return \"continue\";\n }\n sortModel.splice(autoGroupIndex++, 0, individualGroupCol);\n };\n // insert individual group columns\n for (var i = 0; i < individualGroupCols.length; i++) {\n _loop_1(i);\n }\n }\n // strip out multi-column prefix on colId's\n if (this.gridOptionsWrapper.isGroupMultiAutoColumn()) {\n var multiColumnPrefix = core_1.Constants.GROUP_AUTO_COLUMN_ID + \"-\";\n for (var i = 0; i < sortModel.length; ++i) {\n if (sortModel[i].colId.indexOf(multiColumnPrefix) > -1) {\n sortModel[i].colId = sortModel[i].colId.substr(multiColumnPrefix.length);\n }\n }\n }\n return sortModel;\n };\n ServerSideRowModel.prototype.isSortingWithValueColumn = function (changedColumnsInSort) {\n var valueColIds = this.columnController.getValueColumns().map(function (col) { return col.getColId(); });\n for (var i = 0; i < changedColumnsInSort.length; i++) {\n if (valueColIds.indexOf(changedColumnsInSort[i]) > -1) {\n return true;\n }\n }\n return false;\n };\n ServerSideRowModel.prototype.isSortingWithSecondaryColumn = function (changedColumnsInSort) {\n if (!this.columnController.getSecondaryColumns()) {\n return false;\n }\n var secondaryColIds = this.columnController.getSecondaryColumns().map(function (col) { return col.getColId(); });\n for (var i = 0; i < changedColumnsInSort.length; i++) {\n if (secondaryColIds.indexOf(changedColumnsInSort[i]) > -1) {\n return true;\n }\n }\n return false;\n };\n ServerSideRowModel.prototype.cacheExists = function () {\n return core_1._.exists(this.rootNode) && core_1._.exists(this.rootNode.childrenCache);\n };\n ServerSideRowModel.prototype.createDetailNode = function (masterNode) {\n if (core_1._.exists(masterNode.detailNode)) {\n return masterNode.detailNode;\n }\n else {\n var detailNode = new core_1.RowNode();\n this.getContext().wireBean(detailNode);\n detailNode.detail = true;\n detailNode.selectable = false;\n detailNode.parent = masterNode;\n if (core_1._.exists(masterNode.id)) {\n detailNode.id = 'detail_' + masterNode.id;\n }\n detailNode.data = masterNode.data;\n detailNode.level = masterNode.level + 1;\n var defaultDetailRowHeight = 200;\n var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(detailNode).height;\n detailNode.rowHeight = rowHeight ? rowHeight : defaultDetailRowHeight;\n masterNode.detailNode = detailNode;\n return detailNode;\n }\n };\n ServerSideRowModel.prototype.isLoading = function () {\n return this.rowNodeBlockLoader ? this.rowNodeBlockLoader.isLoading() : false;\n };\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], ServerSideRowModel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], ServerSideRowModel.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('columnController')\n ], ServerSideRowModel.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('filterManager')\n ], ServerSideRowModel.prototype, \"filterManager\", void 0);\n __decorate([\n core_1.Autowired('sortController')\n ], ServerSideRowModel.prototype, \"sortController\", void 0);\n __decorate([\n core_1.Autowired('gridApi')\n ], ServerSideRowModel.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.Autowired('columnApi')\n ], ServerSideRowModel.prototype, \"columnApi\", void 0);\n __decorate([\n core_1.Autowired('rowRenderer')\n ], ServerSideRowModel.prototype, \"rowRenderer\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ServerSideRowModel.prototype, \"postConstruct\", null);\n __decorate([\n core_1.PreDestroy\n ], ServerSideRowModel.prototype, \"destroyDatasource\", null);\n __decorate([\n __param(0, core_1.Qualifier('loggerFactory'))\n ], ServerSideRowModel.prototype, \"setBeans\", null);\n ServerSideRowModel = __decorate([\n core_1.Bean('rowModel')\n ], ServerSideRowModel);\n return ServerSideRowModel;\n}(core_1.BeanStub));\nexports.ServerSideRowModel = ServerSideRowModel;\n//# sourceMappingURL=serverSideRowModel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar serverSideBlock_1 = require(\"./serverSideBlock\");\nvar ServerSideCache = /** @class */ (function (_super) {\n __extends(ServerSideCache, _super);\n function ServerSideCache(cacheParams, parentRowNode) {\n var _this = _super.call(this, cacheParams) || this;\n // this will always be zero for the top level cache only,\n // all the other ones change as the groups open and close\n _this.displayIndexStart = 0;\n _this.displayIndexEnd = 0; // not sure if setting this one to zero is necessary\n _this.cacheTop = 0;\n _this.blockHeights = {};\n _this.parentRowNode = parentRowNode;\n return _this;\n }\n ServerSideCache.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ServerSideCache');\n };\n ServerSideCache.prototype.init = function () {\n _super.prototype.init.call(this);\n };\n ServerSideCache.prototype.getRowBounds = function (index) {\n var _this = this;\n this.logger.log(\"getRowBounds(\" + index + \")\");\n // we return null if row not found\n // note - cast to \"any\" due to https://github.com/Microsoft/TypeScript/issues/11498\n // should be RowBounds\n var result;\n var blockFound = false;\n // note - cast to \"any\" due to https://github.com/Microsoft/TypeScript/issues/11498\n // should be ServerSideBlock\n var lastBlock = null;\n this.forEachBlockInOrder(function (block) {\n if (blockFound) {\n return;\n }\n if (block.isDisplayIndexInBlock(index)) {\n result = block.getRowBounds(index, _this.getVirtualRowCount());\n blockFound = true;\n }\n else if (block.isBlockBefore(index)) {\n lastBlock = block;\n }\n });\n if (!blockFound) {\n var nextRowTop = void 0;\n var nextRowIndex = void 0;\n if (lastBlock !== null) {\n nextRowTop = lastBlock.getBlockTop() + lastBlock.getBlockHeight();\n nextRowIndex = lastBlock.getDisplayIndexEnd();\n }\n else {\n nextRowTop = this.cacheTop;\n nextRowIndex = this.displayIndexStart;\n }\n var rowsBetween = index - nextRowIndex;\n result = {\n rowHeight: this.cacheParams.rowHeight,\n rowTop: nextRowTop + rowsBetween * this.cacheParams.rowHeight\n };\n }\n // NOTE: what about purged blocks\n this.logger.log(\"getRowBounds(\" + index + \"), result = \" + result);\n return result;\n };\n ServerSideCache.prototype.destroyBlock = function (block) {\n _super.prototype.destroyBlock.call(this, block);\n };\n ServerSideCache.prototype.getRowIndexAtPixel = function (pixel) {\n var _this = this;\n this.logger.log(\"getRowIndexAtPixel(\" + pixel + \")\");\n // we return null if row not found\n // note - cast to \"any\" due to https://github.com/Microsoft/TypeScript/issues/11498\n // should be number\n var result;\n var blockFound = false;\n // note - cast to \"any\" due to https://github.com/Microsoft/TypeScript/issues/11498\n // should be ServerSideBlock\n var lastBlock;\n this.forEachBlockInOrder(function (block) {\n if (blockFound) {\n return;\n }\n if (block.isPixelInRange(pixel)) {\n result = block.getRowIndexAtPixel(pixel, _this.getVirtualRowCount());\n blockFound = true;\n }\n else if (block.getBlockTop() < pixel) {\n lastBlock = block;\n }\n });\n if (!blockFound) {\n var nextRowTop = void 0;\n var nextRowIndex = void 0;\n if (lastBlock) {\n nextRowTop = lastBlock.getBlockTop() + lastBlock.getBlockHeight();\n nextRowIndex = lastBlock.getDisplayIndexEnd();\n }\n else {\n nextRowTop = this.cacheTop;\n nextRowIndex = this.displayIndexStart;\n }\n var pixelsBetween = pixel - nextRowTop;\n var rowsBetween = (pixelsBetween / this.cacheParams.rowHeight) | 0;\n result = nextRowIndex + rowsBetween;\n }\n var lastAllowedIndex = this.getDisplayIndexEnd() - 1;\n if (result > lastAllowedIndex) {\n result = lastAllowedIndex;\n }\n //NOTE: purged\n this.logger.log(\"getRowIndexAtPixel(\" + pixel + \") result = \" + result);\n return result;\n };\n ServerSideCache.prototype.clearRowTops = function () {\n var _this = this;\n this.forEachBlockInOrder(function (block) { return block.clearRowTops(_this.getVirtualRowCount()); });\n };\n ServerSideCache.prototype.setDisplayIndexes = function (displayIndexSeq, nextRowTop) {\n var _this = this;\n this.displayIndexStart = displayIndexSeq.peek();\n this.cacheTop = nextRowTop.value;\n var lastBlockId = -1;\n var blockSize = this.getBlockSize();\n this.forEachBlockInOrder(function (currentBlock, blockId) {\n // if we skipped blocks, then we need to skip the row indexes. we assume that all missing\n // blocks are made up of closed RowNodes only (if they were groups), as we never expire from\n // the cache if any row nodes are open.\n var blocksSkippedCount = blockId - lastBlockId - 1;\n var rowsSkippedCount = blocksSkippedCount * blockSize;\n if (rowsSkippedCount > 0) {\n displayIndexSeq.skip(rowsSkippedCount);\n }\n for (var i = 1; i <= blocksSkippedCount; i++) {\n var blockToAddId = blockId - i;\n if (core_1._.exists(_this.blockHeights[blockToAddId])) {\n nextRowTop.value += _this.blockHeights[blockToAddId];\n }\n else {\n nextRowTop.value += blockSize * _this.cacheParams.rowHeight;\n }\n }\n lastBlockId = blockId;\n currentBlock.setDisplayIndexes(displayIndexSeq, _this.getVirtualRowCount(), nextRowTop);\n _this.blockHeights[blockId] = currentBlock.getBlockHeight();\n });\n // if any blocks missing at the end, need to increase the row index for them also\n // eg if block size = 10, we have total rows of 25 (indexes 0 .. 24), but first 2 blocks loaded (because\n // last row was ejected from cache), then:\n // lastVisitedRow = 19, virtualRowCount = 25, rows not accounted for = 5 (24 - 19)\n var lastVisitedRow = ((lastBlockId + 1) * blockSize) - 1;\n var rowCount = this.getVirtualRowCount();\n var rowsNotAccountedFor = rowCount - lastVisitedRow - 1;\n if (rowsNotAccountedFor > 0) {\n displayIndexSeq.skip(rowsNotAccountedFor);\n nextRowTop.value += rowsNotAccountedFor * this.cacheParams.rowHeight;\n }\n this.displayIndexEnd = displayIndexSeq.peek();\n this.cacheHeight = nextRowTop.value - this.cacheTop;\n };\n // gets called in a) init() above and b) by the grid\n ServerSideCache.prototype.getRow = function (displayRowIndex, dontCreateBlock) {\n if (dontCreateBlock === void 0) { dontCreateBlock = false; }\n // this can happen if asking for a row that doesn't exist in the model,\n // eg if a cell range is selected, and the user filters so rows no longer\n // exist\n if (!this.isDisplayIndexInCache(displayRowIndex)) {\n return null;\n }\n // if we have the block, then this is the block\n var block = null;\n // this is the last block that we have BEFORE the right block\n // note - cast to \"any\" due to https://github.com/Microsoft/TypeScript/issues/11498\n // should be ServerSideBlock\n var beforeBlock = null;\n this.forEachBlockInOrder(function (currentBlock) {\n if (currentBlock.isDisplayIndexInBlock(displayRowIndex)) {\n block = currentBlock;\n }\n else if (currentBlock.isBlockBefore(displayRowIndex)) {\n // this will get assigned many times, but the last time will\n // be the closest block to the required block that is BEFORE\n beforeBlock = currentBlock;\n }\n });\n // when we are moving rows around, we don't want to trigger loads\n if (core_1._.missing(block) && dontCreateBlock) {\n return null;\n }\n var blockSize = this.getBlockSize();\n // if block not found, we need to load it\n if (core_1._.missing(block)) {\n var blockNumber = void 0;\n var displayIndexStart_1;\n var nextRowTop = void 0;\n // because missing blocks are always fully closed, we can work out\n // the start index of the block we want by hopping from the closest block,\n // as we know the row count in closed blocks is equal to the page size\n if (beforeBlock) {\n blockNumber = beforeBlock.getBlockNumber() + 1;\n displayIndexStart_1 = beforeBlock.getDisplayIndexEnd();\n nextRowTop = beforeBlock.getBlockHeight() + beforeBlock.getBlockTop();\n var isInRange = function () {\n return displayRowIndex >= displayIndexStart_1 && displayRowIndex < (displayIndexStart_1 + blockSize);\n };\n while (!isInRange()) {\n displayIndexStart_1 += blockSize;\n var cachedBlockHeight = this.blockHeights[blockNumber];\n if (core_1._.exists(cachedBlockHeight)) {\n nextRowTop += cachedBlockHeight;\n }\n else {\n nextRowTop += this.cacheParams.rowHeight * blockSize;\n }\n blockNumber++;\n }\n }\n else {\n var localIndex = displayRowIndex - this.displayIndexStart;\n blockNumber = Math.floor(localIndex / blockSize);\n displayIndexStart_1 = this.displayIndexStart + (blockNumber * blockSize);\n nextRowTop = this.cacheTop + (blockNumber * blockSize * this.cacheParams.rowHeight);\n }\n block = this.createBlock(blockNumber, displayIndexStart_1, { value: nextRowTop });\n this.logger.log(\"block missing, rowIndex = \" + displayRowIndex + \", creating #\" + blockNumber + \", displayIndexStart = \" + displayIndexStart_1);\n }\n return block ? block.getRow(displayRowIndex) : null;\n };\n ServerSideCache.prototype.getBlockSize = function () {\n return this.cacheParams.blockSize ? this.cacheParams.blockSize : serverSideBlock_1.ServerSideBlock.DefaultBlockSize;\n };\n ServerSideCache.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n var blockSize = this.getBlockSize();\n var blockId = Math.floor(topLevelIndex / blockSize);\n var block = this.getBlock(blockId);\n if (block) {\n // if we found a block, means row is in memory, so we can report the row index directly\n var rowNode = block.getRowUsingLocalIndex(topLevelIndex, true);\n return rowNode.rowIndex;\n }\n else {\n // otherwise we need to calculate it from the previous block\n var blockBefore_1;\n this.forEachBlockInOrder(function (currentBlock, currentId) {\n if (blockId > currentId) {\n // this will get assigned many times, but the last time will\n // be the closest block to the required block that is BEFORE\n blockBefore_1 = currentBlock;\n }\n });\n if (blockBefore_1) {\n // note: the local index is the same as the top level index, two terms for same thing\n //\n // get index of the last row before this row\n // eg if blocksize = 100, then:\n // last row of first block is 99 (100 * 1) -1;\n // last row of second block is 199 (100 * 2) -1;\n var lastRowTopLevelIndex = (blockSize * (blockBefore_1.getBlockNumber() + 1)) - 1;\n // this is the last loaded rownode in the cache that is before the row we are interested in.\n // we are guaranteed no rows are open. so the difference between the topTopIndex will be the\n // same as the difference between the displayed index\n var indexDiff = topLevelIndex - lastRowTopLevelIndex;\n var lastRowNode = blockBefore_1.getRowUsingLocalIndex(lastRowTopLevelIndex, true);\n return lastRowNode.rowIndex + indexDiff;\n }\n else {\n return topLevelIndex;\n }\n }\n };\n ServerSideCache.prototype.createBlock = function (blockNumber, displayIndex, nextRowTop) {\n var newBlock = new serverSideBlock_1.ServerSideBlock(blockNumber, this.parentRowNode, this.cacheParams, this);\n this.getContext().wireBean(newBlock);\n var displayIndexSequence = new core_1.NumberSequence(displayIndex);\n newBlock.setDisplayIndexes(displayIndexSequence, this.getVirtualRowCount(), nextRowTop);\n this.postCreateBlock(newBlock);\n return newBlock;\n };\n ServerSideCache.prototype.getDisplayIndexEnd = function () {\n return this.displayIndexEnd;\n };\n ServerSideCache.prototype.isDisplayIndexInCache = function (displayIndex) {\n if (this.getVirtualRowCount() === 0) {\n return false;\n }\n return displayIndex >= this.displayIndexStart && displayIndex < this.displayIndexEnd;\n };\n ServerSideCache.prototype.getChildCache = function (keys) {\n var _this = this;\n if (core_1._.missingOrEmpty(keys)) {\n return this;\n }\n var nextKey = keys[0];\n var nextServerSideCache = null;\n this.forEachBlockInOrder(function (block) {\n // callback: (rowNode: RowNode, index: number) => void, sequence: NumberSequence, rowCount: number\n block.forEachNodeShallow(function (rowNode) {\n if (rowNode.key === nextKey) {\n nextServerSideCache = rowNode.childrenCache;\n }\n }, new core_1.NumberSequence(), _this.getVirtualRowCount());\n });\n if (nextServerSideCache) {\n var keyListForNextLevel = keys.slice(1, keys.length);\n return nextServerSideCache ? nextServerSideCache.getChildCache(keyListForNextLevel) : null;\n }\n else {\n return null;\n }\n };\n ServerSideCache.prototype.isPixelInRange = function (pixel) {\n if (this.getVirtualRowCount() === 0) {\n return false;\n }\n return pixel >= this.cacheTop && pixel < (this.cacheTop + this.cacheHeight);\n };\n ServerSideCache.prototype.refreshCacheAfterSort = function (changedColumnsInSort, rowGroupColIds) {\n var _this = this;\n var level = this.parentRowNode.level + 1;\n var grouping = level < this.cacheParams.rowGroupCols.length;\n var shouldPurgeCache;\n if (grouping) {\n var groupColVo = this.cacheParams.rowGroupCols[level];\n var groupField = groupColVo.field;\n var rowGroupBlock = rowGroupColIds.indexOf(groupField) > -1;\n var sortingByGroup = changedColumnsInSort.indexOf(groupField) > -1;\n shouldPurgeCache = rowGroupBlock && sortingByGroup;\n }\n else {\n shouldPurgeCache = true;\n }\n if (shouldPurgeCache) {\n this.purgeCache();\n }\n else {\n this.forEachBlockInOrder(function (block) {\n if (block.isGroupLevel()) {\n var callback = function (rowNode) {\n var nextCache = rowNode.childrenCache;\n if (nextCache) {\n nextCache.refreshCacheAfterSort(changedColumnsInSort, rowGroupColIds);\n }\n };\n block.forEachNodeShallow(callback, new core_1.NumberSequence(), _this.getVirtualRowCount());\n }\n });\n }\n };\n __decorate([\n core_1.Autowired('eventService')\n ], ServerSideCache.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], ServerSideCache.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n __param(0, core_1.Qualifier('loggerFactory'))\n ], ServerSideCache.prototype, \"setBeans\", null);\n __decorate([\n core_1.PostConstruct\n ], ServerSideCache.prototype, \"init\", null);\n return ServerSideCache;\n}(core_1.RowNodeCache));\nexports.ServerSideCache = ServerSideCache;\n//# sourceMappingURL=serverSideCache.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar core_2 = require(\"@ag-grid-enterprise/core\");\nvar setFilter_1 = require(\"./setFilter/setFilter\");\nvar setFloatingFilter_1 = require(\"./setFilter/setFloatingFilter\");\nexports.SetFilterModule = {\n moduleName: core_1.ModuleNames.SetFilterModule,\n beans: [],\n userComponents: [\n { componentName: 'agSetColumnFilter', componentClass: setFilter_1.SetFilter },\n { componentName: 'agSetColumnFloatingFilter', componentClass: setFloatingFilter_1.SetFloatingFilterComp },\n ],\n dependantModules: [\n core_2.EnterpriseCoreModule\n ]\n};\n//# sourceMappingURL=setFilterModule.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar setValueModel_1 = require(\"./setValueModel\");\nvar setFilterListItem_1 = require(\"./setFilterListItem\");\nvar CheckboxState;\n(function (CheckboxState) {\n CheckboxState[CheckboxState[\"CHECKED\"] = 0] = \"CHECKED\";\n CheckboxState[CheckboxState[\"UNCHECKED\"] = 1] = \"UNCHECKED\";\n CheckboxState[CheckboxState[\"INTERMEDIATE\"] = 2] = \"INTERMEDIATE\";\n})(CheckboxState || (CheckboxState = {}));\nvar SetFilter = /** @class */ (function (_super) {\n __extends(SetFilter, _super);\n function SetFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // unlike the simple filter's, nothing in the set filter UI shows/hides.\n // maybe this method belongs in abstractSimpleFilter???\n SetFilter.prototype.updateUiVisibility = function () { };\n SetFilter.prototype.createBodyTemplate = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n return \"
\" + translate('loadingOoo', 'Loading...') + \"
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\";\n };\n SetFilter.prototype.resetUiToDefaults = function () {\n this.setMiniFilter(null);\n this.valueModel.setModel(null, true);\n this.selectEverything();\n };\n SetFilter.prototype.setModelIntoUi = function (model) {\n this.resetUiToDefaults();\n if (model) {\n if (model instanceof Array) {\n var message_1 = 'ag-Grid: The Set Filter Model is no longer an array and models as arrays are ' +\n 'deprecated. Please check the docs on what the set filter model looks like. Future versions of ' +\n 'ag-Grid will have the array version of the model removed.';\n core_1._.doOnce(function () { return console.warn(message_1); }, 'setFilter.modelAsArray');\n }\n // also supporting old filter model for backwards compatibility\n var newValues = (model instanceof Array) ? model : model.values;\n this.valueModel.setModel(newValues);\n this.updateSelectAll();\n this.virtualList.refresh();\n }\n };\n SetFilter.prototype.getModelFromUi = function () {\n var values = this.valueModel.getModel();\n if (!values) {\n return null;\n }\n if (this.gridOptionsWrapper.isEnableOldSetFilterModel()) {\n // this is a hack, it breaks casting rules, to apply with old model\n return values;\n }\n else {\n return {\n values: values,\n filterType: 'set'\n };\n }\n };\n SetFilter.prototype.areModelsEqual = function (a, b) {\n return false;\n };\n SetFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.checkSetFilterDeprecatedParams(params);\n this.setFilterParams = params;\n this.eCheckedIcon = core_1._.createIconNoSpan('checkboxChecked', this.gridOptionsWrapper, this.setFilterParams.column);\n this.eUncheckedIcon = core_1._.createIconNoSpan('checkboxUnchecked', this.gridOptionsWrapper, this.setFilterParams.column);\n this.eIndeterminateCheckedIcon = core_1._.createIconNoSpan('checkboxIndeterminate', this.gridOptionsWrapper, this.setFilterParams.column);\n if (this.gridOptionsWrapper.useNativeCheckboxes()) {\n this.eSelectAllCheckbox = document.createElement(\"input\");\n this.eSelectAllCheckbox.type = \"checkbox\";\n this.eSelectAllCheckbox.className = \"ag-native-checkbox\";\n this.eSelectAll.appendChild(this.eSelectAllCheckbox);\n }\n this.initialiseFilterBodyUi();\n var syncValuesAfterDataChange = !params.suppressSyncValuesAfterDataChange\n // sync values only with CSRM\n && this.rowModel.getType() === core_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE\n // sync only needed if user not providing values\n && !params.values;\n if (syncValuesAfterDataChange) {\n this.setupSyncValuesAfterDataChange();\n }\n };\n SetFilter.prototype.checkSetFilterDeprecatedParams = function (params) {\n if (params.syncValuesLikeExcel) {\n var message_2 = 'ag-Grid: since version 22.x, the Set Filter param syncValuesLikeExcel is no longer' +\n ' used as this is the default behaviour. To turn this default behaviour off, use the' +\n ' param suppressSyncValuesAfterDataChange';\n core_1._.doOnce(function () { return console.warn(message_2); }, 'syncValuesLikeExcel deprecated');\n }\n if (params.selectAllOnMiniFilter) {\n var message_3 = 'ag-Grid: since version 22.x, the Set Filter param selectAllOnMiniFilter is no longer' +\n ' used as this is the default behaviour.';\n core_1._.doOnce(function () { return console.warn(message_3); }, 'selectAllOnMiniFilter deprecated');\n }\n };\n SetFilter.prototype.resetFilterValuesAndReapplyModel = function () {\n var modelBeforeUpdate = this.getModel();\n this.resetFilterValues();\n if (modelBeforeUpdate) {\n this.setModel(modelBeforeUpdate);\n }\n };\n SetFilter.prototype.setupSyncValuesAfterDataChange = function () {\n var _this = this;\n var col = this.setFilterParams.column;\n var rowDataUpdatedListener = function () {\n _this.resetFilterValuesAndReapplyModel();\n };\n var cellValueChangedListener = function (event) {\n // only interested in changes to do with this column\n if (event.column !== col) {\n return;\n }\n _this.resetFilterValuesAndReapplyModel();\n };\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_ROW_DATA_UPDATED, rowDataUpdatedListener);\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_CELL_VALUE_CHANGED, cellValueChangedListener);\n };\n SetFilter.prototype.updateCheckboxIcon = function () {\n if (this.gridOptionsWrapper.useNativeCheckboxes()) {\n this.eSelectAllCheckbox.checked = this.selectAllState === CheckboxState.CHECKED;\n this.eSelectAllCheckbox.indeterminate = this.selectAllState === CheckboxState.INTERMEDIATE;\n }\n else {\n core_1._.clearElement(this.eSelectAll);\n var icon = void 0;\n switch (this.selectAllState) {\n case CheckboxState.INTERMEDIATE:\n icon = this.eIndeterminateCheckedIcon;\n break;\n case CheckboxState.CHECKED:\n icon = this.eCheckedIcon;\n break;\n case CheckboxState.UNCHECKED:\n icon = this.eUncheckedIcon;\n break;\n default: // default happens when initialising for first time\n icon = this.eCheckedIcon;\n break;\n }\n this.eSelectAll.appendChild(icon);\n }\n };\n SetFilter.prototype.setLoading = function (loading) {\n core_1._.setDisplayed(this.eFilterLoading, loading);\n };\n SetFilter.prototype.initialiseFilterBodyUi = function () {\n var _this = this;\n this.virtualList = new core_1.VirtualList();\n this.getContext().wireBean(this.virtualList);\n var eSetFilterList = this.getRefElement('eSetFilterList');\n if (eSetFilterList) {\n eSetFilterList.appendChild(this.virtualList.getGui());\n }\n this.virtualList.setComponentCreator(this.createSetListItem.bind(this));\n this.valueModel = new setValueModel_1.SetValueModel(this.setFilterParams.colDef, this.setFilterParams.rowModel, this.setFilterParams.valueGetter, this.setFilterParams.doesRowPassOtherFilter, this.setFilterParams.suppressSorting, function (values, toSelect) { return _this.setFilterValues(values, toSelect ? false : true, toSelect ? true : false, toSelect); }, this.setLoading.bind(this), this.valueFormatterService, this.setFilterParams.column);\n this.virtualList.setModel(new ModelWrapper(this.valueModel));\n core_1._.setDisplayed(this.getGui().querySelector('#ag-mini-filter'), !this.setFilterParams.suppressMiniFilter);\n this.eMiniFilter.value = this.valueModel.getMiniFilter();\n this.addDestroyableEventListener(this.eMiniFilter, 'input', this.onMiniFilterInput.bind(this));\n this.addDestroyableEventListener(this.eMiniFilter, 'keypress', this.onMiniFilterKeyPress.bind(this));\n this.updateCheckboxIcon();\n this.addDestroyableEventListener(this.eSelectAllContainer, 'click', this.onSelectAll.bind(this));\n this.updateSelectAll();\n if (this.setFilterParams.suppressSelectAll) {\n core_1._.setDisplayed(this.eSelectAllContainer, false);\n }\n this.virtualList.refresh();\n };\n SetFilter.prototype.createSetListItem = function (value) {\n var _this = this;\n var listItem = new setFilterListItem_1.SetFilterListItem(value, this.setFilterParams.column);\n this.getContext().wireBean(listItem);\n listItem.setSelected(this.valueModel.isValueSelected(value));\n listItem.addEventListener(setFilterListItem_1.SetFilterListItem.EVENT_SELECTED, function () {\n _this.onItemSelected(value, listItem.isSelected());\n });\n return listItem;\n };\n // we need to have the gui attached before we can draw the virtual rows, as the\n // virtual row logic needs info about the gui state\n SetFilter.prototype.afterGuiAttached = function (params) {\n this.virtualList.refresh();\n this.eMiniFilter.focus();\n };\n SetFilter.prototype.refreshVirtualList = function () {\n this.virtualList.refresh();\n };\n SetFilter.prototype.applyModel = function () {\n var _this = this;\n var res = _super.prototype.applyModel.call(this);\n // keep the appliedModelValuesMapped in sync with the applied model\n var appliedModel = this.getModel();\n if (appliedModel) {\n this.appliedModelValuesMapped = {};\n appliedModel.values.forEach(function (value) { return _this.appliedModelValuesMapped[value] = true; });\n }\n else {\n this.appliedModelValuesMapped = undefined;\n }\n return res;\n };\n SetFilter.prototype.doesFilterPass = function (params) {\n // should never happen, if filter model not set, then this method should never be called\n if (!this.appliedModelValuesMapped) {\n return true;\n }\n var value = this.setFilterParams.valueGetter(params.node);\n if (this.setFilterParams.colDef.keyCreator) {\n value = this.setFilterParams.colDef.keyCreator({ value: value });\n }\n value = core_1._.makeNull(value);\n if (Array.isArray(value)) {\n for (var i = 0; i < value.length; i++) {\n var valueExistsInMap = !!this.appliedModelValuesMapped[value[i]];\n if (valueExistsInMap) {\n return true;\n }\n }\n return false;\n }\n return !!this.appliedModelValuesMapped[value];\n };\n SetFilter.prototype.onNewRowsLoaded = function () {\n var valuesType = this.valueModel.getValuesType();\n var valuesTypeProvided = valuesType === setValueModel_1.SetFilterModelValuesType.PROVIDED_CB\n || valuesType === setValueModel_1.SetFilterModelValuesType.PROVIDED_LIST;\n // if the user is providing values, and we are keeping the previous selection, then\n // loading new rows into the grid should have no impact.\n var newRowsActionKeep = this.isNewRowsActionKeep();\n if (newRowsActionKeep && valuesTypeProvided) {\n return;\n }\n var everythingSelected = !this.getModel();\n // default is reset\n this.valueModel.refreshAfterNewRowsLoaded(newRowsActionKeep, everythingSelected);\n this.updateSelectAll();\n this.virtualList.refresh();\n this.applyModel();\n };\n //noinspection JSUnusedGlobalSymbols\n /**\n * Public method provided so the user can change the value of the filter once\n * the filter has been already started\n * @param options The options to use.\n * @param selectAll If by default all the values should be selected.\n * @param notify If we should let know the model that the values of the filter have changed\n * @param toSelect The subset of options to subselect\n */\n SetFilter.prototype.setFilterValues = function (options, selectAll, notify, toSelect) {\n var _this = this;\n if (selectAll === void 0) { selectAll = false; }\n if (notify === void 0) { notify = true; }\n this.valueModel.onFilterValuesReady(function () {\n var keepSelection = _this.setFilterParams && _this.setFilterParams.newRowsAction === 'keep';\n _this.valueModel.setValuesType(setValueModel_1.SetFilterModelValuesType.PROVIDED_LIST);\n _this.valueModel.refreshValues(options, keepSelection, selectAll);\n _this.updateSelectAll();\n var actualToSelect = toSelect ? toSelect : options;\n actualToSelect.forEach(function (option) { return _this.valueModel.selectValue(option); });\n _this.virtualList.refresh();\n if (notify) {\n // this.onUiChangedListener(true);\n _this.onUiChanged();\n }\n });\n };\n //noinspection JSUnusedGlobalSymbols\n /**\n * Public method provided so the user can reset the values of the filter once that it has started\n * @param options The options to use.\n */\n SetFilter.prototype.resetFilterValues = function () {\n this.valueModel.setValuesType(setValueModel_1.SetFilterModelValuesType.NOT_PROVIDED);\n this.onNewRowsLoaded();\n };\n SetFilter.prototype.onAnyFilterChanged = function () {\n this.valueModel.refreshAfterAnyFilterChanged();\n this.virtualList.refresh();\n };\n SetFilter.prototype.updateSelectAll = function () {\n if (this.valueModel.isEverythingSelected()) {\n this.selectAllState = CheckboxState.CHECKED;\n }\n else if (this.valueModel.isNothingSelected()) {\n this.selectAllState = CheckboxState.UNCHECKED;\n }\n else {\n this.selectAllState = CheckboxState.INTERMEDIATE;\n }\n this.updateCheckboxIcon();\n };\n SetFilter.prototype.onMiniFilterKeyPress = function (e) {\n if (core_1._.isKeyPressed(e, core_1.Constants.KEY_ENTER)) {\n this.onEnterKeyOnMiniFilter();\n }\n };\n SetFilter.prototype.onEnterKeyOnMiniFilter = function () {\n this.valueModel.selectAllFromMiniFilter();\n this.virtualList.refresh();\n this.updateSelectAll();\n this.onUiChanged();\n };\n SetFilter.prototype.onMiniFilterInput = function () {\n var miniFilterChanged = this.valueModel.setMiniFilter(this.eMiniFilter.value);\n if (miniFilterChanged) {\n this.virtualList.refresh();\n }\n this.updateSelectAll();\n };\n SetFilter.prototype.onSelectAll = function (event) {\n event.preventDefault();\n core_1._.addAgGridEventPath(event);\n if (this.selectAllState === CheckboxState.CHECKED) {\n this.selectAllState = CheckboxState.UNCHECKED;\n }\n else {\n this.selectAllState = CheckboxState.CHECKED;\n }\n this.doSelectAll();\n };\n SetFilter.prototype.doSelectAll = function () {\n var checked = this.selectAllState === CheckboxState.CHECKED;\n if (checked) {\n this.valueModel.selectAllUsingMiniFilter();\n }\n else {\n this.valueModel.selectNothingUsingMiniFilter();\n }\n this.virtualList.refresh();\n this.onUiChanged();\n this.updateSelectAll();\n };\n SetFilter.prototype.onItemSelected = function (value, selected) {\n if (selected) {\n this.valueModel.selectValue(value);\n }\n else {\n this.valueModel.unselectValue(value);\n }\n this.updateSelectAll();\n this.onUiChanged();\n };\n SetFilter.prototype.setMiniFilter = function (newMiniFilter) {\n this.valueModel.setMiniFilter(newMiniFilter);\n this.eMiniFilter.value = this.valueModel.getMiniFilter();\n };\n SetFilter.prototype.getMiniFilter = function () {\n return this.valueModel.getMiniFilter();\n };\n SetFilter.prototype.selectEverything = function () {\n this.valueModel.selectAllUsingMiniFilter();\n this.updateSelectAll();\n this.virtualList.refresh();\n };\n SetFilter.prototype.selectNothing = function () {\n this.valueModel.selectNothingUsingMiniFilter();\n this.updateSelectAll();\n this.virtualList.refresh();\n };\n SetFilter.prototype.unselectValue = function (value) {\n this.valueModel.unselectValue(value);\n this.updateSelectAll();\n this.virtualList.refresh();\n };\n SetFilter.prototype.selectValue = function (value) {\n this.valueModel.selectValue(value);\n this.updateSelectAll();\n this.virtualList.refresh();\n };\n SetFilter.prototype.isValueSelected = function (value) {\n return this.valueModel.isValueSelected(value);\n };\n SetFilter.prototype.isEverythingSelected = function () {\n return this.valueModel.isEverythingSelected();\n };\n SetFilter.prototype.isNothingSelected = function () {\n return this.valueModel.isNothingSelected();\n };\n SetFilter.prototype.getUniqueValueCount = function () {\n return this.valueModel.getUniqueValueCount();\n };\n SetFilter.prototype.getUniqueValue = function (index) {\n return this.valueModel.getUniqueValue(index);\n };\n __decorate([\n core_1.RefSelector('eSelectAll')\n ], SetFilter.prototype, \"eSelectAll\", void 0);\n __decorate([\n core_1.RefSelector('eSelectAllContainer')\n ], SetFilter.prototype, \"eSelectAllContainer\", void 0);\n __decorate([\n core_1.RefSelector('eMiniFilter')\n ], SetFilter.prototype, \"eMiniFilter\", void 0);\n __decorate([\n core_1.RefSelector('ag-filter-loading')\n ], SetFilter.prototype, \"eFilterLoading\", void 0);\n __decorate([\n core_1.Autowired('valueFormatterService')\n ], SetFilter.prototype, \"valueFormatterService\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], SetFilter.prototype, \"eventService\", void 0);\n return SetFilter;\n}(core_1.ProvidedFilter));\nexports.SetFilter = SetFilter;\nvar ModelWrapper = /** @class */ (function () {\n function ModelWrapper(model) {\n this.model = model;\n }\n ModelWrapper.prototype.getRowCount = function () {\n return this.model.getDisplayedValueCount();\n };\n ModelWrapper.prototype.getRow = function (index) {\n return this.model.getDisplayedValue(index);\n };\n return ModelWrapper;\n}());\n//# sourceMappingURL=setFilter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\n// we cannot have 'null' as a key in a JavaScript map,\n// it needs to be a string. so we use this string for\n// storing null values.\nvar NULL_VALUE = '___NULL___';\nvar SetFilterModelValuesType;\n(function (SetFilterModelValuesType) {\n SetFilterModelValuesType[SetFilterModelValuesType[\"PROVIDED_LIST\"] = 0] = \"PROVIDED_LIST\";\n SetFilterModelValuesType[SetFilterModelValuesType[\"PROVIDED_CB\"] = 1] = \"PROVIDED_CB\";\n SetFilterModelValuesType[SetFilterModelValuesType[\"NOT_PROVIDED\"] = 2] = \"NOT_PROVIDED\";\n})(SetFilterModelValuesType = exports.SetFilterModelValuesType || (exports.SetFilterModelValuesType = {}));\nvar SetValueModel = /** @class */ (function () {\n function SetValueModel(colDef, rowModel, valueGetter, doesRowPassOtherFilters, suppressSorting, modelUpdatedFunc, isLoadingFunc, valueFormatterService, column) {\n this.suppressSorting = suppressSorting;\n this.colDef = colDef;\n this.valueGetter = valueGetter;\n this.doesRowPassOtherFilters = doesRowPassOtherFilters;\n this.modelUpdatedFunc = modelUpdatedFunc;\n this.isLoadingFunc = isLoadingFunc;\n this.valueFormatterService = valueFormatterService;\n this.column = column;\n if (rowModel.getType() === core_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = rowModel;\n }\n this.filterParams = this.colDef.filterParams ? this.colDef.filterParams : {};\n if (core_1._.exists(this.filterParams) && core_1._.exists(this.filterParams.values)) {\n this.valuesType = Array.isArray(this.filterParams.values) ?\n SetFilterModelValuesType.PROVIDED_LIST :\n SetFilterModelValuesType.PROVIDED_CB;\n this.showingAvailableOnly = this.filterParams.suppressRemoveEntries !== true;\n }\n else {\n this.valuesType = SetFilterModelValuesType.NOT_PROVIDED;\n this.showingAvailableOnly = true;\n }\n this.createAllUniqueValues();\n this.createAvailableUniqueValues();\n // by default, no filter, so we display everything\n this.displayedValues = this.availableUniqueValues;\n this.miniFilter = null;\n // we use a map rather than an array for the selected values as the lookup\n // for a map is much faster than the lookup for an array, especially when\n // the length of the array is thousands of records long\n this.selectedValuesMap = {};\n this.selectAllUsingMiniFilter();\n this.formatter = this.filterParams.textFormatter ? this.filterParams.textFormatter : core_1.TextFilter.DEFAULT_FORMATTER;\n }\n // if keepSelection not set will always select all filters\n // if keepSelection set will keep current state of selected filters\n // unless selectAll chosen in which case will select all\n SetValueModel.prototype.refreshAfterNewRowsLoaded = function (keepSelection, everythingSelected) {\n this.createAllUniqueValues();\n this.refreshSelection(keepSelection, everythingSelected);\n };\n // if keepSelection not set will always select all filters\n // if keepSelection set will keep current state of selected filters\n // unless selectAll chosen in which case will select all\n SetValueModel.prototype.refreshValues = function (valuesToUse, keepSelection, isSelectAll) {\n this.setValues(valuesToUse);\n this.refreshSelection(keepSelection, isSelectAll);\n };\n SetValueModel.prototype.refreshSelection = function (keepSelection, isSelectAll) {\n this.createAvailableUniqueValues();\n var oldModel = Object.keys(this.selectedValuesMap);\n this.selectedValuesMap = {};\n this.processMiniFilter();\n if (keepSelection) {\n this.setModel(oldModel, isSelectAll);\n }\n else {\n this.selectAllUsingMiniFilter();\n }\n };\n SetValueModel.prototype.refreshAfterAnyFilterChanged = function () {\n if (this.showingAvailableOnly) {\n this.createAvailableUniqueValues();\n this.processMiniFilter();\n }\n };\n SetValueModel.prototype.createAllUniqueValues = function () {\n if (this.areValuesSync()) {\n var valuesToUse = this.extractSyncValuesToUse();\n this.setValues(valuesToUse);\n this.filterValuesPromise = core_1.Promise.resolve([]);\n }\n else {\n this.filterValuesExternalPromise = core_1.Promise.external();\n this.filterValuesPromise = this.filterValuesExternalPromise.promise;\n this.isLoadingFunc(true);\n this.setValues([]);\n var callback_1 = this.filterParams.values;\n var params_1 = {\n success: this.onAsyncValuesLoaded.bind(this),\n colDef: this.colDef\n };\n window.setTimeout(function () { return callback_1(params_1); }, 0);\n }\n };\n SetValueModel.prototype.onAsyncValuesLoaded = function (values) {\n this.modelUpdatedFunc(values);\n this.isLoadingFunc(false);\n this.filterValuesExternalPromise.resolve(values);\n };\n SetValueModel.prototype.areValuesSync = function () {\n return this.valuesType == SetFilterModelValuesType.PROVIDED_LIST || this.valuesType == SetFilterModelValuesType.NOT_PROVIDED;\n };\n SetValueModel.prototype.setValuesType = function (value) {\n this.valuesType = value;\n };\n SetValueModel.prototype.getValuesType = function () {\n return this.valuesType;\n };\n SetValueModel.prototype.setValues = function (valuesToUse) {\n this.allUniqueValues = valuesToUse;\n if (!this.suppressSorting) {\n this.sortValues(this.allUniqueValues);\n }\n };\n SetValueModel.prototype.extractSyncValuesToUse = function () {\n var valuesToUse;\n if (this.valuesType == SetFilterModelValuesType.PROVIDED_LIST) {\n if (Array.isArray(this.filterParams.values)) {\n valuesToUse = core_1._.toStrings(this.filterParams.values);\n }\n else {\n // In this case the values are async but have already been resolved, so we can reuse them\n valuesToUse = this.allUniqueValues;\n }\n }\n else if (this.valuesType == SetFilterModelValuesType.PROVIDED_CB) {\n throw Error(\"ag-grid: Error extracting values to use. We should not extract the values synchronously when using a callback for the filterParams.values\");\n }\n else {\n var uniqueValuesAsAnyObjects = this.getUniqueValues(false);\n valuesToUse = core_1._.toStrings(uniqueValuesAsAnyObjects);\n }\n return valuesToUse;\n };\n SetValueModel.prototype.createAvailableUniqueValues = function () {\n var dontCheckAvailableValues = !this.showingAvailableOnly || this.valuesType == SetFilterModelValuesType.PROVIDED_LIST || this.valuesType == SetFilterModelValuesType.PROVIDED_CB;\n if (dontCheckAvailableValues) {\n this.availableUniqueValues = this.allUniqueValues;\n return;\n }\n var uniqueValuesAsAnyObjects = this.getUniqueValues(true);\n this.availableUniqueValues = core_1._.toStrings(uniqueValuesAsAnyObjects);\n this.sortValues(this.availableUniqueValues);\n };\n SetValueModel.prototype.sortValues = function (values) {\n if (this.filterParams && this.filterParams.comparator) {\n values.sort(this.filterParams.comparator);\n }\n else if (this.colDef.comparator) {\n values.sort(this.colDef.comparator);\n }\n else {\n values.sort(core_1._.defaultComparator);\n }\n };\n SetValueModel.prototype.getUniqueValues = function (filterOutNotAvailable) {\n var _this = this;\n var uniqueCheck = {};\n var result = [];\n if (!this.clientSideRowModel) {\n console.error('ag-Grid: Set Filter cannot initialise because you are using a row model that does not contain all rows in the browser. Either use a different filter type, or configure Set Filter such that you provide it with values');\n return [];\n }\n this.clientSideRowModel.forEachLeafNode(function (node) {\n // only pull values from rows that have data. this means we skip filler group nodes.\n if (!node.data) {\n return;\n }\n var value = _this.valueGetter(node);\n if (_this.colDef.keyCreator) {\n value = _this.colDef.keyCreator({ value: value });\n }\n if (value === \"\" || value === undefined) {\n value = null;\n }\n if (filterOutNotAvailable) {\n if (!_this.doesRowPassOtherFilters(node)) {\n return;\n }\n }\n if (value != null && Array.isArray(value)) {\n for (var j = 0; j < value.length; j++) {\n addUniqueValueIfMissing(value[j]);\n }\n }\n else {\n addUniqueValueIfMissing(value);\n }\n });\n function addUniqueValueIfMissing(value) {\n if (!uniqueCheck.hasOwnProperty(value)) {\n result.push(value);\n uniqueCheck[value] = 1;\n }\n }\n return result;\n };\n //sets mini filter. returns true if it changed from last value, otherwise false\n SetValueModel.prototype.setMiniFilter = function (newMiniFilter) {\n newMiniFilter = core_1._.makeNull(newMiniFilter);\n if (this.miniFilter === newMiniFilter) {\n //do nothing if filter has not changed\n return false;\n }\n this.miniFilter = newMiniFilter;\n this.processMiniFilter();\n return true;\n };\n SetValueModel.prototype.getMiniFilter = function () {\n return this.miniFilter;\n };\n SetValueModel.prototype.processMiniFilter = function () {\n // if no filter, just use the unique values\n if (this.miniFilter === null) {\n this.displayedValues = this.availableUniqueValues;\n return;\n }\n // if filter present, we filter down the list\n this.displayedValues = [];\n var miniFilter = this.formatter(this.miniFilter);\n // make upper case to have search case insensitive\n var miniFilterUpperCase = miniFilter.toUpperCase();\n //This function encapsulates the logic to check if a string matches the mini filter\n var matchesFn = function (valueToCheck) {\n if (valueToCheck == null) {\n return false;\n }\n // allow for case insensitive searches, make both filter and value uppercase\n var valueUpperCase = valueToCheck.toUpperCase();\n return valueUpperCase.indexOf(miniFilterUpperCase) >= 0;\n };\n for (var i = 0, l = this.availableUniqueValues.length; i < l; i++) {\n var value = this.availableUniqueValues[i];\n if (value) {\n var displayedValue = this.formatter(value.toString());\n var formattedValue = this.valueFormatterService.formatValue(this.column, null, null, displayedValue);\n if (matchesFn(displayedValue) || matchesFn(formattedValue)) {\n this.displayedValues.push(value);\n }\n }\n }\n };\n SetValueModel.prototype.getDisplayedValueCount = function () {\n return this.displayedValues.length;\n };\n SetValueModel.prototype.getDisplayedValue = function (index) {\n return this.displayedValues[index];\n };\n SetValueModel.prototype.selectAllUsingMiniFilter = function () {\n if (this.miniFilter) {\n this.selectOn(this.displayedValues);\n }\n else {\n this.selectOn(this.allUniqueValues);\n }\n };\n SetValueModel.prototype.selectOn = function (toSelectOn) {\n var count = toSelectOn.length;\n for (var i = 0; i < count; i++) {\n var key = toSelectOn[i];\n var safeKey = this.valueToKey(key);\n this.selectedValuesMap[safeKey] = null;\n }\n this.selectedValuesCount = Object.keys(this.selectedValuesMap).length;\n };\n SetValueModel.prototype.valueToKey = function (key) {\n if (key === null) {\n return NULL_VALUE;\n }\n else {\n return key;\n }\n };\n SetValueModel.prototype.keyToValue = function (value) {\n if (value === NULL_VALUE) {\n return null;\n }\n else {\n return value;\n }\n };\n SetValueModel.prototype.isFilterActive = function () {\n return this.allUniqueValues.length !== this.selectedValuesCount;\n };\n SetValueModel.prototype.selectNothingUsingMiniFilter = function () {\n var _this = this;\n if (this.miniFilter) {\n this.displayedValues.forEach(function (it) { return _this.unselectValue(it); });\n }\n else {\n this.selectNothing();\n }\n };\n SetValueModel.prototype.selectNothing = function () {\n this.selectedValuesMap = {};\n this.selectedValuesCount = 0;\n };\n SetValueModel.prototype.getUniqueValueCount = function () {\n return this.allUniqueValues.length;\n };\n SetValueModel.prototype.getUniqueValue = function (index) {\n return this.allUniqueValues[index];\n };\n SetValueModel.prototype.unselectValue = function (value) {\n var safeKey = this.valueToKey(value);\n if (this.selectedValuesMap[safeKey] !== undefined) {\n delete this.selectedValuesMap[safeKey];\n this.selectedValuesCount--;\n }\n };\n SetValueModel.prototype.selectAllFromMiniFilter = function () {\n this.selectNothing();\n this.selectAllUsingMiniFilter();\n };\n SetValueModel.prototype.selectValue = function (value) {\n var safeKey = this.valueToKey(value);\n if (this.selectedValuesMap[safeKey] === undefined) {\n this.selectedValuesMap[safeKey] = null;\n this.selectedValuesCount++;\n }\n };\n SetValueModel.prototype.isValueSelected = function (value) {\n var safeKey = this.valueToKey(value);\n return this.selectedValuesMap[safeKey] !== undefined;\n };\n SetValueModel.prototype.isEverythingSelected = function () {\n var _this = this;\n if (this.miniFilter) {\n return this.displayedValues.filter(function (it) { return _this.isValueSelected(it); }).length === this.displayedValues.length;\n }\n else {\n return this.allUniqueValues.length === this.selectedValuesCount;\n }\n };\n SetValueModel.prototype.isNothingSelected = function () {\n var _this = this;\n if (this.miniFilter) {\n return this.displayedValues.filter(function (it) { return _this.isValueSelected(it); }).length === 0;\n }\n else {\n return this.selectedValuesCount === 0;\n }\n };\n SetValueModel.prototype.getModel = function () {\n var _this = this;\n if (!this.isFilterActive()) {\n return null;\n }\n var selectedValues = [];\n core_1._.iterateObject(this.selectedValuesMap, function (key) {\n var value = _this.keyToValue(key);\n selectedValues.push(value);\n });\n return selectedValues;\n };\n SetValueModel.prototype.setModel = function (model, isSelectAll) {\n var _this = this;\n if (isSelectAll === void 0) { isSelectAll = false; }\n if (this.areValuesSync()) {\n this.setSyncModel(model, isSelectAll);\n }\n else {\n this.filterValuesExternalPromise.promise.then(function (values) {\n _this.setSyncModel(model, isSelectAll);\n _this.modelUpdatedFunc(values, model);\n });\n }\n };\n SetValueModel.prototype.setSyncModel = function (model, isSelectAll) {\n if (isSelectAll === void 0) { isSelectAll = false; }\n if (model && !isSelectAll) {\n this.selectNothingUsingMiniFilter();\n for (var i = 0; i < model.length; i++) {\n var rawValue = model[i];\n var value = this.keyToValue(rawValue);\n if (this.allUniqueValues.indexOf(value) >= 0) {\n this.selectValue(value);\n }\n }\n }\n else {\n this.selectAllUsingMiniFilter();\n }\n };\n SetValueModel.prototype.onFilterValuesReady = function (callback) {\n //This guarantees that if the user is racing to set values async into the set filter, only the first instance\n //will be used\n // ie Values are async and the user manually wants to override them before the retrieval of values is triggered\n // (set filter values in the following example)\n // http://plnkr.co/edit/eFka7ynvPj68tL3VJFWf?p=preview\n this.filterValuesPromise.firstOneOnly(callback);\n };\n return SetValueModel;\n}());\nexports.SetValueModel = SetValueModel;\n//# sourceMappingURL=setValueModel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar SetFilterListItem = /** @class */ (function (_super) {\n __extends(SetFilterListItem, _super);\n function SetFilterListItem(value, column) {\n var _this = _super.call(this, SetFilterListItem.TEMPLATE) || this;\n _this.selected = true;\n _this.value = value;\n _this.column = column;\n return _this;\n }\n SetFilterListItem.prototype.useCellRenderer = function (target, eTarget, params) {\n var cellRendererPromise = this.userComponentFactory.newCellRenderer(target.filterParams, params);\n if (cellRendererPromise != null) {\n core_1._.bindCellRendererToHtmlElement(cellRendererPromise, eTarget);\n }\n else {\n if (params.valueFormatted == null && params.value == null) {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n eTarget.innerText = '(' + localeTextFunc('blanks', 'Blanks') + ')';\n }\n else {\n eTarget.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n }\n return cellRendererPromise;\n };\n SetFilterListItem.prototype.init = function () {\n var _this = this;\n this.eCheckedIcon = core_1._.createIconNoSpan('checkboxChecked', this.gridOptionsWrapper, this.column);\n this.eUncheckedIcon = core_1._.createIconNoSpan('checkboxUnchecked', this.gridOptionsWrapper, this.column);\n this.eCheckbox = this.queryForHtmlElement('.ag-filter-checkbox');\n if (this.gridOptionsWrapper.useNativeCheckboxes()) {\n this.eNativeCheckbox = document.createElement('input');\n this.eNativeCheckbox.type = 'checkbox';\n this.eNativeCheckbox.className = 'ag-native-checkbox';\n this.eCheckbox.appendChild(this.eNativeCheckbox);\n }\n this.eClickableArea = this.getGui();\n this.updateCheckboxIcon();\n this.render();\n var listener = function (mouseEvent) {\n mouseEvent.preventDefault();\n core_1._.addAgGridEventPath(mouseEvent);\n _this.selected = !_this.selected;\n _this.updateCheckboxIcon();\n var event = {\n type: SetFilterListItem.EVENT_SELECTED\n };\n return _this.dispatchEvent(event);\n };\n this.addDestroyableEventListener(this.eClickableArea, 'click', listener);\n };\n SetFilterListItem.prototype.isSelected = function () {\n return this.selected;\n };\n SetFilterListItem.prototype.setSelected = function (selected) {\n this.selected = selected;\n this.updateCheckboxIcon();\n };\n SetFilterListItem.prototype.updateCheckboxIcon = function () {\n if (this.gridOptionsWrapper.useNativeCheckboxes()) {\n this.eNativeCheckbox.checked = this.isSelected();\n }\n else {\n core_1._.clearElement(this.eCheckbox);\n if (this.isSelected()) {\n this.eCheckbox.appendChild(this.eCheckedIcon);\n }\n else {\n this.eCheckbox.appendChild(this.eUncheckedIcon);\n }\n }\n };\n SetFilterListItem.prototype.render = function () {\n var _this = this;\n var valueElement = this.queryForHtmlElement('.ag-filter-value');\n var valueFormatted = this.valueFormatterService.formatValue(this.column, null, null, this.value);\n var colDef = this.column.getColDef();\n var params = {\n value: this.value,\n valueFormatted: valueFormatted,\n api: this.gridOptionsWrapper.getApi()\n };\n var componentPromise = this.useCellRenderer(colDef, valueElement, params);\n if (!componentPromise) {\n return;\n }\n componentPromise.then(function (component) {\n if (component && component.destroy) {\n _this.addDestroyFunc(component.destroy.bind(component));\n }\n });\n };\n SetFilterListItem.EVENT_SELECTED = 'selected';\n SetFilterListItem.TEMPLATE = \"\";\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], SetFilterListItem.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('valueFormatterService')\n ], SetFilterListItem.prototype, \"valueFormatterService\", void 0);\n __decorate([\n core_1.Autowired('userComponentFactory')\n ], SetFilterListItem.prototype, \"userComponentFactory\", void 0);\n __decorate([\n core_1.PostConstruct\n ], SetFilterListItem.prototype, \"init\", null);\n return SetFilterListItem;\n}(core_1.Component));\nexports.SetFilterListItem = SetFilterListItem;\n//# sourceMappingURL=setFilterListItem.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar SetFloatingFilterComp = /** @class */ (function (_super) {\n __extends(SetFloatingFilterComp, _super);\n function SetFloatingFilterComp() {\n return _super.call(this, \"
\") || this;\n }\n SetFloatingFilterComp.prototype.init = function (params) {\n this.eFloatingFilterText.disabled = true;\n this.column = params.column;\n };\n SetFloatingFilterComp.prototype.onParentModelChanged = function (parentModel) {\n var _this = this;\n if (!parentModel) {\n this.eFloatingFilterText.value = '';\n return;\n }\n // also supporting old filter model for backwards compatibility\n var values = (parentModel instanceof Array) ? parentModel : parentModel.values;\n if (!values || values.length === 0) {\n this.eFloatingFilterText.value = '';\n return;\n }\n // format all the values, if a formatter is provided\n var formattedValues = values.map(function (value) {\n var formattedValue = _this.valueFormatterService.formatValue(_this.column, null, null, value);\n return formattedValue != null ? formattedValue : value;\n });\n var arrayToDisplay = formattedValues.length > 10 ? formattedValues.slice(0, 10).concat('...') : formattedValues;\n var valuesString = \"(\" + values.length + \") \" + arrayToDisplay.join(\",\");\n this.eFloatingFilterText.value = valuesString;\n };\n __decorate([\n core_1.RefSelector('eFloatingFilterText')\n ], SetFloatingFilterComp.prototype, \"eFloatingFilterText\", void 0);\n __decorate([\n core_1.Autowired('valueFormatterService')\n ], SetFloatingFilterComp.prototype, \"valueFormatterService\", void 0);\n return SetFloatingFilterComp;\n}(core_1.Component));\nexports.SetFloatingFilterComp = SetFloatingFilterComp;\n//# sourceMappingURL=setFloatingFilter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar core_2 = require(\"@ag-grid-enterprise/core\");\nvar statusBarService_1 = require(\"./statusBar/statusBarService\");\nvar statusBar_1 = require(\"./statusBar/statusBar\");\nvar nameValueComp_1 = require(\"./statusBar/providedPanels/nameValueComp\");\nvar totalAndFilteredRowsComp_1 = require(\"./statusBar/providedPanels/totalAndFilteredRowsComp\");\nvar filteredRowsComp_1 = require(\"./statusBar/providedPanels/filteredRowsComp\");\nvar totalRowsComp_1 = require(\"./statusBar/providedPanels/totalRowsComp\");\nvar selectedRowsComp_1 = require(\"./statusBar/providedPanels/selectedRowsComp\");\nvar aggregationComp_1 = require(\"./statusBar/providedPanels/aggregationComp\");\nexports.StatusBarModule = {\n moduleName: core_1.ModuleNames.StatusBarModule,\n beans: [statusBarService_1.StatusBarService],\n agStackComponents: [\n { componentName: 'AgStatusBar', componentClass: statusBar_1.StatusBar },\n { componentName: 'AgNameValue', componentClass: nameValueComp_1.NameValueComp },\n ],\n userComponents: [\n { componentName: 'agAggregationComponent', componentClass: aggregationComp_1.AggregationComp },\n { componentName: 'agSelectedRowCountComponent', componentClass: selectedRowsComp_1.SelectedRowsComp },\n { componentName: 'agTotalRowCountComponent', componentClass: totalRowsComp_1.TotalRowsComp },\n { componentName: 'agFilteredRowCountComponent', componentClass: filteredRowsComp_1.FilteredRowsComp },\n { componentName: 'agTotalAndFilteredRowCountComponent', componentClass: totalAndFilteredRowsComp_1.TotalAndFilteredRowsComp }\n ],\n dependantModules: [\n core_2.EnterpriseCoreModule\n ]\n};\n//# sourceMappingURL=statusBarModule.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar StatusBarService = /** @class */ (function () {\n // tslint:disable-next-line\n function StatusBarService() {\n this.allComponents = {};\n }\n StatusBarService.prototype.registerStatusPanel = function (key, component) {\n this.allComponents[key] = component;\n };\n StatusBarService.prototype.getStatusPanel = function (key) {\n return this.allComponents[key];\n };\n StatusBarService = __decorate([\n core_1.Bean('statusBarService')\n ], StatusBarService);\n return StatusBarService;\n}());\nexports.StatusBarService = StatusBarService;\n//# sourceMappingURL=statusBarService.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar StatusBar = /** @class */ (function (_super) {\n __extends(StatusBar, _super);\n function StatusBar() {\n return _super.call(this, StatusBar.TEMPLATE) || this;\n }\n StatusBar.prototype.postConstruct = function () {\n if (this.gridOptions.statusBar && this.gridOptions.statusBar.statusPanels) {\n var leftStatusPanelComponents = this.gridOptions.statusBar.statusPanels\n .filter(function (componentConfig) { return componentConfig.align === 'left'; });\n this.createAndRenderComponents(leftStatusPanelComponents, this.eStatusBarLeft);\n var centerStatusPanelComponents = this.gridOptions.statusBar.statusPanels\n .filter(function (componentConfig) { return componentConfig.align === 'center'; });\n this.createAndRenderComponents(centerStatusPanelComponents, this.eStatusBarCenter);\n var rightStatusPanelComponents = this.gridOptions.statusBar.statusPanels\n .filter(function (componentConfig) { return (!componentConfig.align || componentConfig.align === 'right'); });\n this.createAndRenderComponents(rightStatusPanelComponents, this.eStatusBarRight);\n }\n };\n StatusBar.prototype.createAndRenderComponents = function (statusBarComponents, ePanelComponent) {\n var _this = this;\n var componentDetails = [];\n statusBarComponents.forEach(function (componentConfig) {\n var params = {\n api: _this.gridOptionsWrapper.getApi(),\n columnApi: _this.gridOptionsWrapper.getColumnApi(),\n context: _this.gridOptionsWrapper.getContext()\n };\n var promise = _this.userComponentFactory.newStatusPanelComponent(componentConfig, params);\n componentDetails.push({\n // default to the component name if no key supplied\n key: componentConfig.key || componentConfig.statusPanel,\n promise: promise\n });\n });\n core_1.Promise.all(componentDetails.map(function (details) { return details.promise; }))\n .then(function () {\n componentDetails.forEach(function (componentDetail) {\n componentDetail.promise.then(function (component) {\n var destroyFunc = function () {\n if (component.destroy) {\n component.destroy();\n }\n };\n if (_this.isAlive()) {\n _this.statusBarService.registerStatusPanel(componentDetail.key, component);\n ePanelComponent.appendChild(component.getGui());\n _this.addDestroyFunc(destroyFunc);\n }\n else {\n destroyFunc();\n }\n });\n });\n });\n };\n StatusBar.TEMPLATE = \"
\\n
\\n
\\n
\\n
\";\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], StatusBar.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('gridOptions')\n ], StatusBar.prototype, \"gridOptions\", void 0);\n __decorate([\n core_1.Autowired('userComponentFactory')\n ], StatusBar.prototype, \"userComponentFactory\", void 0);\n __decorate([\n core_1.Autowired('statusBarService')\n ], StatusBar.prototype, \"statusBarService\", void 0);\n __decorate([\n core_1.RefSelector('eStatusBarLeft')\n ], StatusBar.prototype, \"eStatusBarLeft\", void 0);\n __decorate([\n core_1.RefSelector('eStatusBarCenter')\n ], StatusBar.prototype, \"eStatusBarCenter\", void 0);\n __decorate([\n core_1.RefSelector('eStatusBarRight')\n ], StatusBar.prototype, \"eStatusBarRight\", void 0);\n __decorate([\n core_1.PostConstruct\n ], StatusBar.prototype, \"postConstruct\", null);\n return StatusBar;\n}(core_1.Component));\nexports.StatusBar = StatusBar;\n//# sourceMappingURL=statusBar.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar nameValueComp_1 = require(\"./nameValueComp\");\nvar TotalAndFilteredRowsComp = /** @class */ (function (_super) {\n __extends(TotalAndFilteredRowsComp, _super);\n function TotalAndFilteredRowsComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TotalAndFilteredRowsComp.prototype.postConstruct = function () {\n // this component is only really useful with client side row model\n if (this.gridApi.getModel().getType() !== 'clientSide') {\n console.warn(\"ag-Grid: agTotalAndFilteredRowCountComponent should only be used with the client side row model.\");\n return;\n }\n this.setLabel('totalAndFilteredRows', 'Rows');\n this.addCssClass('ag-status-panel');\n this.addCssClass('ag-status-panel-total-and-filtered-row-count');\n this.setDisplayed(true);\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_MODEL_UPDATED, this.onDataChanged.bind(this));\n };\n TotalAndFilteredRowsComp.prototype.onDataChanged = function () {\n var rowCount = core_1._.formatNumberCommas(this.getFilteredRowCountValue());\n var totalRowCount = core_1._.formatNumberCommas(this.getTotalRowCount());\n if (rowCount === totalRowCount) {\n this.setValue(rowCount);\n }\n else {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.setValue(rowCount + \" \" + localeTextFunc('of', 'of') + \" \" + totalRowCount);\n }\n };\n TotalAndFilteredRowsComp.prototype.getFilteredRowCountValue = function () {\n var filteredRowCount = 0;\n this.gridApi.forEachNodeAfterFilter(function (node) {\n if (!node.group) {\n filteredRowCount++;\n }\n });\n return filteredRowCount;\n };\n TotalAndFilteredRowsComp.prototype.getTotalRowCount = function () {\n var totalRowCount = 0;\n this.gridApi.forEachNode(function (node) {\n if (!node.group) {\n totalRowCount++;\n }\n });\n return totalRowCount;\n };\n TotalAndFilteredRowsComp.prototype.init = function () { };\n __decorate([\n core_1.Autowired('gridApi')\n ], TotalAndFilteredRowsComp.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], TotalAndFilteredRowsComp.prototype, \"eventService\", void 0);\n __decorate([\n core_1.PostConstruct\n ], TotalAndFilteredRowsComp.prototype, \"postConstruct\", null);\n return TotalAndFilteredRowsComp;\n}(nameValueComp_1.NameValueComp));\nexports.TotalAndFilteredRowsComp = TotalAndFilteredRowsComp;\n//# sourceMappingURL=totalAndFilteredRowsComp.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar nameValueComp_1 = require(\"./nameValueComp\");\nvar FilteredRowsComp = /** @class */ (function (_super) {\n __extends(FilteredRowsComp, _super);\n function FilteredRowsComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilteredRowsComp.prototype.postConstruct = function () {\n this.setLabel('filteredRows', 'Filtered');\n // this component is only really useful with client side row model\n if (this.gridApi.getModel().getType() !== 'clientSide') {\n console.warn(\"ag-Grid: agFilteredRowCountComponent should only be used with the client side row model.\");\n return;\n }\n this.addCssClass('ag-status-panel');\n this.addCssClass('ag-status-panel-filtered-row-count');\n this.setDisplayed(true);\n var listener = this.onDataChanged.bind(this);\n this.eventService.addEventListener(core_1.Events.EVENT_MODEL_UPDATED, listener);\n };\n FilteredRowsComp.prototype.onDataChanged = function () {\n var totalRowCountValue = this.getTotalRowCountValue();\n var filteredRowCountValue = this.getFilteredRowCountValue();\n this.setValue(core_1._.formatNumberCommas(filteredRowCountValue));\n this.setDisplayed(totalRowCountValue !== filteredRowCountValue);\n };\n FilteredRowsComp.prototype.getTotalRowCountValue = function () {\n var totalRowCount = 0;\n this.gridApi.forEachNode(function (node) { return totalRowCount += 1; });\n return totalRowCount;\n };\n FilteredRowsComp.prototype.getFilteredRowCountValue = function () {\n var filteredRowCount = 0;\n this.gridApi.forEachNodeAfterFilter(function (node) {\n if (!node.group) {\n filteredRowCount += 1;\n }\n });\n return filteredRowCount;\n };\n FilteredRowsComp.prototype.init = function () { };\n __decorate([\n core_1.Autowired('eventService')\n ], FilteredRowsComp.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('gridApi')\n ], FilteredRowsComp.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.PostConstruct\n ], FilteredRowsComp.prototype, \"postConstruct\", null);\n return FilteredRowsComp;\n}(nameValueComp_1.NameValueComp));\nexports.FilteredRowsComp = FilteredRowsComp;\n//# sourceMappingURL=filteredRowsComp.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar nameValueComp_1 = require(\"./nameValueComp\");\nvar TotalRowsComp = /** @class */ (function (_super) {\n __extends(TotalRowsComp, _super);\n function TotalRowsComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TotalRowsComp.prototype.postConstruct = function () {\n this.setLabel('totalRows', 'Total Rows');\n // this component is only really useful with client side row model\n if (this.gridApi.getModel().getType() !== 'clientSide') {\n console.warn(\"ag-Grid: agTotalRowCountComponent should only be used with the client side row model.\");\n return;\n }\n this.addCssClass('ag-status-panel');\n this.addCssClass('ag-status-panel-total-row-count');\n this.setDisplayed(true);\n var listener = this.onDataChanged.bind(this);\n this.eventService.addEventListener(core_1.Events.EVENT_MODEL_UPDATED, listener);\n };\n TotalRowsComp.prototype.onDataChanged = function () {\n this.setValue(core_1._.formatNumberCommas(this.getRowCountValue()));\n };\n TotalRowsComp.prototype.getRowCountValue = function () {\n var totalRowCount = 0;\n this.gridApi.forEachLeafNode(function (node) { return totalRowCount += 1; });\n return totalRowCount;\n };\n TotalRowsComp.prototype.init = function () {\n };\n __decorate([\n core_1.Autowired('eventService')\n ], TotalRowsComp.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('gridApi')\n ], TotalRowsComp.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.PostConstruct\n ], TotalRowsComp.prototype, \"postConstruct\", null);\n return TotalRowsComp;\n}(nameValueComp_1.NameValueComp));\nexports.TotalRowsComp = TotalRowsComp;\n//# sourceMappingURL=totalRowsComp.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar nameValueComp_1 = require(\"./nameValueComp\");\nvar SelectedRowsComp = /** @class */ (function (_super) {\n __extends(SelectedRowsComp, _super);\n function SelectedRowsComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SelectedRowsComp.prototype.postConstruct = function () {\n if (!this.isValidRowModel()) {\n console.warn(\"ag-Grid: agSelectedRowCountComponent should only be used with the client and server side row model.\");\n return;\n }\n this.setLabel('selectedRows', 'Selected');\n this.addCssClass('ag-status-panel');\n this.addCssClass('ag-status-panel-selected-row-count');\n var selectedRowCount = this.gridApi.getSelectedRows().length;\n this.setValue(core_1._.formatNumberCommas(selectedRowCount));\n this.setDisplayed(selectedRowCount > 0);\n var eventListener = this.onRowSelectionChanged.bind(this);\n this.eventService.addEventListener(core_1.Events.EVENT_MODEL_UPDATED, eventListener);\n this.eventService.addEventListener(core_1.Events.EVENT_SELECTION_CHANGED, eventListener);\n };\n SelectedRowsComp.prototype.isValidRowModel = function () {\n // this component is only really useful with client or server side rowmodels\n var rowModelType = this.gridApi.getModel().getType();\n return rowModelType === 'clientSide' || rowModelType === 'serverSide';\n };\n SelectedRowsComp.prototype.onRowSelectionChanged = function () {\n var selectedRowCount = this.gridApi.getSelectedRows().length;\n this.setValue(core_1._.formatNumberCommas(selectedRowCount));\n this.setDisplayed(selectedRowCount > 0);\n };\n SelectedRowsComp.prototype.init = function () {\n };\n __decorate([\n core_1.Autowired('eventService')\n ], SelectedRowsComp.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('gridApi')\n ], SelectedRowsComp.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.PostConstruct\n ], SelectedRowsComp.prototype, \"postConstruct\", null);\n return SelectedRowsComp;\n}(nameValueComp_1.NameValueComp));\nexports.SelectedRowsComp = SelectedRowsComp;\n//# sourceMappingURL=selectedRowsComp.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar AggregationComp = /** @class */ (function (_super) {\n __extends(AggregationComp, _super);\n function AggregationComp() {\n return _super.call(this, AggregationComp.TEMPLATE) || this;\n }\n AggregationComp.prototype.postConstruct = function () {\n if (!this.isValidRowModel()) {\n console.warn(\"ag-Grid: agAggregationComponent should only be used with the client and server side row model.\");\n return;\n }\n this.avgAggregationComp.setLabel('average', 'Average');\n this.countAggregationComp.setLabel('count', 'Count');\n this.minAggregationComp.setLabel('min', 'Min');\n this.maxAggregationComp.setLabel('max', 'Max');\n this.sumAggregationComp.setLabel('sum', 'Sum');\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_RANGE_SELECTION_CHANGED, this.onRangeSelectionChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_MODEL_UPDATED, this.onRangeSelectionChanged.bind(this));\n };\n AggregationComp.prototype.isValidRowModel = function () {\n // this component is only really useful with client or server side rowmodels\n var rowModelType = this.gridApi.getModel().getType();\n return rowModelType === 'clientSide' || rowModelType === 'serverSide';\n };\n AggregationComp.prototype.init = function () {\n };\n AggregationComp.prototype.setAggregationComponentValue = function (aggFuncName, value, visible) {\n var statusBarValueComponent = this.getAggregationValueComponent(aggFuncName);\n if (core_1._.exists(statusBarValueComponent) && statusBarValueComponent) {\n statusBarValueComponent.setValue(core_1._.formatNumberTwoDecimalPlacesAndCommas(value));\n statusBarValueComponent.setDisplayed(visible);\n }\n };\n AggregationComp.prototype.getAggregationValueComponent = function (aggFuncName) {\n // converts user supplied agg name to our reference - eg: sum => sumAggregationComp\n var refComponentName = aggFuncName + \"AggregationComp\";\n // if the user has specified the agAggregationPanelComp but no aggFuncs we show the all\n // if the user has specified the agAggregationPanelComp and aggFuncs, then we only show the aggFuncs listed\n var statusBarValueComponent = null;\n var aggregationPanelConfig = core_1._.exists(this.gridOptions.statusBar) && this.gridOptions.statusBar ? core_1._.find(this.gridOptions.statusBar.statusPanels, function (panel) { return panel.statusPanel === 'agAggregationComponent'; }) : null;\n if (core_1._.exists(aggregationPanelConfig) && aggregationPanelConfig) {\n // a little defensive here - if no statusPanelParams show it, if componentParams we also expect aggFuncs\n if (!core_1._.exists(aggregationPanelConfig.statusPanelParams) ||\n (core_1._.exists(aggregationPanelConfig.statusPanelParams) &&\n core_1._.exists(aggregationPanelConfig.statusPanelParams.aggFuncs) &&\n core_1._.exists(core_1._.find(aggregationPanelConfig.statusPanelParams.aggFuncs, function (func) { return func === aggFuncName; })))) {\n statusBarValueComponent = this[refComponentName];\n }\n }\n else {\n // components not specified - assume we can show this component\n statusBarValueComponent = this[refComponentName];\n }\n // either we can't find it (which would indicate a typo or similar user side), or the user has deliberately\n // not listed the component in aggFuncs\n return statusBarValueComponent;\n };\n AggregationComp.prototype.onRangeSelectionChanged = function () {\n var _this = this;\n var cellRanges = this.rangeController ? this.rangeController.getCellRanges() : undefined;\n var sum = 0;\n var count = 0;\n var numberCount = 0;\n var min = null;\n var max = null;\n var cellsSoFar = {};\n if (cellRanges && !core_1._.missingOrEmpty(cellRanges)) {\n cellRanges.forEach(function (cellRange) {\n var currentRow = _this.rangeController.getRangeStartRow(cellRange);\n var lastRow = _this.rangeController.getRangeEndRow(cellRange);\n while (true) {\n var finishedAllRows = core_1._.missing(currentRow) || !currentRow || _this.rowPositionUtils.before(lastRow, currentRow);\n if (finishedAllRows || !currentRow || !cellRange.columns) {\n break;\n }\n cellRange.columns.forEach(function (col) {\n if (currentRow === null) {\n return;\n }\n // we only want to include each cell once, in case a cell is in multiple ranges\n var cellId = _this.cellPositionUtils.createId({\n rowPinned: currentRow.rowPinned,\n column: col,\n rowIndex: currentRow.rowIndex\n });\n if (cellsSoFar[cellId]) {\n return;\n }\n cellsSoFar[cellId] = true;\n var rowNode = _this.rowRenderer.getRowNode(currentRow);\n if (core_1._.missing(rowNode)) {\n return;\n }\n var value = _this.valueService.getValue(col, rowNode);\n // if empty cell, skip it, doesn't impact count or anything\n if (core_1._.missing(value) || value === '') {\n return;\n }\n // see if value is wrapped, can happen when doing count() or avg() functions\n if (value.value) {\n value = value.value;\n }\n if (typeof value === 'string') {\n value = Number(value);\n }\n if (typeof value === 'number' && !isNaN(value)) {\n sum += value;\n if (max === null || value > max) {\n max = value;\n }\n if (min === null || value < min) {\n min = value;\n }\n numberCount++;\n }\n count++;\n });\n currentRow = _this.cellNavigationService.getRowBelow(currentRow);\n }\n });\n }\n var gotResult = count > 1;\n var gotNumberResult = numberCount > 1;\n // we show count even if no numbers\n this.setAggregationComponentValue('count', count, gotResult);\n // show if numbers found\n this.setAggregationComponentValue('sum', sum, gotNumberResult);\n this.setAggregationComponentValue('min', min, gotNumberResult);\n this.setAggregationComponentValue('max', max, gotNumberResult);\n this.setAggregationComponentValue('avg', (sum / numberCount), gotNumberResult);\n };\n AggregationComp.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n
\";\n __decorate([\n core_1.Autowired('eventService')\n ], AggregationComp.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Optional('rangeController')\n ], AggregationComp.prototype, \"rangeController\", void 0);\n __decorate([\n core_1.Autowired('valueService')\n ], AggregationComp.prototype, \"valueService\", void 0);\n __decorate([\n core_1.Autowired('cellNavigationService')\n ], AggregationComp.prototype, \"cellNavigationService\", void 0);\n __decorate([\n core_1.Autowired('rowRenderer')\n ], AggregationComp.prototype, \"rowRenderer\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], AggregationComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('gridOptions')\n ], AggregationComp.prototype, \"gridOptions\", void 0);\n __decorate([\n core_1.Autowired('gridApi')\n ], AggregationComp.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.Autowired('cellPositionUtils')\n ], AggregationComp.prototype, \"cellPositionUtils\", void 0);\n __decorate([\n core_1.Autowired('rowPositionUtils')\n ], AggregationComp.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n core_1.RefSelector('sumAggregationComp')\n ], AggregationComp.prototype, \"sumAggregationComp\", void 0);\n __decorate([\n core_1.RefSelector('countAggregationComp')\n ], AggregationComp.prototype, \"countAggregationComp\", void 0);\n __decorate([\n core_1.RefSelector('minAggregationComp')\n ], AggregationComp.prototype, \"minAggregationComp\", void 0);\n __decorate([\n core_1.RefSelector('maxAggregationComp')\n ], AggregationComp.prototype, \"maxAggregationComp\", void 0);\n __decorate([\n core_1.RefSelector('avgAggregationComp')\n ], AggregationComp.prototype, \"avgAggregationComp\", void 0);\n __decorate([\n core_1.PostConstruct\n ], AggregationComp.prototype, \"postConstruct\", null);\n return AggregationComp;\n}(core_1.Component));\nexports.AggregationComp = AggregationComp;\n//# sourceMappingURL=aggregationComp.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar core_2 = require(\"@ag-grid-enterprise/core\");\nvar viewportRowModel_1 = require(\"./viewportRowModel/viewportRowModel\");\nexports.ViewportRowModelModule = {\n moduleName: core_1.ModuleNames.ViewportRowModelModule,\n rowModels: { 'viewport': viewportRowModel_1.ViewportRowModel },\n dependantModules: [\n core_2.EnterpriseCoreModule\n ]\n};\n//# sourceMappingURL=viewportRowModelModule.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar ViewportRowModel = /** @class */ (function () {\n function ViewportRowModel() {\n // rowRenderer tells us these\n this.firstRow = -1;\n this.lastRow = -1;\n // datasource tells us this\n this.rowCount = -1;\n this.rowNodesByIndex = {};\n }\n // we don't implement as lazy row heights is not supported in this row model\n ViewportRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) { return false; };\n ViewportRowModel.prototype.init = function () {\n this.rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n this.eventService.addEventListener(core_1.Events.EVENT_VIEWPORT_CHANGED, this.onViewportChanged.bind(this));\n };\n ViewportRowModel.prototype.start = function () {\n if (this.gridOptionsWrapper.getViewportDatasource()) {\n this.setViewportDatasource(this.gridOptionsWrapper.getViewportDatasource());\n }\n };\n ViewportRowModel.prototype.isLastRowFound = function () {\n return true;\n };\n ViewportRowModel.prototype.destroyDatasource = function () {\n if (this.viewportDatasource) {\n if (this.viewportDatasource.destroy) {\n this.viewportDatasource.destroy();\n }\n this.rowRenderer.datasourceChanged();\n this.firstRow = -1;\n this.lastRow = -1;\n }\n };\n ViewportRowModel.prototype.calculateFirstRow = function (firstRenderedRow) {\n var bufferSize = this.gridOptionsWrapper.getViewportRowModelBufferSize();\n var pageSize = this.gridOptionsWrapper.getViewportRowModelPageSize();\n var afterBuffer = firstRenderedRow - bufferSize;\n if (afterBuffer < 0) {\n return 0;\n }\n else {\n return Math.floor(afterBuffer / pageSize) * pageSize;\n }\n };\n ViewportRowModel.prototype.calculateLastRow = function (lastRenderedRow) {\n if (lastRenderedRow === -1) {\n return lastRenderedRow;\n }\n var bufferSize = this.gridOptionsWrapper.getViewportRowModelBufferSize();\n var pageSize = this.gridOptionsWrapper.getViewportRowModelPageSize();\n var afterBuffer = lastRenderedRow + bufferSize;\n var result = Math.ceil(afterBuffer / pageSize) * pageSize;\n var lastRowIndex = this.rowCount - 1;\n return Math.min(result, lastRowIndex);\n };\n ViewportRowModel.prototype.onViewportChanged = function (event) {\n var newFirst = this.calculateFirstRow(event.firstRow);\n var newLast = this.calculateLastRow(event.lastRow);\n if (this.firstRow !== newFirst || this.lastRow !== newLast) {\n this.firstRow = newFirst;\n this.lastRow = newLast;\n this.purgeRowsNotInViewport();\n if (this.viewportDatasource) {\n this.viewportDatasource.setViewportRange(this.firstRow, this.lastRow);\n }\n }\n };\n ViewportRowModel.prototype.purgeRowsNotInViewport = function () {\n var _this = this;\n Object.keys(this.rowNodesByIndex).forEach(function (indexStr) {\n var index = parseInt(indexStr, 10);\n if (index < _this.firstRow || index > _this.lastRow) {\n delete _this.rowNodesByIndex[index];\n }\n });\n };\n ViewportRowModel.prototype.setViewportDatasource = function (viewportDatasource) {\n this.destroyDatasource();\n this.viewportDatasource = viewportDatasource;\n this.rowCount = 0;\n if (!viewportDatasource.init) {\n console.warn('ag-Grid: viewport is missing init method.');\n }\n else {\n viewportDatasource.init({\n setRowCount: this.setRowCount.bind(this),\n setRowData: this.setRowData.bind(this),\n getRow: this.getRow.bind(this)\n });\n }\n };\n ViewportRowModel.prototype.getType = function () {\n return core_1.Constants.ROW_MODEL_TYPE_VIEWPORT;\n };\n ViewportRowModel.prototype.getRow = function (rowIndex) {\n if (!this.rowNodesByIndex[rowIndex]) {\n this.rowNodesByIndex[rowIndex] = this.createBlankRowNode(rowIndex);\n }\n return this.rowNodesByIndex[rowIndex];\n };\n ViewportRowModel.prototype.getRowNode = function (id) {\n var result = null;\n this.forEachNode(function (rowNode) {\n if (rowNode.id === id) {\n result = rowNode;\n }\n });\n return result;\n };\n ViewportRowModel.prototype.getRowCount = function () {\n return this.rowCount;\n };\n ViewportRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n if (this.rowHeight !== 0) { // avoid divide by zero error\n return Math.floor(pixel / this.rowHeight);\n }\n else {\n return 0;\n }\n };\n ViewportRowModel.prototype.getRowBounds = function (index) {\n return {\n rowHeight: this.rowHeight,\n rowTop: this.rowHeight * index\n };\n };\n ViewportRowModel.prototype.getTopLevelRowCount = function () {\n return this.getRowCount();\n };\n ViewportRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n return topLevelIndex;\n };\n ViewportRowModel.prototype.getCurrentPageHeight = function () {\n return this.rowCount * this.rowHeight;\n };\n ViewportRowModel.prototype.isEmpty = function () {\n return this.rowCount > 0;\n };\n ViewportRowModel.prototype.isRowsToRender = function () {\n return this.rowCount > 0;\n };\n ViewportRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n var firstIndex = core_1._.missing(firstInRange) ? 0 : firstInRange.rowIndex;\n var lastIndex = lastInRange.rowIndex;\n var firstNodeOutOfRange = firstIndex < this.firstRow || firstIndex > this.lastRow;\n var lastNodeOutOfRange = lastIndex < this.firstRow || lastIndex > this.lastRow;\n if (firstNodeOutOfRange || lastNodeOutOfRange) {\n return [];\n }\n var result = [];\n var startIndex = firstIndex <= lastIndex ? firstIndex : lastIndex;\n var endIndex = firstIndex <= lastIndex ? lastIndex : firstIndex;\n for (var i = startIndex; i <= endIndex; i++) {\n result.push(this.rowNodesByIndex[i]);\n }\n return result;\n };\n ViewportRowModel.prototype.forEachNode = function (callback) {\n var _this = this;\n var callbackCount = 0;\n Object.keys(this.rowNodesByIndex).forEach(function (indexStr) {\n var index = parseInt(indexStr, 10);\n var rowNode = _this.rowNodesByIndex[index];\n callback(rowNode, callbackCount);\n callbackCount++;\n });\n };\n ViewportRowModel.prototype.setRowData = function (rowData) {\n var _this = this;\n core_1._.iterateObject(rowData, function (indexStr, dataItem) {\n var index = parseInt(indexStr, 10);\n // we should never keep rows that we didn't specifically ask for, this\n // guarantees the contract we have with the server.\n if (index >= _this.firstRow && index <= _this.lastRow) {\n var rowNode = _this.rowNodesByIndex[index];\n // the abnormal case is we requested a row even though the grid didn't need it\n // as a result of the paging and buffer (ie the row is off screen), in which\n // case we need to create a new node now\n if (core_1._.missing(rowNode)) {\n rowNode = _this.createBlankRowNode(index);\n _this.rowNodesByIndex[index] = rowNode;\n }\n // now we deffo have a row node, so set in the details\n // if the grid already asked for this row (the normal case), then we would\n // of put a placeholder node in place.\n rowNode.setDataAndId(dataItem, index.toString());\n }\n });\n };\n ViewportRowModel.prototype.createBlankRowNode = function (rowIndex) {\n var rowNode = new core_1.RowNode();\n this.context.wireBean(rowNode);\n rowNode.setRowHeight(this.rowHeight);\n rowNode.setRowTop(this.rowHeight * rowIndex);\n rowNode.setRowIndex(rowIndex);\n return rowNode;\n };\n ViewportRowModel.prototype.setRowCount = function (rowCount, keepRenderedRows) {\n if (keepRenderedRows === void 0) { keepRenderedRows = false; }\n if (rowCount !== this.rowCount) {\n this.rowCount = rowCount;\n var event_1 = {\n type: core_1.Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n newData: false,\n newPage: false,\n keepRenderedRows: keepRenderedRows,\n animate: false\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n ViewportRowModel.prototype.isRowPresent = function (rowNode) {\n return false;\n };\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], ViewportRowModel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('eventService')\n ], ViewportRowModel.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('selectionController')\n ], ViewportRowModel.prototype, \"selectionController\", void 0);\n __decorate([\n core_1.Autowired('context')\n ], ViewportRowModel.prototype, \"context\", void 0);\n __decorate([\n core_1.Autowired('gridApi')\n ], ViewportRowModel.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.Autowired('columnApi')\n ], ViewportRowModel.prototype, \"columnApi\", void 0);\n __decorate([\n core_1.Autowired('rowRenderer')\n ], ViewportRowModel.prototype, \"rowRenderer\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ViewportRowModel.prototype, \"init\", null);\n __decorate([\n core_1.PreDestroy\n ], ViewportRowModel.prototype, \"destroyDatasource\", null);\n ViewportRowModel = __decorate([\n core_1.Bean('rowModel')\n ], ViewportRowModel);\n return ViewportRowModel;\n}());\nexports.ViewportRowModel = ViewportRowModel;\n//# sourceMappingURL=viewportRowModel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar node_1 = require(\"./node\");\nvar bbox_1 = require(\"./bbox\");\nvar matrix_1 = require(\"./matrix\");\nvar Group = /** @class */ (function (_super) {\n __extends(Group, _super);\n function Group() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isContainerNode = true;\n return _this;\n }\n // We consider a group to be boundless, thus any point belongs to it.\n Group.prototype.isPointInNode = function (x, y) {\n return true;\n };\n Group.prototype.computeBBox = function () {\n var left = Infinity;\n var right = -Infinity;\n var top = Infinity;\n var bottom = -Infinity;\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.children.forEach(function (child) {\n if (!child.visible) {\n return;\n }\n var bbox = child.computeBBox();\n if (!bbox) {\n return;\n }\n if (!(child instanceof Group)) {\n if (child.dirtyTransform) {\n child.computeTransformMatrix();\n }\n var matrix = matrix_1.Matrix.flyweight(child.matrix);\n var parent_1 = child.parent;\n while (parent_1) {\n matrix.preMultiplySelf(parent_1.matrix);\n parent_1 = parent_1.parent;\n }\n matrix.transformBBox(bbox, 0, bbox);\n }\n var x = bbox.x;\n var y = bbox.y;\n if (x < left) {\n left = x;\n }\n if (y < top) {\n top = y;\n }\n if (x + bbox.width > right) {\n right = x + bbox.width;\n }\n if (y + bbox.height > bottom) {\n bottom = y + bbox.height;\n }\n });\n return new bbox_1.BBox(left, top, right - left, bottom - top);\n };\n Group.prototype.render = function (ctx) {\n // A group can have `scaling`, `rotation`, `translation` properties\n // that are applied to the canvas context before children are rendered,\n // so all children can be transformed at once.\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.matrix.toContext(ctx);\n var children = this.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n ctx.save();\n var child = children[i];\n if (child.visible) {\n child.render(ctx);\n }\n ctx.restore();\n }\n // debug\n // this.computeBBox().render(ctx, {\n // label: this.id,\n // resetTransform: true,\n // fillStyle: 'rgba(0, 0, 0, 0.5)'\n // });\n };\n Group.className = 'Group';\n return Group;\n}(node_1.Node));\nexports.Group = Group;\n//# sourceMappingURL=group.js.map","\nvar content = require(\"!!../../../../css-loader/dist/cjs.js!./ag-grid.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../css-loader/dist/cjs.js!./ag-grid.css\", function() {\n\t\tvar newContent = require(\"!!../../../../css-loader/dist/cjs.js!./ag-grid.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/**\\n ****************************\\n * Generic Styles\\n ****************************\\n*/\\nag-grid, ag-grid-angular, ag-grid-ng2, ag-grid-polymer, ag-grid-aurelia {\\n display: block; }\\n\\n.ag-hidden {\\n display: none !important; }\\n\\n.ag-invisible {\\n visibility: hidden !important; }\\n\\n.ag-faded {\\n opacity: 0.3; }\\n\\n.ag-width-half {\\n display: inline-block;\\n width: 50% !important; }\\n\\n.ag-unselectable {\\n -webkit-user-select: none !important;\\n -moz-user-select: none !important;\\n -ms-user-select: none !important;\\n user-select: none !important; }\\n\\n.ag-selectable {\\n -webkit-user-select: text !important;\\n -moz-user-select: text !important;\\n -ms-user-select: text !important;\\n user-select: text !important; }\\n\\n.ag-select-agg-func-popup {\\n position: absolute; }\\n\\n.ag-input-wrapper {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n line-height: normal;\\n position: relative;\\n overflow: hidden; }\\n\\n.ag-shake-left-to-right {\\n -webkit-animation-direction: alternate;\\n animation-direction: alternate;\\n -webkit-animation-duration: 0.2s;\\n animation-duration: 0.2s;\\n -webkit-animation-iteration-count: infinite;\\n animation-iteration-count: infinite;\\n -webkit-animation-name: ag-shake-left-to-right;\\n animation-name: ag-shake-left-to-right; }\\n\\n@-webkit-keyframes ag-shake-left-to-right {\\n from {\\n padding-left: 6px;\\n padding-right: 2px; }\\n to {\\n padding-left: 2px;\\n padding-right: 6px; } }\\n\\n@keyframes ag-shake-left-to-right {\\n from {\\n padding-left: 6px;\\n padding-right: 2px; }\\n to {\\n padding-left: 2px;\\n padding-right: 6px; } }\\n\\n.ag-root-wrapper {\\n cursor: default;\\n position: relative;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n overflow: hidden; }\\n .ag-root-wrapper.ag-layout-normal {\\n height: 100%; }\\n .ag-root-wrapper .ag-watermark {\\n position: absolute;\\n bottom: 10px;\\n right: 25px;\\n opacity: 0.5;\\n -webkit-transition: opacity 1s ease-out 3s;\\n transition: opacity 1s ease-out 3s; }\\n .ag-root-wrapper .ag-watermark:before {\\n content: '';\\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDk0cHgiIGhlaWdodD0iMjM5cHgiIHZpZXdCb3g9IjAgMCA0OTQgMjM5IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCA0Ny4xICg0NTQyMikgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+TG9nbzwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik0wLjYxMjg0OTkzMSwxMDggTDAuNjEyODQ5OTMxLDY3LjQ1OTYzNzQgTDAuNjEyODQ5OTMxLDY3LjQ1OTYzNzQgQzAuNjEyODQ5OTMxLDYyLjEwMDY1MzYgMy40NzE4MzM3OCw1Ny4xNDg3NDgzIDguMTEyODQ5OTMsNTQuNDY5MjU2NCBMOTguMzA2NDI1LDIuMzk1OTcxNTcgTDk4LjMwNjQyNSwyLjM5NTk3MTU3IEMxMDIuOTQ3NDQxLC0wLjI4MzUyMDM1OCAxMDguNjY1NDA5LC0wLjI4MzUyMDM1OCAxMTMuMzA2NDI1LDIuMzk1OTcxNTcgTDExMy4zMDY0MjUsMi4zOTU5NzE1NyBMMjAzLjUsNTQuNDY5MjU2NCBMMjAzLjUsNTQuNDY5MjU2NCBDMjA4LjE0MTAxNiw1Ny4xNDg3NDgzIDIxMSw2Mi4xMDA2NTM2IDIxMSw2Ny40NTk2Mzc0IEwyMTEsMTM4IEwxODEsMTM4IEwxODAuOTk3MDQxLDkzLjk5OTk5OTggTDE4MC45OTYwMzIsOTMuOTk5OTk5OSBDMTgwLjk5NTQ3NSw4NS43MTYxMjI2IDE3NC4yNzk5MDksNzkuMDAxMDA4NyAxNjUuOTk2MDMyLDc5LjAwMTAwODcgTDEyMiw3OC45OTk5OTk5IEMxMTMuNzE1NzI5LDc4Ljk5OTk5OTkgMTA3LDg1LjcxNTcyODYgMTA3LDkzLjk5OTk5OTkgTDEwNywxMzYuMDE1NjIzIEwxMDcsMTM2LjAxNTYyMyBDMTA3LDE0NC4yOTk4OTUgMTEzLjcxNTcyOSwxNTEuMDE1NjIzIDEyMiwxNTEuMDE1NjIzIEwxNjgsMTUxLjAxNTYyMyBMMTY4LDE2MyBDMTY4LDE2NC42NTY4NTQgMTY2LjY1Njg1NCwxNjYgMTY1LDE2NiBMMTIwLDE2NiBMMTIwLDE3OSBMMTY1Ljk5NjAzMiwxNzkgTDE2NS45OTYwMzIsMTc4Ljk5Nzg3NyBDMTc0LjI3OTQ3NCwxNzguOTk3ODc3IDE4MC45OTQ4NiwxNzIuMjgzNDQyIDE4MC45OTYwMzIsMTY0IEwxODEsMTUwLjk2MDU1NCBMMjExLDE1MC45NjA1NTQgTDIxMSwxNzEuNjA2MjA3IEwyMTEsMTcxLjYwNjIwNyBDMjExLDE3Ni45NjUxOTEgMjA4LjE0MTAxNiwxODEuOTE3MDk2IDIwMy41LDE4NC41OTY1ODggTDExMy4zMDY0MjUsMjM2LjY2OTg3MyBMMTEzLjMwNjQyNSwyMzYuNjY5ODczIEMxMDguNjY1NDA5LDIzOS4zNDkzNjUgMTAyLjk0NzQ0MSwyMzkuMzQ5MzY1IDk4LjMwNjQyNSwyMzYuNjY5ODczIEw4LjExMjg0OTkzLDE4NC41OTY1ODggTDguMTEyODQ5OTMsMTg0LjU5NjU4OCBDMy40NzE4MzM3OCwxODEuOTE3MDk2IDAuNjEyODQ5OTMxLDE3Ni45NjUxOTEgMC42MTI4NDk5MzEsMTcxLjYwNjIwNyBMMC42MTI4NDk5MzEsMTIxIEwyNywxMjEgTDI3LDEzNiBDMjcsMTQ0LjI4NDI3MSAzMy43MTU3Mjg3LDE1MSA0MiwxNTEgTDQyLDE1MSBMMTAwLDE1MSBMMTAwLDk0IEMxMDAsODUuNzE1NzI4OCA5My4yODQyNzEyLDc5IDg1LDc5IEwyNyw3OSBMMjcsOTIgTDg0LDkyIEM4NS42NTY4NTQyLDkyIDg3LDkzLjM0MzE0NTggODcsOTUgTDg3LDk1IEw4NywxMDggTDAuNjEyODQ5OTMxLDEwOCBaIiBpZD0icGF0aC0xIj48L3BhdGg+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0iU3ltYm9scyIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iPgogICAgICAgICAgICA8cGF0aCBkPSJNNDc3LDU1IEw0OTQsNTUgTDQ5NCwxNTEgTDQzNSwxNTEgQzQyNi43MTU3MjksMTUxIDQyMCwxNDQuMjg0MjcxIDQyMCwxMzYgTDQyMCw5NiBDNDIwLDg3LjcxNTcyODggNDI2LjcxNTcyOSw4MSA0MzUsODEgTDQzNSw4MSBMNDc3LDgxIEw0NzcsNTUgWiBNNDQwLDk4IEM0MzguMzQzMTQ2LDk4IDQzNyw5OS4zNDMxNDU4IDQzNywxMDEgTDQzNywxMzEgQzQzNywxMzIuNjU2ODU0IDQzOC4zNDMxNDYsMTM0IDQ0MCwxMzQgTDQ3NywxMzQgTDQ3Nyw5OCBMNDQwLDk4IFoiIGlkPSJkIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxnIGlkPSJpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzOTYuMDAwMDAwLCA1NS4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoLTYiIGZpbGw9IiNGRkZGRkYiIHBvaW50cz0iMCAyNiAxNyAyNiAxNyA5NiAwIDk2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aC03IiBmaWxsPSIjRTExRjIyIiBwb2ludHM9IjAgMS4xMzY4NjgzOGUtMTMgMTcgMS4xMzY4NjgzOGUtMTMgMTcgMTcgMCAxNyI+PC9wb2x5Z29uPgogICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMzEsMTUxIEwzNDgsMTUxIEwzNDgsMTAxIEwzNDgsMTAxIEMzNDgsOTkuMzQzMTQ1OCAzNDkuMzQzMTQ2LDk4IDM1MSw5OCBMMzg5LDk4IEwzODksODEgTDM0Niw4MSBMMzQ2LDgxIEMzMzcuNzE1NzI5LDgxIDMzMSw4Ny43MTU3Mjg4IDMzMSw5NiBMMzMxLDE1MSBaIiBpZD0iciIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMzI0LDg2IEwzMjQsNzYgTDMyNCw3NiBDMzI0LDY3LjcxNTcyODggMzE3LjI4NDI3MSw2MSAzMDksNjEgTDI0OSw2MSBMMjQ5LDYxIEMyNDAuNzE1NzI5LDYxIDIzNCw2Ny43MTU3Mjg4IDIzNCw3NiBMMjM0LDEzNiBMMjM0LDEzNiBDMjM0LDE0NC4yODQyNzEgMjQwLjcxNTcyOSwxNTEgMjQ5LDE1MSBMMzA5LDE1MSBMMzA5LDE1MSBDMzE3LjI4NDI3MSwxNTEgMzI0LDE0NC4yODQyNzEgMzI0LDEzNiBMMzI0LDEwMCBMMjg3LDEwMCBMMjg3LDExNyBMMzA3LDExNyBMMzA3LDEzMSBMMzA3LDEzMSBDMzA3LDEzMi42NTY4NTQgMzA1LjY1Njg1NCwxMzQgMzA0LDEzNCBMMjU0LDEzNCBMMjU0LDEzNCBDMjUyLjM0MzE0NiwxMzQgMjUxLDEzMi42NTY4NTQgMjUxLDEzMSBMMjUxLDgxIEwyNTEsODEgQzI1MSw3OS4zNDMxNDU4IDI1Mi4zNDMxNDYsNzggMjU0LDc4IEwzMDQsNzggTDMwNCw3OCBDMzA1LjY1Njg1NCw3OCAzMDcsNzkuMzQzMTQ1OCAzMDcsODEgTDMwNyw4NiBMMzI0LDg2IFoiIGlkPSJHIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxnIGlkPSJhZyI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iQ29tYmluZWQtU2hhcGUiPgogICAgICAgICAgICAgICAgICAgIDxtYXNrIGlkPSJtYXNrLTIiIGZpbGw9IndoaXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICA8L21hc2s+CiAgICAgICAgICAgICAgICAgICAgPHVzZSBmaWxsPSIjRTExRjIyIiB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJnIiBmaWxsPSIjRTExRjIyIiB4PSIxMjAiIHk9IjkyIiB3aWR0aD0iNDgiIGhlaWdodD0iNDYiIHJ4PSIzIj48L3JlY3Q+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDAsMTIxIEw4NywxMjEgTDg3LDEzOCBMNDMsMTM4IEw0MywxMzggQzQxLjM0MzE0NTgsMTM4IDQwLDEzNi42NTY4NTQgNDAsMTM1IEw0MCwxMjEgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRTExRjIyIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==);\\n -webkit-filter: invert(50%);\\n filter: invert(50%);\\n background-repeat: no-repeat;\\n background-size: 110px 60px;\\n display: block;\\n height: 60px;\\n width: 110px; }\\n .ag-root-wrapper .ag-watermark .ag-watermark-text {\\n opacity: 0.5;\\n font-weight: bold;\\n font-family: Impact;\\n font-size: 19px; }\\n\\n.ag-root-wrapper-body {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: row;\\n flex-direction: row; }\\n .ag-root-wrapper-body.ag-layout-normal {\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto;\\n height: 0;\\n min-height: 0; }\\n\\n.ag-root {\\n position: relative;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column; }\\n .ag-root.ag-layout-normal, .ag-root.ag-layout-auto-height {\\n overflow: hidden;\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto;\\n width: 0; }\\n .ag-root.ag-layout-normal {\\n height: 100%; }\\n\\n/**\\n ****************************\\n * Viewports\\n ****************************\\n*/\\n.ag-header-viewport,\\n.ag-floating-top-viewport,\\n.ag-body-viewport,\\n.ag-pinned-left-cols-viewport,\\n.ag-center-cols-viewport,\\n.ag-pinned-right-cols-viewport,\\n.ag-floating-bottom-viewport,\\n.ag-body-horizontal-scroll-viewport,\\n.ag-virtual-list-viewport {\\n position: relative;\\n height: 100%;\\n min-width: 0px;\\n overflow: hidden;\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto; }\\n\\n@media print {\\n .ag-layout-normal {\\n display: none; }\\n .ag-root-wrapper,\\n .ag-root-wrapper-body,\\n .ag-root,\\n .ag-body-viewport,\\n .ag-center-cols-container,\\n .ag-center-cols-viewport,\\n .ag-center-cols-clipper,\\n .ag-body-horizontal-scroll-viewport,\\n .ag-virtual-list-viewport {\\n height: auto !important;\\n overflow: visible !important;\\n display: block !important; } }\\n\\n.ag-body-viewport {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex; }\\n .ag-body-viewport.ag-layout-normal {\\n overflow-y: auto;\\n -webkit-overflow-scrolling: touch; }\\n .ag-body-viewport:not(.ag-layout-print).ag-force-vertical-scroll {\\n overflow-y: scroll; }\\n\\n.ag-pinned-left-cols-viewport, .ag-pinned-right-cols-viewport {\\n -webkit-box-flex: 1000;\\n -ms-flex-positive: 1000;\\n flex-grow: 1000; }\\n\\n.ag-center-cols-viewport {\\n width: 100%;\\n overflow-x: auto; }\\n\\n.ag-body-horizontal-scroll-viewport {\\n overflow-x: scroll; }\\n\\n.ag-virtual-list-viewport {\\n overflow: auto;\\n width: 100%; }\\n\\n/**\\n ****************************\\n * Containers\\n ****************************\\n*/\\n.ag-header-container,\\n.ag-floating-top-container,\\n.ag-body-container,\\n.ag-pinned-right-cols-container,\\n.ag-center-cols-container,\\n.ag-pinned-left-cols-container,\\n.ag-floating-bottom-container,\\n.ag-body-horizontal-scroll-container,\\n.ag-full-width-container,\\n.ag-floating-bottom-full-width-container,\\n.ag-virtual-list-container {\\n position: relative; }\\n\\n.ag-header-container, .ag-floating-top-container, .ag-floating-bottom-container {\\n height: 100%;\\n white-space: nowrap; }\\n\\n.ag-body-viewport .ag-center-cols-clipper {\\n min-height: 100%; }\\n\\n.ag-body-viewport.ag-layout-auto-height .ag-center-cols-clipper, .ag-body-viewport.ag-layout-auto-height .ag-center-cols-container {\\n min-height: 50px; }\\n\\n.ag-body-viewport .ag-center-cols-container {\\n display: block; }\\n\\n.ag-body-viewport.ag-layout-print {\\n -webkit-box-flex: 0;\\n -ms-flex: none;\\n flex: none; }\\n .ag-body-viewport.ag-layout-print .ag-center-cols-clipper {\\n min-width: 100%; }\\n\\n.ag-pinned-right-cols-container {\\n display: block; }\\n\\n.ag-body-horizontal-scroll-container {\\n height: 100%; }\\n\\n.ag-full-width-container,\\n.ag-floating-top-full-width-container,\\n.ag-floating-bottom-full-width-container {\\n position: absolute;\\n top: 0px;\\n left: 0px;\\n pointer-events: none; }\\n\\n.ag-full-width-container {\\n width: 100%; }\\n\\n.ag-floating-bottom-full-width-container, .ag-floating-top-full-width-container {\\n display: inline-block;\\n overflow: hidden;\\n height: 100%;\\n width: 100%; }\\n\\n.ag-virtual-list-container {\\n overflow: hidden; }\\n\\n/**\\n ****************************\\n * Scrollers\\n ****************************\\n*/\\n.ag-center-cols-clipper {\\n -webkit-box-flex: 1;\\n -ms-flex: 1;\\n flex: 1;\\n min-width: 0;\\n overflow: hidden; }\\n\\n.ag-body-horizontal-scroll {\\n min-height: 0;\\n min-width: 0;\\n width: 100%;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n position: relative; }\\n\\n.ag-layout-print .ag-body-horizontal-scroll {\\n display: none; }\\n\\n.ag-horizontal-left-spacer, .ag-horizontal-right-spacer {\\n height: 100%;\\n min-width: 0;\\n -webkit-box-flex: 1000;\\n -ms-flex-positive: 1000;\\n flex-grow: 1000;\\n overflow-x: scroll; }\\n .ag-horizontal-left-spacer.ag-scroller-corner, .ag-horizontal-right-spacer.ag-scroller-corner {\\n overflow-x: hidden; }\\n\\n/**\\n ****************************\\n * Headers\\n ****************************\\n*/\\n.ag-header, .ag-pinned-left-header, .ag-pinned-right-header {\\n display: inline-block;\\n overflow: hidden; }\\n .ag-header .ag-header-cell-sortable, .ag-pinned-left-header .ag-header-cell-sortable, .ag-pinned-right-header .ag-header-cell-sortable {\\n cursor: pointer; }\\n\\n.ag-header {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n width: 100%;\\n white-space: nowrap; }\\n\\n.ag-header-icon {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex; }\\n\\n.ag-pinned-left-header {\\n height: 100%; }\\n\\n.ag-pinned-right-header {\\n height: 100%; }\\n\\n.ag-header-row {\\n position: absolute;\\n overflow: hidden; }\\n\\n.ag-header-overlay {\\n display: block;\\n position: absolute; }\\n\\n.ag-header-cell {\\n display: -webkit-inline-box;\\n display: -ms-inline-flexbox;\\n display: inline-flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n position: absolute;\\n height: 100%;\\n overflow: hidden; }\\n\\n.ag-header-group-cell-label, .ag-header-cell-label {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto;\\n overflow: hidden;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n text-overflow: ellipsis;\\n -ms-flex-item-align: stretch;\\n align-self: stretch; }\\n\\n.ag-header-cell-label .ag-header-cell-text {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n\\n.ag-numeric-header .ag-header-cell-label {\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: reverse;\\n -ms-flex-direction: row-reverse;\\n flex-direction: row-reverse; }\\n\\n.ag-header-group-text {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n\\n.ag-header-cell-resize {\\n position: absolute;\\n z-index: 1;\\n height: 100%;\\n width: 4px; }\\n\\n.ag-header-expand-icon {\\n padding-left: 4px; }\\n\\n.ag-header-select-all {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex; }\\n\\n/**\\n ****************************\\n * Columns\\n ****************************\\n*/\\n.ag-column-moving .ag-cell {\\n -webkit-transition: left 0.2s;\\n transition: left 0.2s; }\\n\\n.ag-column-moving .ag-header-cell {\\n -webkit-transition: left 0.2s;\\n transition: left 0.2s; }\\n\\n.ag-column-moving .ag-header-group-cell {\\n -webkit-transition: left 0.2s, width 0.2s;\\n transition: left 0.2s, width 0.2s; }\\n\\n/**\\n ****************************\\n * Column Panel\\n ****************************\\n*/\\n.ag-column-panel {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n overflow: hidden;\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto; }\\n\\n.ag-column-select-panel {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n overflow: hidden;\\n -webkit-box-flex: 4;\\n -ms-flex-positive: 4;\\n flex-grow: 4;\\n -ms-flex-negative: 1;\\n flex-shrink: 1;\\n -ms-flex-preferred-size: 0;\\n flex-basis: 0; }\\n .ag-column-select-panel .ag-primary-cols-header-panel {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-flex: 0;\\n -ms-flex: none;\\n flex: none; }\\n .ag-column-select-panel .ag-primary-cols-header-panel .ag-column-name-filter {\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto; }\\n .ag-column-select-panel .ag-primary-cols-header-panel .ag-primary-cols-filter-wrapper {\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto; }\\n .ag-column-select-panel .ag-primary-cols-header-panel .ag-primary-cols-filter-wrapper input {\\n width: 100%; }\\n .ag-column-select-panel .ag-primary-cols-list-panel {\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto;\\n overflow: auto; }\\n\\n.ag-column-drop {\\n display: -webkit-inline-box;\\n display: -ms-inline-flexbox;\\n display: inline-flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n overflow: auto;\\n width: 100%; }\\n .ag-column-drop .ag-column-drop-list {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n .ag-column-drop .ag-column-drop-list .ag-column-drop-cell {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n .ag-column-drop .ag-column-drop-list .ag-column-drop-cell .ag-column-drop-cell-text {\\n overflow: hidden;\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n\\n.ag-column-drop.ag-column-drop-vertical {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n overflow: hidden;\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 0px;\\n flex: 1 1 0;\\n -webkit-box-align: stretch;\\n -ms-flex-align: stretch;\\n align-items: stretch; }\\n .ag-column-drop.ag-column-drop-vertical > div {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n .ag-column-drop.ag-column-drop-vertical .ag-column-drop-list {\\n -webkit-box-align: stretch;\\n -ms-flex-align: stretch;\\n align-items: stretch;\\n -webkit-box-flex: 1;\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n overflow-x: auto; }\\n .ag-column-drop.ag-column-drop-vertical .ag-column-drop-empty-message {\\n display: block; }\\n\\n.ag-column-drop.ag-column-drop-horizontal {\\n white-space: nowrap;\\n overflow: hidden; }\\n\\n.ag-filter-panel {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto; }\\n .ag-filter-panel .ag-filter-toolpanel-header {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex; }\\n .ag-filter-panel .ag-filter-toolpanel-header div:not(.ag-input-wrapper) {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n .ag-filter-panel .ag-group-item {\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column; }\\n\\n/**\\n ****************************\\n * Rows\\n ****************************\\n*/\\n.ag-row-animation .ag-row {\\n -webkit-transition: top 0.4s, height 0.4s, background-color 0.1s, opacity 0.2s, -webkit-transform 0.4s;\\n transition: top 0.4s, height 0.4s, background-color 0.1s, opacity 0.2s, -webkit-transform 0.4s;\\n transition: transform 0.4s, top 0.4s, height 0.4s, background-color 0.1s, opacity 0.2s;\\n transition: transform 0.4s, top 0.4s, height 0.4s, background-color 0.1s, opacity 0.2s, -webkit-transform 0.4s; }\\n\\n.ag-row-no-animation .ag-row {\\n -webkit-transition: background-color 0.1s;\\n transition: background-color 0.1s; }\\n\\n.ag-row {\\n white-space: nowrap;\\n width: 100%; }\\n\\n.ag-row-position-absolute {\\n position: absolute; }\\n\\n.ag-row-position-relative {\\n position: relative; }\\n\\n.ag-full-width-row {\\n overflow: hidden;\\n pointer-events: all; }\\n\\n.ag-row-inline-editing {\\n z-index: 1; }\\n\\n.ag-row-dragging {\\n z-index: 2; }\\n\\n.ag-stub-cell {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n\\n/**\\n ****************************\\n * Cells\\n ****************************\\n*/\\n.ag-cell {\\n display: inline-block;\\n overflow: hidden;\\n position: absolute;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n\\n.ag-cell-wrapper {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n width: 100%;\\n height: 100%; }\\n .ag-cell-wrapper.ag-row-group {\\n -webkit-box-align: start;\\n -ms-flex-align: start;\\n align-items: flex-start; }\\n .ag-cell-wrapper .ag-cell-value, .ag-cell-wrapper .ag-group-value {\\n overflow: hidden;\\n text-overflow: ellipsis; }\\n\\n.ag-full-width-row.ag-row-group .ag-cell-wrapper {\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n\\n.ag-cell-with-height {\\n height: 100%; }\\n\\n.ag-group-cell-entire-row {\\n display: inline-block;\\n height: 100%;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n width: 100%; }\\n\\n.ag-footer-cell-entire-row {\\n display: inline-block;\\n height: 100%;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n width: 100%; }\\n\\n.ag-cell-inline-editing {\\n z-index: 1; }\\n .ag-cell-inline-editing .ag-cell-edit-input, .ag-cell-inline-editing .ag-input-wrapper {\\n height: 100%;\\n width: 100%;\\n line-height: normal; }\\n\\n/**\\n ****************************\\n * Filters\\n ****************************\\n*/\\n.ag-set-filter-item {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n .ag-set-filter-item > div, .ag-set-filter-item > span {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex; }\\n\\n.ag-filter .ag-filter-checkbox {\\n pointer-events: none; }\\n\\n.ag-filter .ag-filter-body-wrapper {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column; }\\n\\n.ag-filter .ag-filter-filter {\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto; }\\n\\n/**\\n ****************************\\n * Floating Filter\\n ****************************\\n*/\\n.ag-floating-filter-full-body .ag-react-container, .ag-floating-filter-body .ag-react-container {\\n height: 100%; }\\n\\n.ag-floating-filter-body {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto;\\n height: 100%; }\\n .ag-floating-filter-body input {\\n margin: 0;\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto;\\n max-height: calc(100% - 1px); }\\n\\n.ag-floating-filter-full-body {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n height: 100%;\\n width: 100%; }\\n .ag-floating-filter-full-body > div {\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto; }\\n .ag-floating-filter-full-body input {\\n margin: 0;\\n width: 100%; }\\n .ag-floating-filter-full-body input[type=\\\"range\\\"] {\\n height: 100%; }\\n\\n.ag-floating-filter {\\n display: inline-block;\\n position: absolute; }\\n\\n.ag-floating-filter-input {\\n width: 100%; }\\n\\n.ag-floating-filter-input:-moz-read-only {\\n background-color: #eee; }\\n\\n.ag-floating-filter-input:read-only {\\n background-color: #eee; }\\n\\n.ag-floating-filter-menu {\\n position: absolute;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\n\\n.ag-floating-filter-button {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-flex: 0;\\n -ms-flex: none;\\n flex: none; }\\n\\n/**\\n ****************************\\n * Drag & Drop\\n ****************************\\n*/\\n.ag-dnd-ghost {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n background: #e5e5e5;\\n border: 1px solid black;\\n cursor: move;\\n font-family: \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif;\\n font-size: 14px;\\n overflow: hidden;\\n padding: 3px;\\n position: absolute;\\n text-overflow: ellipsis;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n z-index: 10; }\\n\\n.ag-dnd-ghost-icon {\\n padding: 2px; }\\n\\n/**\\n ****************************\\n * Overlay\\n ****************************\\n*/\\n.ag-overlay {\\n height: 100%;\\n left: 0;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n width: 100%; }\\n\\n.ag-overlay-panel {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n height: 100%;\\n pointer-events: none;\\n width: 100%; }\\n\\n.ag-overlay-wrapper {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-flex: 0;\\n -ms-flex: none;\\n flex: none;\\n width: 100%;\\n height: 100%;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n text-align: center; }\\n .ag-overlay-wrapper.ag-overlay-loading-wrapper {\\n pointer-events: all; }\\n\\n.ag-overlay-no-rows-wrapper.ag-layout-auto-height {\\n padding-top: 30px; }\\n\\n/**\\n ****************************\\n * Popup\\n ****************************\\n*/\\n.ag-popup > div {\\n z-index: 5; }\\n\\n.ag-popup-backdrop {\\n height: 100%;\\n left: 0;\\n position: fixed;\\n top: 0;\\n width: 100%; }\\n\\n.ag-popup-editor {\\n position: absolute;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n z-index: 1; }\\n\\n/**\\n ****************************\\n * Virtual Lists\\n ****************************\\n*/\\n.ag-virtual-list-item {\\n position: absolute;\\n width: 100%; }\\n .ag-virtual-list-item span:empty:not(.ag-icon) {\\n border-left: 1px solid transparent; }\\n\\n/**\\n ****************************\\n * Floating Top and Bottom\\n ****************************\\n*/\\n.ag-floating-top {\\n overflow: hidden;\\n white-space: nowrap;\\n width: 100%;\\n position: relative;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex; }\\n\\n.ag-pinned-left-floating-top {\\n display: inline-block;\\n overflow: hidden;\\n position: relative;\\n min-width: 0px;\\n -webkit-box-flex: 1000;\\n -ms-flex-positive: 1000;\\n flex-grow: 1000; }\\n\\n.ag-pinned-right-floating-top {\\n display: inline-block;\\n overflow: hidden;\\n position: relative;\\n min-width: 0px;\\n -webkit-box-flex: 1000;\\n -ms-flex-positive: 1000;\\n flex-grow: 1000; }\\n\\n.ag-floating-bottom {\\n overflow: hidden;\\n white-space: nowrap;\\n width: 100%;\\n position: relative;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex; }\\n\\n.ag-pinned-left-floating-bottom {\\n display: inline-block;\\n overflow: hidden;\\n position: relative;\\n min-width: 0px;\\n -webkit-box-flex: 1000;\\n -ms-flex-positive: 1000;\\n flex-grow: 1000; }\\n\\n.ag-pinned-right-floating-bottom {\\n display: inline-block;\\n overflow: hidden;\\n position: relative;\\n min-width: 0px;\\n -webkit-box-flex: 1000;\\n -ms-flex-positive: 1000;\\n flex-grow: 1000; }\\n\\n/**\\n ****************************\\n * Dialog\\n ****************************\\n*/\\n.ag-dialog, .ag-panel {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n position: relative;\\n overflow: hidden; }\\n .ag-dialog .ag-title-bar, .ag-panel .ag-title-bar {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-flex: 0;\\n -ms-flex: none;\\n flex: none;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n cursor: default; }\\n .ag-dialog .ag-title-bar .ag-title-bar-title, .ag-panel .ag-title-bar .ag-title-bar-title {\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto; }\\n .ag-dialog .ag-title-bar .ag-title-bar-buttons, .ag-panel .ag-title-bar .ag-title-bar-buttons {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex; }\\n .ag-dialog .ag-title-bar .ag-title-bar-buttons .ag-button, .ag-panel .ag-title-bar .ag-title-bar-buttons .ag-button {\\n cursor: pointer; }\\n .ag-dialog .ag-panel-content-wrapper, .ag-panel .ag-panel-content-wrapper {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto;\\n position: relative;\\n overflow: hidden; }\\n .ag-dialog .ag-panel-content-wrapper > div, .ag-panel .ag-panel-content-wrapper > div {\\n width: 100%;\\n height: 100%; }\\n\\n.ag-dialog {\\n position: absolute; }\\n .ag-dialog .ag-resizer {\\n position: absolute;\\n pointer-events: none;\\n z-index: 1; }\\n .ag-dialog .ag-resizer.ag-resizer-topLeft {\\n top: 0;\\n left: 0;\\n height: 5px;\\n width: 5px;\\n cursor: nwse-resize; }\\n .ag-dialog .ag-resizer.ag-resizer-top {\\n top: 0;\\n left: 5px;\\n right: 5px;\\n height: 5px;\\n cursor: ns-resize; }\\n .ag-dialog .ag-resizer.ag-resizer-topRight {\\n top: 0;\\n right: 0;\\n height: 5px;\\n width: 5px;\\n cursor: nesw-resize; }\\n .ag-dialog .ag-resizer.ag-resizer-right {\\n top: 5px;\\n right: 0;\\n bottom: 5px;\\n width: 5px;\\n cursor: ew-resize; }\\n .ag-dialog .ag-resizer.ag-resizer-bottomRight {\\n bottom: 0;\\n right: 0;\\n height: 5px;\\n width: 5px;\\n cursor: nwse-resize; }\\n .ag-dialog .ag-resizer.ag-resizer-bottom {\\n bottom: 0;\\n left: 5px;\\n right: 5px;\\n height: 5px;\\n cursor: ns-resize; }\\n .ag-dialog .ag-resizer.ag-resizer-bottomLeft {\\n bottom: 0;\\n left: 0;\\n height: 5px;\\n width: 5px;\\n cursor: nesw-resize; }\\n .ag-dialog .ag-resizer.ag-resizer-left {\\n left: 0;\\n top: 5px;\\n bottom: 5px;\\n width: 5px;\\n cursor: ew-resize; }\\n .ag-dialog .ag-message-box {\\n width: 100%;\\n height: 100%;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column; }\\n .ag-dialog .ag-message-box .ag-message-box-content {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n .ag-dialog .ag-message-box .ag-message-box-button-bar {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center; }\\n\\n/**\\n ****************************\\n * Tooltip\\n ****************************\\n*/\\n.ag-tooltip {\\n position: absolute;\\n pointer-events: none;\\n z-index: 99999; }\\n\\n.ag-chart-tooltip {\\n display: table;\\n position: absolute;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n pointer-events: none;\\n white-space: nowrap;\\n z-index: 99999;\\n font: 12px Verdana, sans-serif;\\n color: black;\\n background: #f4f4f4;\\n border-radius: 5px;\\n -webkit-box-shadow: 0 0 1px rgba(3, 3, 3, 0.7), 0.5vh 0.5vh 1vh rgba(3, 3, 3, 0.25);\\n box-shadow: 0 0 1px rgba(3, 3, 3, 0.7), 0.5vh 0.5vh 1vh rgba(3, 3, 3, 0.25);\\n opacity: 0;\\n -webkit-transform: scale(0.9);\\n transform: scale(0.9);\\n -webkit-transition: 0.3s cubic-bezier(0.19, 1, 0.22, 1);\\n transition: 0.3s cubic-bezier(0.19, 1, 0.22, 1);\\n -webkit-transition-property: opacity, -webkit-transform;\\n transition-property: opacity, -webkit-transform;\\n transition-property: opacity, transform;\\n transition-property: opacity, transform, -webkit-transform; }\\n .ag-chart-tooltip.visible {\\n opacity: 1;\\n -webkit-transform: scale(1);\\n transform: scale(1); }\\n .ag-chart-tooltip .title {\\n font-weight: bold;\\n padding: 7px;\\n border-top-left-radius: 5px;\\n border-top-right-radius: 5px;\\n color: white;\\n background-color: #888888; }\\n .ag-chart-tooltip .content {\\n padding: 7px;\\n line-height: 1.7em; }\\n\\n/**\\n ****************************\\n * Animations\\n ****************************\\n*/\\n.ag-value-slide-out {\\n margin-right: 5px;\\n opacity: 1;\\n -webkit-transition: opacity 3s, margin-right 3s;\\n transition: opacity 3s, margin-right 3s;\\n -webkit-transition-timing-function: linear;\\n transition-timing-function: linear; }\\n\\n.ag-value-slide-out-end {\\n margin-right: 10px;\\n opacity: 0; }\\n\\n.ag-opacity-zero {\\n opacity: 0 !important; }\\n\\n/**\\n ****************************\\n * Menu\\n ****************************\\n*/\\n.ag-menu {\\n max-height: 100%;\\n overflow-y: auto;\\n position: absolute;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\n\\n.ag-menu-column-select-wrapper {\\n height: 265px;\\n overflow: auto;\\n width: 200px; }\\n\\n.ag-menu-list {\\n display: table; }\\n\\n.ag-menu-option, .ag-menu-separator {\\n display: table-row; }\\n .ag-menu-option > span, .ag-menu-separator > span {\\n display: table-cell;\\n vertical-align: middle; }\\n\\n.ag-menu-option-text {\\n white-space: nowrap; }\\n\\n.ag-menu-column-select-wrapper .ag-column-select-panel {\\n height: 100%; }\\n\\n/**\\n ****************************\\n * Rich Select\\n ****************************\\n*/\\n.ag-rich-select {\\n cursor: default;\\n outline: none; }\\n .ag-rich-select .ag-rich-select-value {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n .ag-rich-select .ag-rich-select-value > span {\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto; }\\n .ag-rich-select .ag-rich-select-value > span.ag-icon {\\n -webkit-box-ordinal-group: 2;\\n -ms-flex-order: 1;\\n order: 1;\\n -webkit-box-flex: 0;\\n -ms-flex: none;\\n flex: none; }\\n .ag-rich-select .ag-rich-select-list {\\n position: relative; }\\n .ag-rich-select .ag-rich-select-list .ag-virtual-list-item {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex; }\\n .ag-rich-select .ag-rich-select-list .ag-virtual-list-item .ag-rich-select-row {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n white-space: nowrap; }\\n\\n/**\\n ****************************\\n * Pagination\\n ****************************\\n*/\\n.ag-paging-panel {\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: end;\\n -ms-flex-pack: end;\\n justify-content: flex-end; }\\n .ag-paging-panel .ag-paging-row-summary-panel {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex; }\\n .ag-paging-panel .ag-paging-row-summary-panel span {\\n margin: 0 3px; }\\n\\n.ag-paging-page-summary-panel {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n .ag-paging-page-summary-panel .ag-disabled {\\n pointer-events: none; }\\n .ag-paging-page-summary-panel .ag-paging-button {\\n position: relative;\\n overflow: hidden; }\\n .ag-paging-page-summary-panel .ag-paging-button button {\\n position: absolute; }\\n\\n/**\\n ****************************\\n * Tool Panel\\n ****************************\\n*/\\n.ag-tool-panel-wrapper {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n overflow-y: auto;\\n cursor: default;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n width: 200px; }\\n\\n.ag-column-tool-panel-column,\\n.ag-column-tool-panel-column-group {\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: row;\\n flex-direction: row;\\n -ms-flex-wrap: nowrap;\\n flex-wrap: nowrap;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n .ag-column-tool-panel-column .ag-column-tool-panel-column,\\n .ag-column-tool-panel-column .ag-column-tool-panel-column-group,\\n .ag-column-tool-panel-column-group .ag-column-tool-panel-column,\\n .ag-column-tool-panel-column-group .ag-column-tool-panel-column-group {\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto;\\n overflow: hidden;\\n text-overflow: ellipsis; }\\n\\n.ag-column-select-checkbox {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex; }\\n\\n.ag-tool-panel-horizontal-resize {\\n cursor: col-resize;\\n height: 100%;\\n position: absolute;\\n top: 0;\\n width: 5px;\\n z-index: 1; }\\n\\n.ag-ltr .ag-side-bar-left .ag-tool-panel-horizontal-resize, .ag-rtl .ag-side-bar-right .ag-tool-panel-horizontal-resize {\\n -webkit-transform: translateX(3px);\\n transform: translateX(3px);\\n right: 0; }\\n\\n.ag-ltr .ag-side-bar-right .ag-tool-panel-horizontal-resize, .ag-rtl .ag-side-bar-left .ag-tool-panel-horizontal-resize {\\n -webkit-transform: translateX(-3px);\\n transform: translateX(-3px);\\n left: 0; }\\n\\n.loading-filter {\\n background-color: #e6e6e6;\\n height: 100%;\\n padding: 5px;\\n position: absolute;\\n top: 34px;\\n width: 100%;\\n z-index: 1; }\\n\\n.ag-details-row {\\n height: 100%;\\n width: 100%; }\\n\\n.ag-details-grid {\\n height: 100%;\\n width: 100%; }\\n\\n.ag-header-group-cell {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n height: 100%;\\n overflow: hidden;\\n position: absolute;\\n text-overflow: ellipsis; }\\n\\n.ag-cell-label-container {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: reverse;\\n -ms-flex-direction: row-reverse;\\n flex-direction: row-reverse;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n width: 100%; }\\n\\n.ag-numeric-header .ag-cell-label-container {\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: row;\\n flex-direction: row; }\\n\\n/**\\n ****************************\\n * Side Bar\\n ****************************\\n*/\\n.ag-side-bar {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: reverse;\\n -ms-flex-direction: row-reverse;\\n flex-direction: row-reverse; }\\n .ag-side-bar.ag-side-bar-left {\\n -webkit-box-ordinal-group: 0;\\n -ms-flex-order: -1;\\n order: -1;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: row;\\n flex-direction: row; }\\n .ag-side-bar .ag-side-buttons div button {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n -ms-flex-wrap: nowrap;\\n flex-wrap: nowrap;\\n white-space: nowrap;\\n outline: none;\\n cursor: pointer; }\\n .ag-side-bar .ag-side-buttons div button span:not(.ag-icon) {\\n -webkit-writing-mode: tb;\\n -ms-writing-mode: tb;\\n writing-mode: tb;\\n -webkit-writing-mode: vertical-lr;\\n -ms-writing-mode: tb-lr;\\n writing-mode: vertical-lr; }\\n .ag-side-bar .ag-side-buttons div button .ag-icon {\\n display: inline; }\\n .ag-side-bar .panel-container {\\n width: 180px; }\\n .ag-side-bar.full-width .panel-container {\\n width: 200px; }\\n\\n.ag-rtl .ag-side-bar .ag-side-buttons button span:not(.ag-icon) {\\n -webkit-writing-mode: tb-rl;\\n -ms-writing-mode: tb-rl;\\n writing-mode: tb-rl;\\n -webkit-writing-mode: vertical-rl;\\n -ms-writing-mode: tb-rl;\\n writing-mode: vertical-rl; }\\n\\n/**\\n ****************************\\n * Status Bar\\n ****************************\\n*/\\n.ag-status-bar {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n overflow: hidden; }\\n .ag-status-bar .ag-status-panel {\\n display: -webkit-inline-box;\\n display: -ms-inline-flexbox;\\n display: inline-flex; }\\n .ag-status-bar .ag-name-value {\\n white-space: nowrap; }\\n\\n.ag-status-bar-left {\\n display: -webkit-inline-box;\\n display: -ms-inline-flexbox;\\n display: inline-flex; }\\n\\n.ag-status-bar-center {\\n display: -webkit-inline-box;\\n display: -ms-inline-flexbox;\\n display: inline-flex; }\\n\\n.ag-status-bar-right {\\n display: -webkit-inline-box;\\n display: -ms-inline-flexbox;\\n display: inline-flex; }\\n\\n/**\\n ****************************\\n * Widgets\\n ****************************\\n*/\\n.ag-group-component {\\n position: relative;\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 100%;\\n flex: 1 1 100%; }\\n .ag-group-component .ag-group-component-title-bar,\\n .ag-group-component .ag-group-component-title {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n .ag-group-component .ag-group-component-toolbar {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n .ag-group-component .ag-group-component-container {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column; }\\n .ag-group-component .ag-group-component-container .ag-group-subgroup {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-item-align: stretch;\\n align-self: stretch; }\\n .ag-group-component .ag-column-group-icons > span {\\n display: block; }\\n .ag-group-component .ag-group-item {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n .ag-group-component.ag-alignment-stretch .ag-group-item {\\n -webkit-box-align: stretch;\\n -ms-flex-align: stretch;\\n align-items: stretch; }\\n .ag-group-component.ag-alignment-start .ag-group-item {\\n -webkit-box-align: start;\\n -ms-flex-align: start;\\n align-items: flex-start; }\\n .ag-group-component.ag-alignment-end .ag-group-item {\\n -webkit-box-align: end;\\n -ms-flex-align: end;\\n align-items: flex-end; }\\n .ag-group-component.ag-disabled .ag-group-component-container {\\n pointer-events: none; }\\n .ag-group-component.ag-collapsed .ag-group-component-toolbar, .ag-group-component.ag-collapsed .ag-group-component-container {\\n display: none; }\\n\\n.ag-toggle-button .ag-input-wrapper .ag-icon {\\n -webkit-transition: right 0.3s;\\n transition: right 0.3s;\\n position: absolute;\\n top: -1px; }\\n\\n.ag-input-field {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: row;\\n flex-direction: row;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n .ag-input-field input, .ag-input-field select, .ag-input-field textarea {\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto;\\n width: 100%;\\n min-width: 0; }\\n\\n.ag-range-field {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n\\n.ag-picker-field > .ag-wrapper, .ag-slider > .ag-wrapper, .ag-angle-select > .ag-wrapper {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex; }\\n .ag-picker-field > .ag-wrapper > div, .ag-slider > .ag-wrapper > div, .ag-angle-select > .ag-wrapper > div {\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto; }\\n\\n.ag-angle-select {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n .ag-angle-select .ag-angle-select-field .ag-parent-circle {\\n display: block;\\n position: relative; }\\n .ag-angle-select .ag-angle-select-field .ag-child-circle {\\n position: absolute; }\\n\\n.ag-picker-field {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n .ag-picker-field > .ag-wrapper > button {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n border: 0;\\n padding: 0;\\n margin: 0; }\\n\\n.ag-color-picker > .ag-wrapper {\\n -webkit-box-align: stretch;\\n -ms-flex-align: stretch;\\n align-items: stretch;\\n overflow: hidden; }\\n\\n.ag-color-picker button {\\n cursor: pointer; }\\n\\n.ag-labeled.ag-label-align-right label {\\n -webkit-box-ordinal-group: 2;\\n -ms-flex-order: 1;\\n order: 1; }\\n\\n.ag-labeled.ag-label-align-right > div {\\n -webkit-box-flex: 0;\\n -ms-flex: none;\\n flex: none; }\\n\\n.ag-labeled.ag-label-align-top {\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n -webkit-box-align: start;\\n -ms-flex-align: start;\\n align-items: flex-start; }\\n .ag-labeled.ag-label-align-top > div {\\n -ms-flex-item-align: stretch;\\n align-self: stretch; }\\n\\n.ag-color-panel {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n text-align: center; }\\n .ag-color-panel .ag-spectrum-color {\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto;\\n position: relative;\\n overflow: hidden;\\n cursor: default; }\\n .ag-color-panel .ag-fill {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0; }\\n .ag-color-panel .ag-spectrum-val {\\n cursor: pointer; }\\n .ag-color-panel .ag-spectrum-dragger {\\n position: absolute;\\n pointer-events: none;\\n cursor: pointer; }\\n .ag-color-panel .ag-spectrum-hue {\\n cursor: default;\\n background: -webkit-gradient(linear, right top, left top, color-stop(3%, #ff0000), color-stop(17%, #ffff00), color-stop(33%, #00ff00), color-stop(50%, #00ffff), color-stop(67%, #0000ff), color-stop(83%, #ff00ff), to(#ff0000));\\n background: linear-gradient(to left, #ff0000 3%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); }\\n .ag-color-panel .ag-spectrum-alpha {\\n cursor: default; }\\n .ag-color-panel .ag-spectrum-hue-background {\\n width: 100%;\\n height: 100%; }\\n .ag-color-panel .ag-spectrum-alpha-background {\\n background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0)), to(black));\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0), black);\\n width: 100%;\\n height: 100%; }\\n .ag-color-panel .ag-hue-alpha {\\n cursor: pointer; }\\n .ag-color-panel .ag-spectrum-slider {\\n position: absolute;\\n pointer-events: none; }\\n .ag-color-panel .ag-spectrum-text-value {\\n display: inline-block;\\n text-align: center;\\n overflow: hidden;\\n white-space: nowrap; }\\n .ag-color-panel .ag-spectrum-text-value:focus {\\n outline: none;\\n outline-offset: 0; }\\n .ag-color-panel .ag-recent-colors {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex; }\\n .ag-color-panel .ag-recent-colors > div {\\n cursor: pointer; }\\n\\n.ag-ltr .ag-toolpanel-indent-1 {\\n padding-left: 10px; }\\n\\n.ag-rtl .ag-toolpanel-indent-1 {\\n padding-right: 10px; }\\n\\n.ag-ltr .ag-row-group-indent-1 {\\n padding-left: 10px; }\\n\\n.ag-rtl .ag-row-group-indent-1 {\\n padding-right: 10px; }\\n\\n.ag-ltr .ag-toolpanel-indent-2 {\\n padding-left: 20px; }\\n\\n.ag-rtl .ag-toolpanel-indent-2 {\\n padding-right: 20px; }\\n\\n.ag-ltr .ag-row-group-indent-2 {\\n padding-left: 20px; }\\n\\n.ag-rtl .ag-row-group-indent-2 {\\n padding-right: 20px; }\\n\\n.ag-ltr .ag-toolpanel-indent-3 {\\n padding-left: 30px; }\\n\\n.ag-rtl .ag-toolpanel-indent-3 {\\n padding-right: 30px; }\\n\\n.ag-ltr .ag-row-group-indent-3 {\\n padding-left: 30px; }\\n\\n.ag-rtl .ag-row-group-indent-3 {\\n padding-right: 30px; }\\n\\n.ag-ltr .ag-toolpanel-indent-4 {\\n padding-left: 40px; }\\n\\n.ag-rtl .ag-toolpanel-indent-4 {\\n padding-right: 40px; }\\n\\n.ag-ltr .ag-row-group-indent-4 {\\n padding-left: 40px; }\\n\\n.ag-rtl .ag-row-group-indent-4 {\\n padding-right: 40px; }\\n\\n.ag-ltr .ag-toolpanel-indent-5 {\\n padding-left: 50px; }\\n\\n.ag-rtl .ag-toolpanel-indent-5 {\\n padding-right: 50px; }\\n\\n.ag-ltr .ag-row-group-indent-5 {\\n padding-left: 50px; }\\n\\n.ag-rtl .ag-row-group-indent-5 {\\n padding-right: 50px; }\\n\\n.ag-ltr .ag-toolpanel-indent-6 {\\n padding-left: 60px; }\\n\\n.ag-rtl .ag-toolpanel-indent-6 {\\n padding-right: 60px; }\\n\\n.ag-ltr .ag-row-group-indent-6 {\\n padding-left: 60px; }\\n\\n.ag-rtl .ag-row-group-indent-6 {\\n padding-right: 60px; }\\n\\n.ag-ltr .ag-toolpanel-indent-7 {\\n padding-left: 70px; }\\n\\n.ag-rtl .ag-toolpanel-indent-7 {\\n padding-right: 70px; }\\n\\n.ag-ltr .ag-row-group-indent-7 {\\n padding-left: 70px; }\\n\\n.ag-rtl .ag-row-group-indent-7 {\\n padding-right: 70px; }\\n\\n.ag-ltr .ag-toolpanel-indent-8 {\\n padding-left: 80px; }\\n\\n.ag-rtl .ag-toolpanel-indent-8 {\\n padding-right: 80px; }\\n\\n.ag-ltr .ag-row-group-indent-8 {\\n padding-left: 80px; }\\n\\n.ag-rtl .ag-row-group-indent-8 {\\n padding-right: 80px; }\\n\\n.ag-ltr .ag-toolpanel-indent-9 {\\n padding-left: 90px; }\\n\\n.ag-rtl .ag-toolpanel-indent-9 {\\n padding-right: 90px; }\\n\\n.ag-ltr .ag-row-group-indent-9 {\\n padding-left: 90px; }\\n\\n.ag-rtl .ag-row-group-indent-9 {\\n padding-right: 90px; }\\n\\n.ag-ltr .ag-toolpanel-indent-10 {\\n padding-left: 100px; }\\n\\n.ag-rtl .ag-toolpanel-indent-10 {\\n padding-right: 100px; }\\n\\n.ag-ltr .ag-row-group-indent-10 {\\n padding-left: 100px; }\\n\\n.ag-rtl .ag-row-group-indent-10 {\\n padding-right: 100px; }\\n\\n.ag-ltr .ag-toolpanel-indent-11 {\\n padding-left: 110px; }\\n\\n.ag-rtl .ag-toolpanel-indent-11 {\\n padding-right: 110px; }\\n\\n.ag-ltr .ag-row-group-indent-11 {\\n padding-left: 110px; }\\n\\n.ag-rtl .ag-row-group-indent-11 {\\n padding-right: 110px; }\\n\\n.ag-ltr .ag-toolpanel-indent-12 {\\n padding-left: 120px; }\\n\\n.ag-rtl .ag-toolpanel-indent-12 {\\n padding-right: 120px; }\\n\\n.ag-ltr .ag-row-group-indent-12 {\\n padding-left: 120px; }\\n\\n.ag-rtl .ag-row-group-indent-12 {\\n padding-right: 120px; }\\n\\n.ag-ltr .ag-toolpanel-indent-13 {\\n padding-left: 130px; }\\n\\n.ag-rtl .ag-toolpanel-indent-13 {\\n padding-right: 130px; }\\n\\n.ag-ltr .ag-row-group-indent-13 {\\n padding-left: 130px; }\\n\\n.ag-rtl .ag-row-group-indent-13 {\\n padding-right: 130px; }\\n\\n.ag-ltr .ag-toolpanel-indent-14 {\\n padding-left: 140px; }\\n\\n.ag-rtl .ag-toolpanel-indent-14 {\\n padding-right: 140px; }\\n\\n.ag-ltr .ag-row-group-indent-14 {\\n padding-left: 140px; }\\n\\n.ag-rtl .ag-row-group-indent-14 {\\n padding-right: 140px; }\\n\\n.ag-ltr .ag-toolpanel-indent-15 {\\n padding-left: 150px; }\\n\\n.ag-rtl .ag-toolpanel-indent-15 {\\n padding-right: 150px; }\\n\\n.ag-ltr .ag-row-group-indent-15 {\\n padding-left: 150px; }\\n\\n.ag-rtl .ag-row-group-indent-15 {\\n padding-right: 150px; }\\n\\n.ag-ltr .ag-toolpanel-indent-16 {\\n padding-left: 160px; }\\n\\n.ag-rtl .ag-toolpanel-indent-16 {\\n padding-right: 160px; }\\n\\n.ag-ltr .ag-row-group-indent-16 {\\n padding-left: 160px; }\\n\\n.ag-rtl .ag-row-group-indent-16 {\\n padding-right: 160px; }\\n\\n.ag-ltr .ag-toolpanel-indent-17 {\\n padding-left: 170px; }\\n\\n.ag-rtl .ag-toolpanel-indent-17 {\\n padding-right: 170px; }\\n\\n.ag-ltr .ag-row-group-indent-17 {\\n padding-left: 170px; }\\n\\n.ag-rtl .ag-row-group-indent-17 {\\n padding-right: 170px; }\\n\\n.ag-ltr .ag-toolpanel-indent-18 {\\n padding-left: 180px; }\\n\\n.ag-rtl .ag-toolpanel-indent-18 {\\n padding-right: 180px; }\\n\\n.ag-ltr .ag-row-group-indent-18 {\\n padding-left: 180px; }\\n\\n.ag-rtl .ag-row-group-indent-18 {\\n padding-right: 180px; }\\n\\n.ag-ltr .ag-toolpanel-indent-19 {\\n padding-left: 190px; }\\n\\n.ag-rtl .ag-toolpanel-indent-19 {\\n padding-right: 190px; }\\n\\n.ag-ltr .ag-row-group-indent-19 {\\n padding-left: 190px; }\\n\\n.ag-rtl .ag-row-group-indent-19 {\\n padding-right: 190px; }\\n\\n.ag-ltr .ag-toolpanel-indent-20 {\\n padding-left: 200px; }\\n\\n.ag-rtl .ag-toolpanel-indent-20 {\\n padding-right: 200px; }\\n\\n.ag-ltr .ag-row-group-indent-20 {\\n padding-left: 200px; }\\n\\n.ag-rtl .ag-row-group-indent-20 {\\n padding-right: 200px; }\\n\\n.ag-ltr .ag-toolpanel-indent-21 {\\n padding-left: 210px; }\\n\\n.ag-rtl .ag-toolpanel-indent-21 {\\n padding-right: 210px; }\\n\\n.ag-ltr .ag-row-group-indent-21 {\\n padding-left: 210px; }\\n\\n.ag-rtl .ag-row-group-indent-21 {\\n padding-right: 210px; }\\n\\n.ag-ltr .ag-toolpanel-indent-22 {\\n padding-left: 220px; }\\n\\n.ag-rtl .ag-toolpanel-indent-22 {\\n padding-right: 220px; }\\n\\n.ag-ltr .ag-row-group-indent-22 {\\n padding-left: 220px; }\\n\\n.ag-rtl .ag-row-group-indent-22 {\\n padding-right: 220px; }\\n\\n.ag-ltr .ag-toolpanel-indent-23 {\\n padding-left: 230px; }\\n\\n.ag-rtl .ag-toolpanel-indent-23 {\\n padding-right: 230px; }\\n\\n.ag-ltr .ag-row-group-indent-23 {\\n padding-left: 230px; }\\n\\n.ag-rtl .ag-row-group-indent-23 {\\n padding-right: 230px; }\\n\\n.ag-ltr .ag-toolpanel-indent-24 {\\n padding-left: 240px; }\\n\\n.ag-rtl .ag-toolpanel-indent-24 {\\n padding-right: 240px; }\\n\\n.ag-ltr .ag-row-group-indent-24 {\\n padding-left: 240px; }\\n\\n.ag-rtl .ag-row-group-indent-24 {\\n padding-right: 240px; }\\n\\n.ag-ltr .ag-toolpanel-indent-25 {\\n padding-left: 250px; }\\n\\n.ag-rtl .ag-toolpanel-indent-25 {\\n padding-right: 250px; }\\n\\n.ag-ltr .ag-row-group-indent-25 {\\n padding-left: 250px; }\\n\\n.ag-rtl .ag-row-group-indent-25 {\\n padding-right: 250px; }\\n\\n.ag-ltr .ag-toolpanel-indent-26 {\\n padding-left: 260px; }\\n\\n.ag-rtl .ag-toolpanel-indent-26 {\\n padding-right: 260px; }\\n\\n.ag-ltr .ag-row-group-indent-26 {\\n padding-left: 260px; }\\n\\n.ag-rtl .ag-row-group-indent-26 {\\n padding-right: 260px; }\\n\\n.ag-ltr .ag-toolpanel-indent-27 {\\n padding-left: 270px; }\\n\\n.ag-rtl .ag-toolpanel-indent-27 {\\n padding-right: 270px; }\\n\\n.ag-ltr .ag-row-group-indent-27 {\\n padding-left: 270px; }\\n\\n.ag-rtl .ag-row-group-indent-27 {\\n padding-right: 270px; }\\n\\n.ag-ltr .ag-toolpanel-indent-28 {\\n padding-left: 280px; }\\n\\n.ag-rtl .ag-toolpanel-indent-28 {\\n padding-right: 280px; }\\n\\n.ag-ltr .ag-row-group-indent-28 {\\n padding-left: 280px; }\\n\\n.ag-rtl .ag-row-group-indent-28 {\\n padding-right: 280px; }\\n\\n.ag-ltr .ag-toolpanel-indent-29 {\\n padding-left: 290px; }\\n\\n.ag-rtl .ag-toolpanel-indent-29 {\\n padding-right: 290px; }\\n\\n.ag-ltr .ag-row-group-indent-29 {\\n padding-left: 290px; }\\n\\n.ag-rtl .ag-row-group-indent-29 {\\n padding-right: 290px; }\\n\\n.ag-ltr .ag-toolpanel-indent-30 {\\n padding-left: 300px; }\\n\\n.ag-rtl .ag-toolpanel-indent-30 {\\n padding-right: 300px; }\\n\\n.ag-ltr .ag-row-group-indent-30 {\\n padding-left: 300px; }\\n\\n.ag-rtl .ag-row-group-indent-30 {\\n padding-right: 300px; }\\n\\n.ag-ltr .ag-toolpanel-indent-31 {\\n padding-left: 310px; }\\n\\n.ag-rtl .ag-toolpanel-indent-31 {\\n padding-right: 310px; }\\n\\n.ag-ltr .ag-row-group-indent-31 {\\n padding-left: 310px; }\\n\\n.ag-rtl .ag-row-group-indent-31 {\\n padding-right: 310px; }\\n\\n.ag-ltr .ag-toolpanel-indent-32 {\\n padding-left: 320px; }\\n\\n.ag-rtl .ag-toolpanel-indent-32 {\\n padding-right: 320px; }\\n\\n.ag-ltr .ag-row-group-indent-32 {\\n padding-left: 320px; }\\n\\n.ag-rtl .ag-row-group-indent-32 {\\n padding-right: 320px; }\\n\\n.ag-ltr .ag-toolpanel-indent-33 {\\n padding-left: 330px; }\\n\\n.ag-rtl .ag-toolpanel-indent-33 {\\n padding-right: 330px; }\\n\\n.ag-ltr .ag-row-group-indent-33 {\\n padding-left: 330px; }\\n\\n.ag-rtl .ag-row-group-indent-33 {\\n padding-right: 330px; }\\n\\n.ag-ltr .ag-toolpanel-indent-34 {\\n padding-left: 340px; }\\n\\n.ag-rtl .ag-toolpanel-indent-34 {\\n padding-right: 340px; }\\n\\n.ag-ltr .ag-row-group-indent-34 {\\n padding-left: 340px; }\\n\\n.ag-rtl .ag-row-group-indent-34 {\\n padding-right: 340px; }\\n\\n.ag-ltr .ag-toolpanel-indent-35 {\\n padding-left: 350px; }\\n\\n.ag-rtl .ag-toolpanel-indent-35 {\\n padding-right: 350px; }\\n\\n.ag-ltr .ag-row-group-indent-35 {\\n padding-left: 350px; }\\n\\n.ag-rtl .ag-row-group-indent-35 {\\n padding-right: 350px; }\\n\\n.ag-ltr .ag-toolpanel-indent-36 {\\n padding-left: 360px; }\\n\\n.ag-rtl .ag-toolpanel-indent-36 {\\n padding-right: 360px; }\\n\\n.ag-ltr .ag-row-group-indent-36 {\\n padding-left: 360px; }\\n\\n.ag-rtl .ag-row-group-indent-36 {\\n padding-right: 360px; }\\n\\n.ag-ltr .ag-toolpanel-indent-37 {\\n padding-left: 370px; }\\n\\n.ag-rtl .ag-toolpanel-indent-37 {\\n padding-right: 370px; }\\n\\n.ag-ltr .ag-row-group-indent-37 {\\n padding-left: 370px; }\\n\\n.ag-rtl .ag-row-group-indent-37 {\\n padding-right: 370px; }\\n\\n.ag-ltr .ag-toolpanel-indent-38 {\\n padding-left: 380px; }\\n\\n.ag-rtl .ag-toolpanel-indent-38 {\\n padding-right: 380px; }\\n\\n.ag-ltr .ag-row-group-indent-38 {\\n padding-left: 380px; }\\n\\n.ag-rtl .ag-row-group-indent-38 {\\n padding-right: 380px; }\\n\\n.ag-ltr .ag-toolpanel-indent-39 {\\n padding-left: 390px; }\\n\\n.ag-rtl .ag-toolpanel-indent-39 {\\n padding-right: 390px; }\\n\\n.ag-ltr .ag-row-group-indent-39 {\\n padding-left: 390px; }\\n\\n.ag-rtl .ag-row-group-indent-39 {\\n padding-right: 390px; }\\n\\n.ag-ltr .ag-toolpanel-indent-40 {\\n padding-left: 400px; }\\n\\n.ag-rtl .ag-toolpanel-indent-40 {\\n padding-right: 400px; }\\n\\n.ag-ltr .ag-row-group-indent-40 {\\n padding-left: 400px; }\\n\\n.ag-rtl .ag-row-group-indent-40 {\\n padding-right: 400px; }\\n\\n.ag-ltr .ag-toolpanel-indent-41 {\\n padding-left: 410px; }\\n\\n.ag-rtl .ag-toolpanel-indent-41 {\\n padding-right: 410px; }\\n\\n.ag-ltr .ag-row-group-indent-41 {\\n padding-left: 410px; }\\n\\n.ag-rtl .ag-row-group-indent-41 {\\n padding-right: 410px; }\\n\\n.ag-ltr .ag-toolpanel-indent-42 {\\n padding-left: 420px; }\\n\\n.ag-rtl .ag-toolpanel-indent-42 {\\n padding-right: 420px; }\\n\\n.ag-ltr .ag-row-group-indent-42 {\\n padding-left: 420px; }\\n\\n.ag-rtl .ag-row-group-indent-42 {\\n padding-right: 420px; }\\n\\n.ag-ltr .ag-toolpanel-indent-43 {\\n padding-left: 430px; }\\n\\n.ag-rtl .ag-toolpanel-indent-43 {\\n padding-right: 430px; }\\n\\n.ag-ltr .ag-row-group-indent-43 {\\n padding-left: 430px; }\\n\\n.ag-rtl .ag-row-group-indent-43 {\\n padding-right: 430px; }\\n\\n.ag-ltr .ag-toolpanel-indent-44 {\\n padding-left: 440px; }\\n\\n.ag-rtl .ag-toolpanel-indent-44 {\\n padding-right: 440px; }\\n\\n.ag-ltr .ag-row-group-indent-44 {\\n padding-left: 440px; }\\n\\n.ag-rtl .ag-row-group-indent-44 {\\n padding-right: 440px; }\\n\\n.ag-ltr .ag-toolpanel-indent-45 {\\n padding-left: 450px; }\\n\\n.ag-rtl .ag-toolpanel-indent-45 {\\n padding-right: 450px; }\\n\\n.ag-ltr .ag-row-group-indent-45 {\\n padding-left: 450px; }\\n\\n.ag-rtl .ag-row-group-indent-45 {\\n padding-right: 450px; }\\n\\n.ag-ltr .ag-toolpanel-indent-46 {\\n padding-left: 460px; }\\n\\n.ag-rtl .ag-toolpanel-indent-46 {\\n padding-right: 460px; }\\n\\n.ag-ltr .ag-row-group-indent-46 {\\n padding-left: 460px; }\\n\\n.ag-rtl .ag-row-group-indent-46 {\\n padding-right: 460px; }\\n\\n.ag-ltr .ag-toolpanel-indent-47 {\\n padding-left: 470px; }\\n\\n.ag-rtl .ag-toolpanel-indent-47 {\\n padding-right: 470px; }\\n\\n.ag-ltr .ag-row-group-indent-47 {\\n padding-left: 470px; }\\n\\n.ag-rtl .ag-row-group-indent-47 {\\n padding-right: 470px; }\\n\\n.ag-ltr .ag-toolpanel-indent-48 {\\n padding-left: 480px; }\\n\\n.ag-rtl .ag-toolpanel-indent-48 {\\n padding-right: 480px; }\\n\\n.ag-ltr .ag-row-group-indent-48 {\\n padding-left: 480px; }\\n\\n.ag-rtl .ag-row-group-indent-48 {\\n padding-right: 480px; }\\n\\n.ag-ltr .ag-toolpanel-indent-49 {\\n padding-left: 490px; }\\n\\n.ag-rtl .ag-toolpanel-indent-49 {\\n padding-right: 490px; }\\n\\n.ag-ltr .ag-row-group-indent-49 {\\n padding-left: 490px; }\\n\\n.ag-rtl .ag-row-group-indent-49 {\\n padding-right: 490px; }\\n\\n.ag-ltr {\\n direction: ltr; }\\n .ag-ltr .ag-body, .ag-ltr .ag-floating-top, .ag-ltr .ag-floating-bottom, .ag-ltr .ag-header, .ag-ltr .ag-body-viewport, .ag-ltr .ag-body-horizontal-scroll {\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: row;\\n flex-direction: row; }\\n .ag-ltr .ag-header-cell-resize {\\n right: -4px; }\\n .ag-ltr .ag-pinned-right-header .ag-header-cell-resize {\\n left: -4px; }\\n\\n.ag-rtl {\\n direction: rtl; }\\n .ag-rtl .ag-body, .ag-rtl .ag-floating-top, .ag-rtl .ag-floating-bottom, .ag-rtl .ag-header, .ag-rtl .ag-body-viewport, .ag-rtl .ag-body-horizontal-scroll {\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: reverse;\\n -ms-flex-direction: row-reverse;\\n flex-direction: row-reverse; }\\n .ag-rtl .ag-header-cell-resize {\\n left: -4px; }\\n .ag-rtl .ag-pinned-left-header .ag-header-cell-resize {\\n right: -4px; }\\n .ag-rtl .ag-group-component .ag-column-group-icons .ag-column-group-closed-icon {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg); }\\n .ag-rtl .ag-filter-toolpanel-instance .ag-filter-toolpanel-header .ag-icon-tree-closed {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg); }\\n .ag-rtl .ag-primary-cols-header-panel .ag-icon-tree-closed,\\n .ag-rtl .ag-filter-toolpanel-header.ag-filter-header .ag-icon-tree-closed {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg); }\\n .ag-rtl .ag-header-group-cell .ag-header-icon.ag-header-expand-icon-expanded,\\n .ag-rtl .ag-header-group-cell .ag-header-icon.ag-header-expand-icon-collapsed,\\n .ag-rtl .ag-cell-wrapper .ag-group-contracted {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg); }\\n\\n@media print {\\n .ag-body-viewport {\\n display: block; }\\n .ag-row {\\n page-break-inside: avoid; } }\\n\\n.ag-body .ag-pinned-left-cols-viewport, .ag-body .ag-body-viewport, .ag-body .ag-pinned-right-cols-viewport {\\n -webkit-overflow-scrolling: touch; }\\n\\n.ag-chart {\\n position: relative;\\n display: flex;\\n overflow: hidden;\\n width: 100%;\\n height: 100%; }\\n .ag-chart .ag-chart-components-wrapper {\\n position: relative;\\n display: flex;\\n flex: 1 1 auto;\\n overflow: hidden; }\\n .ag-chart .ag-chart-components-wrapper .ag-chart-canvas-wrapper {\\n position: relative;\\n flex: 1 1 auto;\\n overflow: hidden; }\\n .ag-chart .ag-chart-components-wrapper .ag-chart-canvas-wrapper canvas {\\n display: block; }\\n .ag-chart .ag-chart-components-wrapper .ag-chart-menu {\\n position: absolute;\\n top: 10px;\\n right: 20px;\\n width: 24px;\\n overflow: hidden;\\n display: flex;\\n flex-direction: column; }\\n .ag-chart:not(.ag-has-menu):hover .ag-chart-menu {\\n opacity: 1;\\n pointer-events: all; }\\n .ag-chart .ag-chart-docked-container {\\n position: relative;\\n width: 0;\\n min-width: 0;\\n transition: min-width 0.4s; }\\n .ag-chart .ag-chart-docked-container .ag-panel {\\n border-width: 0 0 0 1px; }\\n\\n.ag-chart-tabbed-menu > div {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n overflow: hidden; }\\n\\n.ag-chart-tabbed-menu .ag-tab-header {\\n flex: none;\\n user-select: none;\\n cursor: default; }\\n\\n.ag-chart-tabbed-menu .ag-tab-body {\\n display: flex;\\n flex: 1 1 auto;\\n align-items: stretch;\\n overflow: hidden; }\\n .ag-chart-tabbed-menu .ag-tab-body > div {\\n width: 100%;\\n overflow: hidden;\\n overflow-y: auto; }\\n\\n.ag-chart-tabbed-menu .ag-chart-settings {\\n overflow-x: hidden; }\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-wrapper {\\n position: relative;\\n flex-direction: column;\\n width: 100%;\\n height: 100%;\\n display: flex;\\n overflow: hidden; }\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-wrapper .ag-chart-settings-nav-bar {\\n width: 100%;\\n display: flex;\\n height: 30px;\\n align-items: center; }\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-wrapper .ag-chart-settings-nav-bar .ag-nav-card-selector {\\n display: flex;\\n align-items: center;\\n justify-content: space-around;\\n flex: 1 1 auto;\\n height: 100%; }\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-wrapper .ag-chart-settings-nav-bar .ag-nav-card-selector .ag-nav-card-item {\\n opacity: 0.2; }\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-wrapper .ag-chart-settings-nav-bar .ag-nav-card-selector .ag-nav-card-item.ag-selected {\\n opacity: 1; }\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-wrapper .ag-chart-settings-nav-bar .ag-chart-settings-prev-btn,\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-wrapper .ag-chart-settings-nav-bar .ag-chart-settings-next-btn {\\n position: relative;\\n flex: none; }\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-wrapper .ag-chart-settings-nav-bar .ag-chart-settings-prev-btn button,\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-wrapper .ag-chart-settings-nav-bar .ag-chart-settings-next-btn button {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n cursor: pointer;\\n opacity: 0; }\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-wrapper .ag-chart-settings-mini-charts-container {\\n position: relative;\\n flex: 1 1 auto;\\n overflow-x: hidden;\\n overflow-y: auto; }\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-wrapper .ag-chart-settings-mini-charts-container .ag-chart-settings-mini-wrapper {\\n position: absolute;\\n top: 0;\\n left: 0;\\n display: flex;\\n flex-direction: column;\\n width: 100%;\\n min-height: 100%;\\n overflow: hidden; }\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-wrapper .ag-chart-settings-mini-charts-container .ag-chart-settings-mini-wrapper .ag-group-component {\\n flex: none; }\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-wrapper .ag-chart-settings-mini-charts-container .ag-chart-settings-mini-wrapper .ag-group-component-container {\\n flex-direction: row;\\n flex-wrap: wrap; }\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-wrapper .ag-chart-settings-mini-charts-container .ag-chart-settings-mini-wrapper .ag-group-component-container .ag-chart-mini-thumbnail {\\n flex: none; }\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-wrapper .ag-chart-settings-mini-charts-container .ag-chart-settings-mini-wrapper.ag-animating, .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-wrapper .ag-chart-settings-mini-charts-container .ag-chart-settings-mini-wrapper.ag-animating {\\n transition: left 0.3s;\\n transition-timing-function: ease-in-out; }\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-wrapper .ag-chart-settings-mini-charts-container .ag-chart-settings-mini-wrapper .ag-chart-mini-thumbnail {\\n cursor: pointer; }\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-wrapper .ag-chart-settings-mini-charts-container .ag-chart-settings-mini-wrapper .ag-chart-mini-thumbnail canvas {\\n display: block; }\\n\\n.ag-chart-tabbed-menu .ag-chart-data-wrapper,\\n.ag-chart-tabbed-menu .ag-chart-format-wrapper {\\n display: flex;\\n flex-direction: column;\\n position: relative;\\n user-select: none; }\\n .ag-chart-tabbed-menu .ag-chart-data-wrapper > div,\\n .ag-chart-tabbed-menu .ag-chart-format-wrapper > div {\\n display: flex;\\n margin: 0;\\n padding-bottom: 2px; }\\n .ag-chart-tabbed-menu .ag-chart-data-wrapper > div:not(:first-child),\\n .ag-chart-tabbed-menu .ag-chart-format-wrapper > div:not(:first-child) {\\n margin-top: 0; }\\n\\n.ag-chart-tabbed-menu .ag-chart-format-wrapper {\\n overflow-x: hidden; }\\n .ag-chart-tabbed-menu .ag-chart-format-wrapper .ag-group-component .ag-group-subgroup {\\n justify-content: space-between; }\\n\\n.ag-chart .ag-chart-canvas-wrapper.ag-chart-empty > canvas {\\n visibility: hidden; }\\n\\n.ag-chart .ag-chart-canvas-wrapper.ag-chart-empty .ag-chart-empty-text {\\n display: flex; }\\n\\n.ag-chart .ag-chart-empty-text {\\n display: none;\\n position: absolute;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n align-items: center;\\n justify-content: center; }\\n\\n.ag-chart .ag-chart-menu {\\n opacity: 0;\\n pointer-events: none; }\\n .ag-chart .ag-chart-menu > span {\\n opacity: 0.5;\\n line-height: 24px;\\n font-size: 24px;\\n width: 24px;\\n height: 24px;\\n margin: 2px 0;\\n cursor: pointer; }\\n .ag-chart .ag-chart-menu > span:hover {\\n border-radius: 5px; }\\n\\n.ag-chart .ag-chart-docked-container {\\n min-width: 0;\\n width: 0; }\\n\\n.ag-chart-tabbed-menu .ag-tab-body {\\n padding: 0; }\\n\\n.ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-nav-bar {\\n padding: 0 10px;\\n user-select: none; }\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-nav-bar .ag-nav-card-selector {\\n padding: 0 10px; }\\n .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-nav-bar .ag-nav-card-selector .ag-nav-card-item {\\n cursor: pointer; }\\n\\n\", \"\"]);\n","\nvar content = require(\"!!../../../../css-loader/dist/cjs.js!./ag-theme-material.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../css-loader/dist/cjs.js!./ag-theme-material.css\", function() {\n\t\tvar newContent = require(\"!!../../../../css-loader/dist/cjs.js!./ag-theme-material.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"@charset \\\"UTF-8\\\";\\n@font-face {\\n font-family: \\\"agGridMaterial\\\";\\n src: url(\\\"data:application/font-woff;charset=utf-8;base64,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\\\") format(\\\"woff\\\"), url(\\\"data:application/x-font-ttf;charset=utf-8;base64,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IGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAGEAZwBHAHIAaQBkAE0AYQB0AGUAcgBpAGEAbABSAGUAZwB1AGwAYQByAGEAZwBHAHIAaQBkAE0AYQB0AGUAcgBpAGEAbABhAGcARwByAGkAZABNAGEAdABlAHIAaQBhAGwAVgBlAHIAcwBpAG8AbgAgADEALgAwAGEAZwBHAHIAaQBkAE0AYQB0AGUAcgBpAGEAbABHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAACAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE4BAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8AC2FnZ3JlZ2F0aW9uBmFycm93cwNhc2MGY2FuY2VsCGNhbmNlbC0xBWNoYXJ0EGNoZWNrYm94LWNoZWNrZWQWY2hlY2tib3gtaW5kZXRlcm1pbmF0ZRJjaGVja2JveC11bmNoZWNrZWQMY29sb3ItcGlja2VyBmNvbHVtbgdjb2x1bW5zCmNvbnRyYWN0ZWQEY29weQVjcm9zcwNjdXQEZGF0YQRkZXNjCGV4cGFuZGVkCWV5ZS1zbGFzaANleWUGZmlsdGVyBWZpcnN0BGdyaXAFZ3JvdXANaW5kZXRlcm1pbmF0ZQRsYXN0BGxlZnQGbGlua2VkB2xvYWRpbmcIbWF4aW1pemUEbWVudQhtaW5pbWl6ZQVtaW51cwRub25lC25vdC1hbGxvd2VkBXBhc3RlA3BpbgVwaW4tMQVwaXZvdARwbHVzEHJhZGlvLWJ1dHRvbi1vZmYPcmFkaW8tYnV0dG9uLW9uBXJpZ2h0BHNhdmUKc21hbGwtZG93bgpzbWFsbC1sZWZ0C3NtYWxsLXJpZ2h0CHNtYWxsLXVwBHRpY2sJdHJlZS1vcGVuCHVubGlua2VkAWEBZwFyAWUBdAFpAW8BbgF3AXMBYwFsAWgBawFiAXgBLQFkAW0BdQFwAXkBZgF6AXYAAAAAAA==\\\") format(\\\"truetype\\\");\\n font-weight: normal;\\n font-style: normal; }\\n\\n.ag-theme-material {\\n -webkit-font-smoothing: antialiased;\\n background-color: #fff;\\n color: rgba(0, 0, 0, 0.87);\\n font-family: \\\"Roboto\\\", sans-serif;\\n font-weight: 400;\\n font-size: 13px;\\n line-height: normal; }\\n .ag-theme-material .ag-tab-header .ag-tab.ag-tab-selected {\\n border-bottom: 2px solid #3f51b5; }\\n .ag-theme-material label {\\n margin-bottom: 0; }\\n .ag-theme-material * {\\n box-sizing: border-box; }\\n .ag-theme-material *:focus,\\n .ag-theme-material * *:before,\\n .ag-theme-material * *:after {\\n outline: none;\\n box-sizing: border-box; }\\n .ag-theme-material .ag-tab {\\n box-sizing: content-box; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-1 {\\n padding-left: 26px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-1 {\\n padding-right: 26px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-1 {\\n padding-left: 42px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-1 {\\n padding-right: 42px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-2 {\\n padding-left: 52px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-2 {\\n padding-right: 52px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-2 {\\n padding-left: 84px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-2 {\\n padding-right: 84px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-3 {\\n padding-left: 78px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-3 {\\n padding-right: 78px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-3 {\\n padding-left: 126px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-3 {\\n padding-right: 126px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-4 {\\n padding-left: 104px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-4 {\\n padding-right: 104px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-4 {\\n padding-left: 168px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-4 {\\n padding-right: 168px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-5 {\\n padding-left: 130px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-5 {\\n padding-right: 130px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-5 {\\n padding-left: 210px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-5 {\\n padding-right: 210px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-6 {\\n padding-left: 156px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-6 {\\n padding-right: 156px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-6 {\\n padding-left: 252px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-6 {\\n padding-right: 252px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-7 {\\n padding-left: 182px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-7 {\\n padding-right: 182px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-7 {\\n padding-left: 294px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-7 {\\n padding-right: 294px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-8 {\\n padding-left: 208px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-8 {\\n padding-right: 208px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-8 {\\n padding-left: 336px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-8 {\\n padding-right: 336px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-9 {\\n padding-left: 234px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-9 {\\n padding-right: 234px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-9 {\\n padding-left: 378px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-9 {\\n padding-right: 378px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-10 {\\n padding-left: 260px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-10 {\\n padding-right: 260px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-10 {\\n padding-left: 420px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-10 {\\n padding-right: 420px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-11 {\\n padding-left: 286px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-11 {\\n padding-right: 286px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-11 {\\n padding-left: 462px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-11 {\\n padding-right: 462px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-12 {\\n padding-left: 312px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-12 {\\n padding-right: 312px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-12 {\\n padding-left: 504px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-12 {\\n padding-right: 504px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-13 {\\n padding-left: 338px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-13 {\\n padding-right: 338px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-13 {\\n padding-left: 546px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-13 {\\n padding-right: 546px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-14 {\\n padding-left: 364px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-14 {\\n padding-right: 364px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-14 {\\n padding-left: 588px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-14 {\\n padding-right: 588px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-15 {\\n padding-left: 390px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-15 {\\n padding-right: 390px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-15 {\\n padding-left: 630px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-15 {\\n padding-right: 630px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-16 {\\n padding-left: 416px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-16 {\\n padding-right: 416px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-16 {\\n padding-left: 672px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-16 {\\n padding-right: 672px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-17 {\\n padding-left: 442px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-17 {\\n padding-right: 442px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-17 {\\n padding-left: 714px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-17 {\\n padding-right: 714px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-18 {\\n padding-left: 468px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-18 {\\n padding-right: 468px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-18 {\\n padding-left: 756px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-18 {\\n padding-right: 756px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-19 {\\n padding-left: 494px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-19 {\\n padding-right: 494px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-19 {\\n padding-left: 798px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-19 {\\n padding-right: 798px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-20 {\\n padding-left: 520px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-20 {\\n padding-right: 520px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-20 {\\n padding-left: 840px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-20 {\\n padding-right: 840px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-21 {\\n padding-left: 546px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-21 {\\n padding-right: 546px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-21 {\\n padding-left: 882px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-21 {\\n padding-right: 882px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-22 {\\n padding-left: 572px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-22 {\\n padding-right: 572px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-22 {\\n padding-left: 924px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-22 {\\n padding-right: 924px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-23 {\\n padding-left: 598px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-23 {\\n padding-right: 598px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-23 {\\n padding-left: 966px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-23 {\\n padding-right: 966px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-24 {\\n padding-left: 624px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-24 {\\n padding-right: 624px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-24 {\\n padding-left: 1008px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-24 {\\n padding-right: 1008px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-25 {\\n padding-left: 650px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-25 {\\n padding-right: 650px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-25 {\\n padding-left: 1050px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-25 {\\n padding-right: 1050px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-26 {\\n padding-left: 676px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-26 {\\n padding-right: 676px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-26 {\\n padding-left: 1092px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-26 {\\n padding-right: 1092px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-27 {\\n padding-left: 702px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-27 {\\n padding-right: 702px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-27 {\\n padding-left: 1134px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-27 {\\n padding-right: 1134px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-28 {\\n padding-left: 728px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-28 {\\n padding-right: 728px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-28 {\\n padding-left: 1176px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-28 {\\n padding-right: 1176px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-29 {\\n padding-left: 754px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-29 {\\n padding-right: 754px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-29 {\\n padding-left: 1218px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-29 {\\n padding-right: 1218px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-30 {\\n padding-left: 780px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-30 {\\n padding-right: 780px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-30 {\\n padding-left: 1260px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-30 {\\n padding-right: 1260px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-31 {\\n padding-left: 806px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-31 {\\n padding-right: 806px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-31 {\\n padding-left: 1302px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-31 {\\n padding-right: 1302px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-32 {\\n padding-left: 832px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-32 {\\n padding-right: 832px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-32 {\\n padding-left: 1344px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-32 {\\n padding-right: 1344px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-33 {\\n padding-left: 858px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-33 {\\n padding-right: 858px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-33 {\\n padding-left: 1386px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-33 {\\n padding-right: 1386px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-34 {\\n padding-left: 884px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-34 {\\n padding-right: 884px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-34 {\\n padding-left: 1428px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-34 {\\n padding-right: 1428px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-35 {\\n padding-left: 910px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-35 {\\n padding-right: 910px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-35 {\\n padding-left: 1470px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-35 {\\n padding-right: 1470px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-36 {\\n padding-left: 936px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-36 {\\n padding-right: 936px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-36 {\\n padding-left: 1512px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-36 {\\n padding-right: 1512px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-37 {\\n padding-left: 962px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-37 {\\n padding-right: 962px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-37 {\\n padding-left: 1554px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-37 {\\n padding-right: 1554px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-38 {\\n padding-left: 988px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-38 {\\n padding-right: 988px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-38 {\\n padding-left: 1596px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-38 {\\n padding-right: 1596px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-39 {\\n padding-left: 1014px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-39 {\\n padding-right: 1014px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-39 {\\n padding-left: 1638px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-39 {\\n padding-right: 1638px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-40 {\\n padding-left: 1040px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-40 {\\n padding-right: 1040px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-40 {\\n padding-left: 1680px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-40 {\\n padding-right: 1680px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-41 {\\n padding-left: 1066px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-41 {\\n padding-right: 1066px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-41 {\\n padding-left: 1722px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-41 {\\n padding-right: 1722px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-42 {\\n padding-left: 1092px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-42 {\\n padding-right: 1092px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-42 {\\n padding-left: 1764px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-42 {\\n padding-right: 1764px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-43 {\\n padding-left: 1118px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-43 {\\n padding-right: 1118px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-43 {\\n padding-left: 1806px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-43 {\\n padding-right: 1806px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-44 {\\n padding-left: 1144px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-44 {\\n padding-right: 1144px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-44 {\\n padding-left: 1848px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-44 {\\n padding-right: 1848px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-45 {\\n padding-left: 1170px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-45 {\\n padding-right: 1170px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-45 {\\n padding-left: 1890px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-45 {\\n padding-right: 1890px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-46 {\\n padding-left: 1196px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-46 {\\n padding-right: 1196px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-46 {\\n padding-left: 1932px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-46 {\\n padding-right: 1932px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-47 {\\n padding-left: 1222px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-47 {\\n padding-right: 1222px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-47 {\\n padding-left: 1974px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-47 {\\n padding-right: 1974px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-48 {\\n padding-left: 1248px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-48 {\\n padding-right: 1248px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-48 {\\n padding-left: 2016px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-48 {\\n padding-right: 2016px; }\\n .ag-theme-material .ag-ltr .ag-toolpanel-indent-49 {\\n padding-left: 1274px; }\\n .ag-theme-material .ag-rtl .ag-toolpanel-indent-49 {\\n padding-right: 1274px; }\\n .ag-theme-material .ag-ltr .ag-row-group-indent-49 {\\n padding-left: 2058px; }\\n .ag-theme-material .ag-rtl .ag-row-group-indent-49 {\\n padding-right: 2058px; }\\n .ag-theme-material .ag-cell .ag-icon {\\n display: inline-block;\\n vertical-align: middle; }\\n .ag-theme-material .ag-checkbox,\\n .ag-theme-material .ag-radio-button,\\n .ag-theme-material .ag-toggle-button {\\n display: flex;\\n align-items: center;\\n cursor: default; }\\n .ag-theme-material .ag-checkbox label,\\n .ag-theme-material .ag-radio-button label,\\n .ag-theme-material .ag-toggle-button label {\\n cursor: default; }\\n .ag-theme-material .ag-checkbox label:empty,\\n .ag-theme-material .ag-radio-button label:empty,\\n .ag-theme-material .ag-toggle-button label:empty {\\n margin: 0; }\\n .ag-theme-material .ag-checkbox:not(.ag-label-align-left) label,\\n .ag-theme-material .ag-radio-button:not(.ag-label-align-left) label,\\n .ag-theme-material .ag-toggle-button:not(.ag-label-align-left) label {\\n margin-left: 8px; }\\n .ag-theme-material .ag-cell {\\n -webkit-font-smoothing: subpixel-antialiased; }\\n .ag-theme-material .ag-ltr .ag-row-group-leaf-indent {\\n margin-left: 42px; }\\n .ag-theme-material .ag-ltr .ag-cell {\\n border-right: 1px solid transparent; }\\n .ag-theme-material .ag-ltr .ag-cell:not(.ag-cell-focus).ag-cell-first-right-pinned:not(.ag-cell-range-left),\\n .ag-theme-material .ag-ltr .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-first-right-pinned:not(.ag-cell-range-left),\\n .ag-theme-material .ag-ltr .ag-root:not(.ag-has-focus) .ag-cell.ag-cell-first-right-pinned:not(.ag-cell-range-left) {\\n border-left: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-ltr .ag-cell:not(.ag-cell-focus).ag-cell-last-left-pinned:not(.ag-cell-range-right),\\n .ag-theme-material .ag-ltr .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-last-left-pinned:not(.ag-cell-range-right),\\n .ag-theme-material .ag-ltr .ag-root:not(.ag-has-focus) .ag-cell.ag-cell-last-left-pinned:not(.ag-cell-range-right) {\\n border-right: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-value-change-delta {\\n padding-right: 2px; }\\n .ag-theme-material .ag-value-change-delta-up {\\n color: #43a047; }\\n .ag-theme-material .ag-value-change-delta-down {\\n color: #e53935; }\\n .ag-theme-material .ag-value-change-value {\\n background-color: transparent;\\n border-radius: 1px;\\n padding-left: 1px;\\n padding-right: 1px;\\n transition: background-color 1s; }\\n .ag-theme-material .ag-value-change-value-highlight {\\n background-color: #00acc1;\\n transition: background-color 0.1s; }\\n .ag-theme-material .ag-input-wrapper input:not([type]),\\n .ag-theme-material .ag-input-wrapper input[type='text'],\\n .ag-theme-material .ag-input-wrapper input[type='number'],\\n .ag-theme-material .ag-input-wrapper input[type='tel'],\\n .ag-theme-material .ag-input-wrapper input[type='date'],\\n .ag-theme-material .ag-input-wrapper input[type='datetime-local'] {\\n background: transparent;\\n color: rgba(0, 0, 0, 0.87);\\n font-family: inherit;\\n font-size: inherit;\\n height: 40px;\\n padding-bottom: 8px;\\n border-width: 0;\\n border-bottom: 2px solid #e2e2e2; }\\n .ag-theme-material .ag-input-wrapper input:not([type]):focus,\\n .ag-theme-material .ag-input-wrapper input[type='text']:focus,\\n .ag-theme-material .ag-input-wrapper input[type='number']:focus,\\n .ag-theme-material .ag-input-wrapper input[type='tel']:focus,\\n .ag-theme-material .ag-input-wrapper input[type='date']:focus,\\n .ag-theme-material .ag-input-wrapper input[type='datetime-local']:focus {\\n border-bottom: 2px solid #3f51b5;\\n outline: none; }\\n .ag-theme-material .ag-input-wrapper input:not([type])::placeholder,\\n .ag-theme-material .ag-input-wrapper input[type='text']::placeholder,\\n .ag-theme-material .ag-input-wrapper input[type='number']::placeholder,\\n .ag-theme-material .ag-input-wrapper input[type='tel']::placeholder,\\n .ag-theme-material .ag-input-wrapper input[type='date']::placeholder,\\n .ag-theme-material .ag-input-wrapper input[type='datetime-local']::placeholder {\\n color: rgba(0, 0, 0, 0.38); }\\n .ag-theme-material .ag-input-wrapper input:not([type]):disabled,\\n .ag-theme-material .ag-input-wrapper input[type='text']:disabled,\\n .ag-theme-material .ag-input-wrapper input[type='number']:disabled,\\n .ag-theme-material .ag-input-wrapper input[type='tel']:disabled,\\n .ag-theme-material .ag-input-wrapper input[type='date']:disabled,\\n .ag-theme-material .ag-input-wrapper input[type='datetime-local']:disabled {\\n border-bottom: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-input-wrapper input:not([type]):disabled,\\n .ag-theme-material .ag-input-wrapper input[type='text']:disabled,\\n .ag-theme-material .ag-input-wrapper input[type='number']:disabled,\\n .ag-theme-material .ag-input-wrapper input[type='tel']:disabled,\\n .ag-theme-material .ag-input-wrapper input[type='date']:disabled,\\n .ag-theme-material .ag-input-wrapper input[type='datetime-local']:disabled {\\n color: rgba(0, 0, 0, 0.38); }\\n .ag-theme-material .ag-input-wrapper input[type='date'] {\\n flex: 1 1 auto; }\\n .ag-theme-material .ag-input-wrapper input[type='range'] {\\n padding: 0; }\\n .ag-theme-material .ag-input-wrapper textarea {\\n background: transparent;\\n color: rgba(0, 0, 0, 0.87);\\n font-family: inherit;\\n font-size: inherit;\\n height: 40px;\\n padding-bottom: 8px;\\n border-width: 0;\\n border-bottom: 2px solid #e2e2e2; }\\n .ag-theme-material .ag-input-wrapper textarea:focus {\\n border-bottom: 2px solid #3f51b5;\\n outline: none; }\\n .ag-theme-material .ag-input-wrapper textarea::placeholder {\\n color: rgba(0, 0, 0, 0.38); }\\n .ag-theme-material .ag-input-wrapper textarea:disabled {\\n border-bottom: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-input-wrapper textarea:disabled {\\n color: rgba(0, 0, 0, 0.38); }\\n .ag-theme-material .ag-header {\\n background-color: #fff;\\n color: rgba(0, 0, 0, 0.54);\\n font-weight: 700;\\n font-size: 12px;\\n font-family: \\\"Roboto\\\", sans-serif;\\n border-bottom: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-pinned-right-header {\\n border-left: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-pinned-left-header {\\n border-right: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-header-row {\\n border: none;\\n height: 56px; }\\n .ag-theme-material .ag-row {\\n border-style: solid;\\n border-color: #e2e2e2;\\n height: 48px;\\n border-width: 0; }\\n .ag-theme-material .ag-row:not(.ag-row-first) {\\n border-width: 1px 0 0; }\\n .ag-theme-material .ag-row.ag-row-last {\\n border-bottom-width: 1px; }\\n .ag-theme-material .ag-horizontal-left-spacer {\\n border-right: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-horizontal-left-spacer.ag-scroller-corner {\\n border-right: none; }\\n .ag-theme-material .ag-horizontal-right-spacer {\\n border-left: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-horizontal-right-spacer.ag-scroller-corner {\\n border-left: none; }\\n .ag-theme-material .ag-row-hover {\\n background-color: #fafafa; }\\n .ag-theme-material .ag-numeric-cell {\\n text-align: right; }\\n .ag-theme-material .ag-header-cell-label .ag-header-icon {\\n margin-left: 8px;\\n opacity: 0.87; }\\n .ag-theme-material .ag-header-cell,\\n .ag-theme-material .ag-header-group-cell {\\n border-style: solid;\\n border-color: #e2e2e2;\\n padding-left: 24px;\\n padding-right: 24px;\\n border-width: 0; }\\n .ag-theme-material .ag-header-cell.ag-header-cell-moving,\\n .ag-theme-material .ag-header-group-cell.ag-header-cell-moving {\\n background-color: #f2f2f2; }\\n .ag-theme-material .ag-header-cell:not(.ag-header-group-cell-no-group),\\n .ag-theme-material .ag-header-group-cell:not(.ag-header-group-cell-no-group) {\\n border-top-width: 1px; }\\n .ag-theme-material .ag-header-row:first-child .ag-header-cell,\\n .ag-theme-material .ag-header-row:first-child .ag-header-group-cell {\\n border-top-width: 0; }\\n .ag-theme-material .ag-header-group-cell:not(.ag-column-resizing) + .ag-header-group-cell:hover, .ag-theme-material .ag-header-group-cell:not(.ag-column-resizing) + .ag-header-group-cell.ag-column-resizing,\\n .ag-theme-material .ag-header-cell:not(.ag-column-resizing) + .ag-header-cell:hover,\\n .ag-theme-material .ag-header-cell:not(.ag-column-resizing) + .ag-header-cell.ag-column-resizing,\\n .ag-theme-material .ag-header-group-cell:first-of-type:hover,\\n .ag-theme-material .ag-header-group-cell:first-of-type.ag-column-resizing,\\n .ag-theme-material .ag-header-cell:first-of-type:hover,\\n .ag-theme-material .ag-header-cell:first-of-type.ag-column-resizing {\\n background-color: #f2f2f2; }\\n .ag-theme-material .ag-header-cell-resize {\\n cursor: col-resize; }\\n .ag-theme-material .ag-header-select-all {\\n margin-right: 24px; }\\n .ag-theme-material .ag-cell {\\n line-height: 46px;\\n padding-left: 24px;\\n padding-right: 24px;\\n border: 1px solid transparent;\\n padding-left: 23px;\\n padding-right: 23px; }\\n .ag-theme-material .ag-row-drag {\\n cursor: move;\\n cursor: grab;\\n min-width: 42px; }\\n .ag-theme-material .ag-row-dragging,\\n .ag-theme-material .ag-row-dragging .ag-row-drag {\\n cursor: move; }\\n .ag-theme-material .ag-column-drag {\\n cursor: move;\\n cursor: grab; }\\n .ag-theme-material .ag-row-dragging {\\n opacity: 0.5; }\\n .ag-theme-material .ag-ltr .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\\n .ag-theme-material .ag-ltr .ag-has-focus .ag-cell-focus.ag-cell-range-single-cell,\\n .ag-theme-material .ag-ltr .ag-cell-focus.ag-cell-range-single-cell.ag-cell-range-handle,\\n .ag-theme-material .ag-rtl .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\\n .ag-theme-material .ag-rtl .ag-has-focus .ag-cell-focus.ag-cell-range-single-cell,\\n .ag-theme-material .ag-rtl .ag-cell-focus.ag-cell-range-single-cell.ag-cell-range-handle {\\n border: 1px solid #3f51b5;\\n outline: initial; }\\n .ag-theme-material .ag-header-cell-resize {\\n width: 16px; }\\n .ag-theme-material .ag-menu {\\n background: #fff;\\n border-radius: 2px;\\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\\n padding: 8px;\\n padding: 0; }\\n .ag-theme-material .ag-menu .ag-menu-list {\\n cursor: default;\\n margin-bottom: 8px;\\n margin-top: 8px;\\n width: 100%; }\\n .ag-theme-material .ag-menu .ag-menu-option-active {\\n background-color: #fafafa; }\\n .ag-theme-material .ag-menu .ag-menu-option-disabled {\\n opacity: 0.5; }\\n .ag-theme-material .ag-menu .ag-menu-option-text {\\n margin-left: 8px; }\\n .ag-theme-material .ag-menu .ag-menu-option-icon {\\n padding-left: 8px;\\n padding-right: 8px;\\n min-width: 34px; }\\n .ag-theme-material .ag-menu .ag-menu-option-shortcut {\\n padding-left: 16px; }\\n .ag-theme-material .ag-menu .ag-menu-separator {\\n height: 16px; }\\n .ag-theme-material .ag-menu .ag-menu-separator > span {\\n background-image: url(\\\"data:image/svg+xml,%3Csvg%20width%3D'1'%20height%3D'16px'%20viewBox%3D'0%200%201%2016px'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cline%20x1%3D'0'%20y1%3D'8px'%20x2%3D'1'%20y2%3D'8px'%20stroke-width%3D'1'%20stroke%3D'%23E2E2E2'%2F%3E%3C%2Fsvg%3E\\\"); }\\n .ag-theme-material .ag-menu .ag-menu-option-popup-pointer {\\n width: 34px;\\n text-align: center; }\\n .ag-theme-material.ag-dnd-ghost {\\n background: #fff;\\n border-radius: 2px;\\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\\n padding: 8px;\\n border: 1px solid #e2e2e2;\\n color: rgba(0, 0, 0, 0.54);\\n font-weight: 700;\\n font-size: 12px;\\n font-family: \\\"Roboto\\\", sans-serif;\\n height: 56px !important;\\n line-height: 56px;\\n margin: 0;\\n padding: 0 16px;\\n transform: translateY(16px); }\\n .ag-theme-material.ag-dnd-ghost span,\\n .ag-theme-material.ag-dnd-ghost div {\\n height: 100%;\\n margin: 0;\\n padding: 0; }\\n .ag-theme-material.ag-dnd-ghost .ag-dnd-ghost-icon {\\n margin-right: 8px;\\n opacity: 0.87; }\\n .ag-theme-material .ag-tab-header {\\n background: #eee;\\n min-width: 220px;\\n width: 100%;\\n display: flex; }\\n .ag-theme-material .ag-tab-header .ag-tab {\\n display: flex;\\n border-bottom: 2px solid transparent;\\n height: 32px;\\n flex: none;\\n align-items: center;\\n justify-content: center;\\n flex: 1 1 auto; }\\n .ag-theme-material .ag-tab-body {\\n padding: 4px 0; }\\n .ag-theme-material .ag-tab-body .ag-menu-list {\\n margin-bottom: 0;\\n margin-top: 0; }\\n .ag-theme-material .ag-tab-body .ag-menu-list > div:first-child > span {\\n padding-top: 0; }\\n .ag-theme-material .ag-tab-body .ag-menu-list > div:last-child > span {\\n padding-bottom: 0; }\\n .ag-theme-material .ag-tab-body .ag-menu-list > div:last-child > .ag-menu-option-popup-pointer {\\n background-position-y: 0; }\\n .ag-theme-material .ag-filter .ag-filter-select,\\n .ag-theme-material .ag-filter .ag-filter-body {\\n margin-bottom: 8px; }\\n .ag-theme-material .ag-filter .ag-filter-body {\\n margin-top: 0; }\\n .ag-theme-material .ag-filter .ag-filter-filter {\\n margin-left: 8px;\\n margin-right: 8px; }\\n .ag-theme-material .ag-filter .ag-filter-select {\\n margin: 8px; }\\n .ag-theme-material .ag-filter input[type='radio'] {\\n margin: 0 3px 0 6px;\\n width: 12px;\\n height: 17px;\\n vertical-align: top; }\\n .ag-theme-material .ag-filter input[type='text'],\\n .ag-theme-material .ag-filter input[type='date'] {\\n padding-left: 8px; }\\n .ag-theme-material .ag-filter .ag-set-filter-list {\\n height: 240px; }\\n .ag-theme-material .ag-filter .ag-set-filter-item {\\n height: 40px; }\\n .ag-theme-material .ag-filter .ag-set-filter-item > div,\\n .ag-theme-material .ag-filter .ag-set-filter-item > span {\\n margin-left: 5px; }\\n .ag-theme-material .ag-filter .ag-filter-header-container {\\n border-bottom: 1px solid #e2e2e2;\\n padding-bottom: 4px; }\\n .ag-theme-material .ag-filter .ag-filter-apply-panel {\\n display: flex;\\n justify-content: flex-end;\\n padding: 8px;\\n padding-top: 16px; }\\n .ag-theme-material .ag-filter .ag-filter-apply-panel button {\\n line-height: 1.5;\\n appearance: none;\\n background-color: transparent;\\n border: 0;\\n color: #3f51b5;\\n font-family: inherit;\\n font-size: inherit;\\n margin: 0;\\n padding: 0;\\n text-transform: uppercase; }\\n .ag-theme-material .ag-filter .ag-filter-apply-panel button + button {\\n margin-left: 16px; }\\n .ag-theme-material .ag-column-select-panel .ag-column-tool-panel-column-group,\\n .ag-theme-material .ag-column-select-panel .ag-column-tool-panel-column {\\n height: 32px; }\\n .ag-theme-material .ag-column-select-panel .ag-column-tool-panel-column-group .ag-column-select-checkbox,\\n .ag-theme-material .ag-column-select-panel .ag-column-tool-panel-column-group .ag-column-tool-panel-column-label,\\n .ag-theme-material .ag-column-select-panel .ag-column-tool-panel-column-group .ag-column-group-icons,\\n .ag-theme-material .ag-column-select-panel .ag-column-tool-panel-column .ag-column-select-checkbox,\\n .ag-theme-material .ag-column-select-panel .ag-column-tool-panel-column .ag-column-tool-panel-column-label,\\n .ag-theme-material .ag-column-select-panel .ag-column-tool-panel-column .ag-column-group-icons {\\n margin-left: 8px;\\n margin-right: 8px; }\\n .ag-theme-material .ag-column-select-panel .ag-primary-cols-list-panel {\\n border-top: 1px solid #e2e2e2;\\n padding-top: 8px; }\\n .ag-theme-material .ag-column-select-panel .ag-primary-cols-list-panel > div {\\n cursor: pointer; }\\n .ag-theme-material .ag-column-select-panel .ag-column-tool-panel-column.ag-toolpanel-add-group-indent {\\n margin-left: 34px; }\\n .ag-theme-material .ag-primary-cols-header-panel {\\n border-top: 1px solid #e2e2e2;\\n height: 56px;\\n align-items: center; }\\n .ag-theme-material .ag-primary-cols-header-panel > div {\\n cursor: pointer;\\n margin: 0 8px; }\\n .ag-theme-material .ag-primary-cols-header-panel .ag-filter-body {\\n margin-left: 8px;\\n margin-right: 8px; }\\n .ag-theme-material .ag-tool-panel-wrapper {\\n border-right: 0; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel {\\n color: rgba(0, 0, 0, 0.54);\\n font-weight: 700;\\n font-size: 12px;\\n font-family: \\\"Roboto\\\", sans-serif; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-filter-toolpanel-header.ag-filter-header {\\n min-height: 56px;\\n height: 56px;\\n border-bottom: 1px solid #e2e2e2;\\n box-sizing: content-box; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-filter-toolpanel-header > div:not(.ag-input-wrapper) {\\n margin: 0 4px; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-filter-toolpanel-header > div.ag-input-wrapper {\\n padding-left: 8px;\\n padding-right: 8px; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-filter-toolpanel-header > div.ag-input-wrapper input {\\n width: 100%; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-filter-list-panel {\\n flex: 1 1 auto;\\n overflow: auto; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-filter-list-panel > div.ag-first-group-visible > .ag-group-component > .ag-group-component-title-bar {\\n border-top: none;\\n min-height: calc(56px - 1px); }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-filter-list-panel > div.ag-last-group-visible > .ag-group-component.ag-collapsed {\\n border-bottom: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component {\\n border: none;\\n background-color: #fff; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component .ag-group-component-title-bar {\\n min-height: 56px; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component .ag-group-component-title-bar .ag-group-component-title {\\n white-space: nowrap; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component .ag-group-component-title-bar .ag-column-group-icons {\\n margin: 0 8px; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component.ag-level-0 > .ag-group-component-title-bar {\\n border: 0 solid #e2e2e2;\\n border-top-width: 1px; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component.ag-has-filter > .ag-group-component-title-bar .ag-group-component-title:after {\\n content: \\\"\\\";\\n font-family: \\\"agGridMaterial\\\";\\n font-size: 18px;\\n margin-left: 8px;\\n color: #333;\\n font-weight: normal; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container {\\n margin-left: 0;\\n padding: 0; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance) {\\n margin-top: 0; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item .ag-group-component-title-bar {\\n background-color: #fdfdfd; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item .ag-filter-toolpanel-header {\\n padding: 4px 0; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item .ag-filter-toolpanel-body:not(:empty) {\\n margin: 8px 0; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item .ag-filter-toolpanel-body .ag-filter-air {\\n border: 1px solid #e2e2e2;\\n padding-top: 8px;\\n color: rgba(0, 0, 0, 0.87);\\n font-weight: 400;\\n font-size: 13px;\\n font-family: \\\"Roboto\\\", sans-serif; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance),\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component {\\n border-top: none;\\n margin-bottom: 0; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance) .ag-group-component-title-bar,\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component .ag-group-component-title-bar {\\n min-height: unset;\\n height: unset;\\n margin: 8px 0; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-pivot-mode-panel {\\n height: 56px;\\n display: flex;\\n flex: none; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-pivot-mode-panel .ag-pivot-mode-select {\\n display: flex;\\n align-items: center;\\n margin-left: 8px; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-column-select-panel {\\n border-bottom: 1px solid #e2e2e2;\\n padding-bottom: 7px;\\n padding-top: 0; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-column-drop {\\n border-bottom: 1px solid #e2e2e2;\\n padding: 8px 0;\\n padding-bottom: 16px; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-column-drop .ag-column-drop-empty-message {\\n color: rgba(0, 0, 0, 0.38);\\n font-weight: 700;\\n font-size: 12px;\\n font-family: \\\"Roboto\\\", sans-serif;\\n padding-left: 34px;\\n padding-right: 8px;\\n margin-top: 8px; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-column-drop .ag-column-drop-list {\\n cursor: default;\\n margin-top: 8px; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-column-drop > div:first-child > span:first-child {\\n margin-left: 8px;\\n margin-right: 8px; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-column-drop.ag-last-column-drop {\\n border-bottom-width: 0; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-filter-toolpanel-header > div:not(.ag-input-wrapper) {\\n padding-left: 4px; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item {\\n margin-top: 8px;\\n margin-right: 4px;\\n margin-bottom: 8px;\\n margin-left: 0; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance).ag-level-1 .ag-filter-toolpanel-header,\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component.ag-level-1 .ag-filter-toolpanel-header {\\n padding-left: 1rem; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance).ag-level-2 .ag-group-component-title-bar,\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component.ag-level-2 .ag-group-component-title-bar {\\n padding-left: 1rem; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance).ag-level-2 .ag-filter-toolpanel-header,\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component.ag-level-2 .ag-filter-toolpanel-header {\\n padding-left: 2rem; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance).ag-level-3 .ag-group-component-title-bar,\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component.ag-level-3 .ag-group-component-title-bar {\\n padding-left: 2rem; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance).ag-level-3 .ag-filter-toolpanel-header,\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component.ag-level-3 .ag-filter-toolpanel-header {\\n padding-left: 3rem; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance).ag-level-4 .ag-group-component-title-bar,\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component.ag-level-4 .ag-group-component-title-bar {\\n padding-left: 3rem; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance).ag-level-4 .ag-filter-toolpanel-header,\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component.ag-level-4 .ag-filter-toolpanel-header {\\n padding-left: 4rem; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance).ag-level-5 .ag-group-component-title-bar,\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component.ag-level-5 .ag-group-component-title-bar {\\n padding-left: 4rem; }\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance).ag-level-5 .ag-filter-toolpanel-header,\\n .ag-theme-material .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component.ag-level-5 .ag-filter-toolpanel-header {\\n padding-left: 5rem; }\\n .ag-theme-material .ag-numeric-header .ag-header-cell-label .ag-header-icon {\\n margin-left: 0;\\n margin-right: 8px; }\\n .ag-theme-material .ag-paging-panel {\\n border-top: 1px solid #e2e2e2;\\n color: rgba(0, 0, 0, 0.54);\\n height: 56px;\\n padding: 0 24px; }\\n .ag-theme-material .ag-paging-panel > span {\\n margin-left: 32px; }\\n .ag-theme-material .ag-paging-page-summary-panel .ag-icon {\\n width: 18px;\\n height: 18px; }\\n .ag-theme-material .ag-paging-page-summary-panel .ag-paging-button button {\\n cursor: pointer;\\n opacity: 0;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n padding: 0; }\\n .ag-theme-material .ag-paging-page-summary-panel .ag-paging-button.ag-disabled .ag-icon {\\n color: rgba(0, 0, 0, 0.38);\\n opacity: 0.38; }\\n .ag-theme-material .ag-paging-page-summary-panel .ag-paging-button.ag-disabled button {\\n cursor: default; }\\n .ag-theme-material .ag-paging-page-summary-panel span {\\n margin: 0 8px; }\\n .ag-theme-material .ag-row-selected {\\n background-color: #eee; }\\n .ag-theme-material .ag-ltr .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell),\\n .ag-theme-material .ag-rtl .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell) {\\n border: 1px solid transparent; }\\n .ag-theme-material .ag-ltr .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-top,\\n .ag-theme-material .ag-rtl .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-top {\\n border-top-color: #3f51b5; }\\n .ag-theme-material .ag-ltr .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-right,\\n .ag-theme-material .ag-rtl .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-right {\\n border-right-color: #3f51b5; }\\n .ag-theme-material .ag-ltr .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-bottom,\\n .ag-theme-material .ag-rtl .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-bottom {\\n border-bottom-color: #3f51b5; }\\n .ag-theme-material .ag-ltr .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-left,\\n .ag-theme-material .ag-rtl .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-left {\\n border-left-color: #3f51b5; }\\n .ag-theme-material .ag-cell-range-selected:not(.ag-cell-focus) {\\n background-color: rgba(122, 134, 203, 0.1); }\\n .ag-theme-material .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart {\\n background-color: rgba(0, 88, 255, 0.1); }\\n .ag-theme-material .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart.ag-cell-range-chart-category {\\n background-color: rgba(0, 255, 132, 0.1); }\\n .ag-theme-material .ag-cell-range-selected-1:not(.ag-cell-focus) {\\n background-color: rgba(122, 134, 203, 0.2); }\\n .ag-theme-material .ag-cell-range-selected-2:not(.ag-cell-focus) {\\n background-color: rgba(122, 134, 203, 0.3); }\\n .ag-theme-material .ag-cell-range-selected-3:not(.ag-cell-focus) {\\n background-color: rgba(122, 134, 203, 0.4); }\\n .ag-theme-material .ag-cell-range-selected-4:not(.ag-cell-focus) {\\n background-color: rgba(122, 134, 203, 0.5); }\\n .ag-theme-material .ag-ltr .ag-selection-fill-top,\\n .ag-theme-material .ag-rtl .ag-selection-fill-top {\\n border-top: 1px dashed #3f51b5; }\\n .ag-theme-material .ag-ltr .ag-selection-fill-top.ag-cell.ag-cell-range-selected,\\n .ag-theme-material .ag-rtl .ag-selection-fill-top.ag-cell.ag-cell-range-selected {\\n border-top: 1px dashed #afafaf; }\\n .ag-theme-material .ag-ltr .ag-selection-fill-right,\\n .ag-theme-material .ag-rtl .ag-selection-fill-right {\\n border-right: 1px dashed #3f51b5; }\\n .ag-theme-material .ag-ltr .ag-selection-fill-right.ag-cell.ag-cell-range-selected,\\n .ag-theme-material .ag-rtl .ag-selection-fill-right.ag-cell.ag-cell-range-selected {\\n border-right: 1px dashed #afafaf; }\\n .ag-theme-material .ag-ltr .ag-selection-fill-bottom,\\n .ag-theme-material .ag-rtl .ag-selection-fill-bottom {\\n border-bottom: 1px dashed #3f51b5; }\\n .ag-theme-material .ag-ltr .ag-selection-fill-bottom.ag-cell.ag-cell-range-selected,\\n .ag-theme-material .ag-rtl .ag-selection-fill-bottom.ag-cell.ag-cell-range-selected {\\n border-bottom: 1px dashed #afafaf; }\\n .ag-theme-material .ag-ltr .ag-selection-fill-left,\\n .ag-theme-material .ag-rtl .ag-selection-fill-left {\\n border-left: 1px dashed #3f51b5; }\\n .ag-theme-material .ag-ltr .ag-selection-fill-left.ag-cell.ag-cell-range-selected,\\n .ag-theme-material .ag-rtl .ag-selection-fill-left.ag-cell.ag-cell-range-selected {\\n border-left: 1px dashed #afafaf; }\\n .ag-theme-material .ag-fill-handle, .ag-theme-material .ag-range-handle {\\n position: absolute;\\n width: 6px;\\n height: 6px;\\n bottom: -1px;\\n right: -1px;\\n background-color: #3f51b5; }\\n .ag-theme-material .ag-fill-handle {\\n cursor: cell; }\\n .ag-theme-material .ag-range-handle {\\n cursor: nwse-resize; }\\n .ag-theme-material .ag-cell.ag-cell-inline-editing {\\n padding: 24px;\\n height: 72px; }\\n .ag-theme-material .ag-cell.ag-cell-inline-editing {\\n background: #fff;\\n border-radius: 2px;\\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\\n padding: 8px;\\n background-color: #fafafa; }\\n .ag-theme-material .ag-popup-editor {\\n background: #fff;\\n border-radius: 2px;\\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\\n padding: 8px;\\n background-color: #fafafa;\\n padding: 0; }\\n .ag-theme-material .ag-popup-editor .ag-large-textarea textarea {\\n height: auto;\\n padding: 24px; }\\n .ag-theme-material .ag-virtual-list-container .ag-virtual-list-item {\\n height: 40px; }\\n .ag-theme-material .ag-rich-select {\\n background-color: #fafafa; }\\n .ag-theme-material .ag-rich-select .ag-rich-select-list {\\n width: 100%;\\n min-width: 200px;\\n height: 312px; }\\n .ag-theme-material .ag-rich-select .ag-rich-select-value {\\n padding: 0 8px 0 24px;\\n height: 48px; }\\n .ag-theme-material .ag-rich-select .ag-virtual-list-item {\\n cursor: default;\\n height: 48px; }\\n .ag-theme-material .ag-rich-select .ag-virtual-list-item:hover {\\n background-color: #fafafa; }\\n .ag-theme-material .ag-rich-select .ag-rich-select-row {\\n padding-left: 24px; }\\n .ag-theme-material .ag-rich-select .ag-rich-select-row-selected {\\n background-color: #eee; }\\n .ag-theme-material .ag-ltr .ag-floating-filter-button {\\n margin-left: 24px; }\\n .ag-theme-material .ag-floating-filter-button button {\\n appearance: none;\\n background: transparent;\\n border: 0;\\n height: 18px;\\n padding: 0;\\n width: 18px; }\\n .ag-theme-material .ag-selection-checkbox:not(.ag-hidden) ~ .ag-cell-value:not(:empty),\\n .ag-theme-material .ag-selection-checkbox:not(.ag-hidden) + .ag-group-value:not(:empty),\\n .ag-theme-material .ag-group-expanded:not(.ag-hidden) ~ .ag-cell-value:not(:empty),\\n .ag-theme-material .ag-group-expanded:not(.ag-hidden) + .ag-group-value:not(:empty),\\n .ag-theme-material .ag-group-contracted:not(.ag-hidden) ~ .ag-cell-value:not(:empty),\\n .ag-theme-material .ag-group-contracted:not(.ag-hidden) + .ag-group-value:not(:empty),\\n .ag-theme-material .ag-group-checkbox:not(.ag-invisible) ~ .ag-cell-value:not(:empty),\\n .ag-theme-material .ag-group-checkbox:not(.ag-invisible) + .ag-group-value:not(:empty) {\\n margin-left: 24px; }\\n .ag-theme-material .ag-selection-checkbox:not(.ag-hidden) ~ .ag-group-checkbox,\\n .ag-theme-material .ag-group-expanded:not(.ag-hidden) ~ .ag-group-checkbox,\\n .ag-theme-material .ag-group-contracted:not(.ag-hidden) ~ .ag-group-checkbox,\\n .ag-theme-material .ag-group-checkbox:not(.ag-invisible) ~ .ag-group-checkbox {\\n margin-left: 24px; }\\n .ag-theme-material .ag-group-child-count {\\n margin-left: 2px; }\\n .ag-theme-material .ag-selection-checkbox span {\\n position: relative; }\\n .ag-theme-material .ag-column-drop-horizontal {\\n background-color: #eee;\\n height: 48px;\\n padding-left: 24px; }\\n .ag-theme-material .ag-column-drop-horizontal .ag-icon-group,\\n .ag-theme-material .ag-column-drop-horizontal .ag-icon-pivot {\\n margin-right: 24px; }\\n .ag-theme-material .ag-column-drop-horizontal .ag-icon-small-left,\\n .ag-theme-material .ag-column-drop-horizontal .ag-icon-small-right {\\n margin: 0 8px;\\n opacity: 0.54; }\\n .ag-theme-material .ag-column-drop-horizontal .ag-column-drop-empty-message {\\n opacity: 0.38; }\\n .ag-theme-material .ag-column-drop-cell {\\n background: #e2e2e2;\\n border-radius: 32px;\\n min-height: 32px;\\n padding: 0 4px; }\\n .ag-theme-material .ag-column-drop-cell .ag-column-drop-cell-text {\\n margin: 0 8px; }\\n .ag-theme-material .ag-column-drop-cell .ag-column-drop-cell-button {\\n min-width: 32px;\\n margin: 0 4px;\\n opacity: 0.54; }\\n .ag-theme-material .ag-column-drop-cell .ag-column-drop-cell-button:hover {\\n opacity: 0.87; }\\n .ag-theme-material .ag-column-drop-cell .ag-column-drag {\\n margin-left: 16px; }\\n .ag-theme-material .ag-column-drop-vertical .ag-column-drop-cell {\\n margin-top: 8px; }\\n .ag-theme-material .ag-select-agg-func-popup {\\n background: #fff;\\n border-radius: 2px;\\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\\n padding: 8px;\\n background: #fff;\\n height: 140px;\\n padding: 0; }\\n .ag-theme-material .ag-select-agg-func-popup .ag-virtual-list-item {\\n cursor: default;\\n line-height: 40px;\\n padding-left: 16px; }\\n .ag-theme-material .ag-set-filter-list,\\n .ag-theme-material .ag-menu-column-select-wrapper {\\n width: auto; }\\n .ag-theme-material .ag-column-drop-vertical > .ag-column-drop-cell {\\n margin-left: 8px;\\n margin-top: 0; }\\n .ag-theme-material .ag-cell-data-changed {\\n background-color: #00acc1 !important; }\\n .ag-theme-material .ag-cell-data-changed-animation {\\n background-color: transparent;\\n transition: background-color 1s; }\\n .ag-theme-material .ag-stub-cell {\\n padding-left: 24px;\\n padding-top: 8px; }\\n .ag-theme-material .ag-stub-cell .ag-loading-icon {\\n animation-name: spin;\\n animation-duration: 1000ms;\\n animation-iteration-count: infinite;\\n animation-timing-function: linear; }\\n\\n@keyframes spin {\\n from {\\n transform: rotate(0deg); }\\n to {\\n transform: rotate(360deg); } }\\n .ag-theme-material .ag-stub-cell .ag-loading-text {\\n margin-left: 8px;\\n margin-top: 8px; }\\n .ag-theme-material .ag-floating-top {\\n border-bottom: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-floating-bottom {\\n border-top: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-status-bar {\\n background: #fff;\\n border: 1px solid #e2e2e2;\\n border-top-width: 0;\\n color: rgba(0, 0, 0, 0.38);\\n font-weight: 700;\\n font-size: 12px;\\n font-family: \\\"Roboto\\\", sans-serif;\\n padding-right: 32px;\\n padding-left: 32px;\\n line-height: 1.5; }\\n .ag-theme-material .ag-name-value-value {\\n color: rgba(0, 0, 0, 0.87); }\\n .ag-theme-material .ag-status-bar-center {\\n text-align: center; }\\n .ag-theme-material .ag-name-value {\\n margin-left: 8px;\\n margin-right: 8px;\\n padding-top: 16px;\\n padding-bottom: 16px; }\\n .ag-theme-material .ag-details-row {\\n padding: 40px; }\\n .ag-theme-material .ag-overlay-loading-wrapper {\\n background-color: rgba(255, 255, 255, 0.5); }\\n .ag-theme-material .ag-overlay-loading-center {\\n background: #fff;\\n border-radius: 2px;\\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\\n padding: 8px; }\\n .ag-theme-material .ag-ltr .ag-side-bar.ag-side-bar-left, .ag-theme-material .ag-rtl .ag-side-bar.ag-side-bar-right {\\n border-left: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-ltr .ag-side-bar.ag-side-bar-left .ag-side-button.ag-selected button, .ag-theme-material .ag-rtl .ag-side-bar.ag-side-bar-right .ag-side-button.ag-selected button {\\n margin-right: -1px;\\n padding-right: 1px; }\\n .ag-theme-material .ag-ltr .ag-side-bar.ag-side-bar-left .ag-tool-panel-wrapper, .ag-theme-material .ag-rtl .ag-side-bar.ag-side-bar-right .ag-tool-panel-wrapper {\\n border-left: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-ltr .ag-side-bar.ag-side-bar-right, .ag-theme-material .ag-rtl .ag-side-bar.ag-side-bar-left {\\n border-right: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-ltr .ag-side-bar.ag-side-bar-right .ag-side-button.ag-selected button, .ag-theme-material .ag-rtl .ag-side-bar.ag-side-bar-left .ag-side-button.ag-selected button {\\n margin-left: -1px;\\n padding-left: 1px; }\\n .ag-theme-material .ag-ltr .ag-side-bar.ag-side-bar-right .ag-tool-panel-wrapper, .ag-theme-material .ag-rtl .ag-side-bar.ag-side-bar-left .ag-tool-panel-wrapper {\\n border-right: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-side-bar {\\n background-color: #fafafa;\\n border: 1px solid #e2e2e2;\\n border-left-width: 0;\\n position: relative; }\\n .ag-theme-material .ag-side-bar .ag-side-buttons {\\n padding-top: 32px;\\n background: #fff;\\n width: 22px;\\n position: relative; }\\n .ag-theme-material .ag-side-bar .ag-side-buttons .ag-side-button button {\\n background: transparent;\\n border: 0;\\n color: rgba(0, 0, 0, 0.87);\\n padding: 16px 0 16px 0;\\n width: calc(100% + 1px);\\n margin: 0;\\n min-height: 144px;\\n border-width: 1px 0 1px 0;\\n border-style: solid;\\n border-color: transparent;\\n background-position-y: center;\\n background-position-x: center;\\n background-repeat: no-repeat; }\\n .ag-theme-material .ag-side-bar .ag-side-buttons .ag-selected button {\\n background-color: #fafafa;\\n border-color: #e2e2e2; }\\n .ag-theme-material .ag-side-bar .ag-panel-container {\\n border-right: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-side-bar.full-width .ag-panel-container {\\n border-right: 0; }\\n .ag-theme-material .ag-side-bar .ag-column-drop {\\n min-height: 50px; }\\n .ag-theme-material .ag-primary-cols-filter-wrapper {\\n margin-left: 8px;\\n margin-right: 8px; }\\n .ag-theme-material .ag-group-component {\\n background-color: #fdfdfd;\\n padding: 0px;\\n border: 0 solid #efefef;\\n border-top-width: 1px; }\\n .ag-theme-material .ag-group-component.ag-disabled > .ag-group-component-label .ag-group-component-title,\\n .ag-theme-material .ag-group-component.ag-disabled > .ag-group-component-container {\\n opacity: 0.5; }\\n .ag-theme-material .ag-group-component .ag-group-component-title-bar {\\n background-color: #f0f0f0;\\n height: 18px;\\n font-size: 13px;\\n font-family: \\\"Roboto\\\", sans-serif;\\n height: 26px; }\\n .ag-theme-material .ag-group-component:not(.ag-collapsible) > div {\\n margin-left: 0; }\\n .ag-theme-material .ag-group-component:not(.ag-collapsible) > .ag-group-component-title-bar {\\n margin-left: 0;\\n padding: 8px; }\\n .ag-theme-material .ag-group-component:not(.ag-collapsible) > .ag-group-component-title-bar .ag-column-group-icons {\\n display: none; }\\n .ag-theme-material .ag-group-component .ag-group-component-toolbar {\\n background-color: #f7f7f7;\\n padding: 8px;\\n border: 0 solid #e2e2e2; }\\n .ag-theme-material .ag-group-component > .ag-group-component-container {\\n margin-left: 16px;\\n padding: 8px; }\\n .ag-theme-material .ag-group-component .ag-group-item {\\n margin: 4px 0; }\\n .ag-theme-material .ag-group-component .ag-group-item .ag-group-component-title-bar {\\n height: 18px; }\\n .ag-theme-material .ag-labeled label {\\n margin-right: 8px;\\n white-space: nowrap; }\\n .ag-theme-material .ag-labeled.ag-label-align-top label {\\n margin-bottom: 4px; }\\n .ag-theme-material .ag-slider > .ag-wrapper > div:not(:first-of-type),\\n .ag-theme-material .ag-angle-select > .ag-wrapper > div:not(:first-of-type) {\\n margin-left: 16px; }\\n .ag-theme-material .ag-angle-select .ag-angle-select-field .ag-parent-circle {\\n width: 24px;\\n height: 24px;\\n border-radius: 12px;\\n box-shadow: 0 0 2px rgba(0, 0, 0, 0.9);\\n background-color: #ffffff; }\\n .ag-theme-material .ag-angle-select .ag-angle-select-field .ag-child-circle {\\n top: 4px;\\n left: 12px;\\n width: 6px;\\n height: 6px;\\n margin-left: -3px;\\n margin-top: -4px;\\n border-radius: 3px;\\n background-color: #4c4c4c; }\\n .ag-theme-material .ag-toggle-button .ag-input-wrapper {\\n height: 18px;\\n width: 40px;\\n background-color: #fff;\\n border: 1px solid #333;\\n border-radius: 500rem; }\\n .ag-theme-material .ag-toggle-button .ag-input-wrapper .ag-icon {\\n width: 18px;\\n height: 18px;\\n border: 1px solid #333;\\n border-radius: 500rem;\\n right: calc(100% - 18px); }\\n .ag-theme-material .ag-toggle-button.ag-selected .ag-input-wrapper {\\n background-color: #ff4081; }\\n .ag-theme-material .ag-toggle-button.ag-selected .ag-input-wrapper .ag-icon {\\n background: #fff;\\n right: -1px; }\\n .ag-theme-material .ag-color-picker > .ag-wrapper {\\n border: 1px solid #e2e2e2;\\n border-radius: 5px; }\\n .ag-theme-material .ag-color-picker > .ag-wrapper > div {\\n width: 18px;\\n height: 18px; }\\n .ag-theme-material .ag-color-picker > .ag-wrapper button {\\n background-color: #fff; }\\n .ag-theme-material .ag-color-picker > .ag-wrapper button:hover {\\n background-color: #fafafa; }\\n .ag-theme-material .ag-dialog.ag-color-dialog {\\n border-radius: 5px; }\\n .ag-theme-material .ag-color-panel {\\n padding: 8px; }\\n .ag-theme-material .ag-color-panel .ag-spectrum-color {\\n background-color: red;\\n border-radius: 2px; }\\n .ag-theme-material .ag-color-panel .ag-spectrum-tools {\\n padding: 10px; }\\n .ag-theme-material .ag-color-panel .ag-spectrum-sat {\\n background-image: linear-gradient(to right, white, rgba(204, 154, 129, 0)); }\\n .ag-theme-material .ag-color-panel .ag-spectrum-val {\\n background-image: linear-gradient(to top, black, rgba(204, 154, 129, 0)); }\\n .ag-theme-material .ag-color-panel .ag-spectrum-dragger {\\n border-radius: 12px;\\n height: 12px;\\n width: 12px;\\n border: 1px solid white;\\n background: black;\\n box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24); }\\n .ag-theme-material .ag-color-panel .ag-spectrum-hue-background {\\n border-radius: 2px; }\\n .ag-theme-material .ag-color-panel .ag-spectrum-alpha-background {\\n border-radius: 2px; }\\n .ag-theme-material .ag-color-panel .ag-hue-alpha {\\n margin-bottom: 10px;\\n height: 11px;\\n border-radius: 2px; }\\n .ag-theme-material .ag-color-panel .ag-spectrum-slider {\\n margin-top: -12px;\\n width: 13px;\\n height: 13px;\\n border-radius: 13px;\\n background-color: #f8f8f8;\\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37); }\\n .ag-theme-material .ag-color-panel .ag-spectrum-text-value {\\n font-weight: bold;\\n line-height: 20px;\\n color: #333; }\\n .ag-theme-material .ag-color-panel .ag-spectrum-text-value:focus {\\n border: 1px solid #0d77e4;\\n padding: 2px; }\\n .ag-theme-material .ag-color-panel .ag-recent-colors > div {\\n margin: 0 3px; }\\n .ag-theme-material .ag-color-panel .ag-recent-colors > div:first-child {\\n margin-left: 0; }\\n .ag-theme-material .ag-color-panel .ag-recent-colors > div:last-child {\\n margin-right: 0; }\\n .ag-theme-material.ag-popup > div:not(.ag-tooltip-custom) {\\n box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3); }\\n .ag-theme-material .ag-panel {\\n background-color: #fff;\\n border: 1px solid #e2e2e2; }\\n .ag-dragging-range-handle .ag-theme-material .ag-panel.ag-dialog,\\n .ag-dragging-fill-handle .ag-theme-material .ag-panel.ag-dialog {\\n opacity: 0.7;\\n pointer-events: none; }\\n .ag-theme-material .ag-panel .ag-title-bar {\\n background-color: #fff;\\n border-bottom: 1px solid #fcfcfc;\\n color: rgba(0, 0, 0, 0.54);\\n height: 56px;\\n font-size: 12px;\\n font-weight: 700;\\n font-family: \\\"Roboto\\\", sans-serif;\\n padding: 5px 10px;\\n padding-left: 24px; }\\n .ag-theme-material .ag-panel .ag-title-bar .ag-title-bar-buttons .ag-button {\\n height: 20px;\\n width: 20px;\\n border-radius: 5px; }\\n .ag-theme-material .ag-panel .ag-title-bar .ag-title-bar-buttons .ag-button .ag-icon {\\n line-height: 20px;\\n font-size: 20px; }\\n .ag-theme-material .ag-panel .ag-title-bar .ag-title-bar-buttons .ag-button:hover, .ag-theme-material .ag-panel .ag-title-bar .ag-title-bar-buttons .ag-button.ag-has-popup {\\n background-color: #e6e6e6; }\\n .ag-theme-material .ag-panel .ag-title-bar .ag-title-bar-buttons .ag-button:not(:last-child) {\\n margin-right: 5px; }\\n .ag-theme-material .ag-panel .ag-message-box .ag-message-box-button-bar {\\n height: 30px;\\n background-color: #fff;\\n padding: 2px; }\\n .ag-theme-material .ag-panel .ag-message-box .ag-message-box-button-bar button {\\n border-radius: 2px; }\\n .ag-theme-material .ag-tooltip {\\n background-color: #fff;\\n color: rgba(0, 0, 0, 0.87);\\n border-radius: 2px;\\n padding: 5px;\\n border-width: 1px;\\n border-style: solid;\\n border-color: #ebebeb;\\n transition: opacity 1s; }\\n .ag-theme-material .ag-tooltip.ag-tooltip-hiding {\\n opacity: 0; }\\n .ag-theme-material .ag-chart .ag-chart-menu {\\n border-radius: 5px;\\n background: #fff; }\\n .ag-theme-material .ag-chart .ag-chart-menu > span:hover {\\n background-color: #e6e6e6; }\\n .ag-theme-material .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-mini-wrapper .ag-group-component-container {\\n margin-left: 0; }\\n .ag-theme-material .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-mini-wrapper .ag-chart-mini-thumbnail {\\n border: 1px solid #e2e2e2;\\n border-radius: 5px;\\n margin: 5px; }\\n .ag-theme-material .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-mini-wrapper .ag-chart-mini-thumbnail:nth-child(2n + 2):not(:last-child) {\\n margin-left: auto;\\n margin-right: auto; }\\n .ag-theme-material .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-mini-wrapper .ag-chart-mini-thumbnail:nth-child(3n + 1) {\\n margin-left: 2px; }\\n .ag-theme-material .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-mini-wrapper .ag-chart-mini-thumbnail:nth-child(3n) {\\n margin-right: 2px; }\\n .ag-theme-material .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-mini-wrapper .ag-chart-mini-thumbnail.ag-selected {\\n border-color: #3f51b5; }\\n .ag-theme-material .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-nav-bar .ag-nav-card-selector .ag-nav-card-item {\\n background: rgba(0, 0, 0, 0.87);\\n width: 8px;\\n height: 8px;\\n border-radius: 4px; }\\n .ag-theme-material .ag-chart-tabbed-menu .ag-chart-settings .ag-chart-settings-nav-bar .ag-nav-card-selector .ag-nav-card-item.ag-selected {\\n background: #3f51b5; }\\n .ag-theme-material .ag-chart-tabbed-menu .ag-chart-data .ag-data-select-checkbox .ag-column-drag {\\n margin-left: 8px; }\\n .ag-theme-material .ag-chart-tabbed-menu .ag-chart-data .ag-chart-data-wrapper .ag-toggle-button.ag-group-item {\\n margin: 9.6px 0; }\\n .ag-theme-material .ag-chart-tabbed-menu .ag-chart-format .ag-chart-format-wrapper .ag-group-item {\\n margin: 9.6px 0; }\\n .ag-theme-material .ag-icon {\\n /* use !important to prevent issues with browser extensions that change fonts */\\n font-family: \\\"agGridMaterial\\\";\\n display: block;\\n speak: none;\\n font-size: 18px;\\n color: #333;\\n font-style: normal;\\n font-weight: normal;\\n font-variant: normal;\\n text-transform: none;\\n /* Better Font Rendering =========== */\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale; }\\n .ag-theme-material .ag-icon-aggregation:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-arrows:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-asc:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-cancel:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-chart:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-checkbox-checked:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-checkbox-indeterminate:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-checkbox-unchecked:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-color-picker:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-column:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-columns:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-contracted:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-copy:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-cross:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-cut:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-data:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-desc:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-expanded:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-eye-slash:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-eye:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-filter:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-first:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-grip:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-group:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-indeterminate:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-last:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-left:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-linked:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-loading:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-maximize:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-menu:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-minimize:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-minus:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-next:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-none:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-not-allowed:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-paste:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-pin:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-pivot:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-plus:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-previous:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-radio-button-off:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-radio-button-on:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-right:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-save:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-small-down:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-small-left:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-small-right:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-small-up:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-tick:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-tree-closed:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-tree-indeterminate:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-tree-open:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-unlinked:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-checkbox-checked,\\n .ag-theme-material .ag-icon-checkbox-indeterminate,\\n .ag-theme-material .ag-icon-checkbox-unchecked {\\n background-color: transparent;\\n line-height: 18px;\\n border-radius: 3px; }\\n .ag-theme-material .ag-icon-checkbox-checked-readonly,\\n .ag-theme-material .ag-icon-checkbox-indeterminate-readonly,\\n .ag-theme-material .ag-icon-checkbox-unchecked-readonly {\\n cursor: default;\\n opacity: 0.38; }\\n .ag-theme-material .ag-icon-checkbox-checked {\\n color: #ff4081; }\\n .ag-theme-material .ag-icon-checkbox-checked-readonly:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-checkbox-indeterminate-readonly:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-checkbox-unchecked-readonly:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-row-drag:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-right-arrow:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-icon-radio-button-on {\\n color: #ff4081; }\\n .ag-theme-material .ag-right-arrow:before {\\n content: \\\"\\\"; }\\n .ag-theme-material .ag-rtl {\\n text-align: right; }\\n .ag-theme-material .ag-rtl .ag-numeric-cell {\\n text-align: left; }\\n .ag-theme-material .ag-rtl .ag-checkbox:not(.ag-label-align-left) label,\\n .ag-theme-material .ag-rtl .ag-radio-button:not(.ag-label-align-left) label,\\n .ag-theme-material .ag-rtl .ag-toggle-button:not(.ag-label-align-left) label {\\n margin-right: 8px;\\n margin-left: 0; }\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-pivot-mode-panel .ag-pivot-mode-select {\\n margin-right: 8px; }\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-column-drop .ag-column-drop-empty-message {\\n padding-left: 8px;\\n padding-right: 32px; }\\n .ag-theme-material .ag-rtl .ag-column-select-panel .ag-column-tool-panel-column-group .ag-column-select-checkbox,\\n .ag-theme-material .ag-rtl .ag-column-select-panel .ag-column-tool-panel-column-group .ag-column-group-icons,\\n .ag-theme-material .ag-rtl .ag-column-select-panel .ag-column-tool-panel-column .ag-column-select-checkbox,\\n .ag-theme-material .ag-rtl .ag-column-select-panel .ag-column-tool-panel-column .ag-column-group-icons {\\n margin-left: 8px;\\n margin-right: 8px; }\\n .ag-theme-material .ag-rtl .ag-column-select-panel .ag-column-group-closed-icon {\\n display: block;\\n transform: rotate(180deg); }\\n .ag-theme-material .ag-rtl .ag-column-select-panel .ag-column-tool-panel-column.ag-toolpanel-add-group-indent {\\n margin-left: 0;\\n margin-right: 34px; }\\n .ag-theme-material .ag-rtl .ag-header-select-all {\\n margin-left: 24px;\\n margin-right: 0; }\\n .ag-theme-material .ag-rtl .ag-selection-checkbox + .ag-cell-value:not(:empty), .ag-theme-material .ag-rtl .ag-selection-checkbox + .ag-group-value:not(:empty),\\n .ag-theme-material .ag-rtl .ag-group-checkbox + .ag-cell-value:not(:empty),\\n .ag-theme-material .ag-rtl .ag-group-checkbox + .ag-group-value:not(:empty),\\n .ag-theme-material .ag-rtl .ag-group-expanded + .ag-cell-value:not(:empty),\\n .ag-theme-material .ag-rtl .ag-group-expanded + .ag-group-value:not(:empty),\\n .ag-theme-material .ag-rtl .ag-group-contracted + .ag-cell-value:not(:empty),\\n .ag-theme-material .ag-rtl .ag-group-contracted + .ag-group-value:not(:empty) {\\n margin-right: 24px;\\n margin-left: initial; }\\n .ag-theme-material .ag-rtl .ag-selection-checkbox + .ag-group-checkbox,\\n .ag-theme-material .ag-rtl .ag-group-checkbox + .ag-group-checkbox,\\n .ag-theme-material .ag-rtl .ag-group-expanded + .ag-group-checkbox,\\n .ag-theme-material .ag-rtl .ag-group-contracted + .ag-group-checkbox {\\n margin-right: 24px;\\n margin-left: initial; }\\n .ag-theme-material .ag-rtl .ag-group-child-count {\\n margin-left: unset;\\n margin-right: 2px; }\\n .ag-theme-material .ag-rtl .ag-column-drop-horizontal {\\n padding-right: 24px; }\\n .ag-theme-material .ag-rtl .ag-column-drop-horizontal .ag-icon-group,\\n .ag-theme-material .ag-rtl .ag-column-drop-horizontal .ag-icon-pivot {\\n margin-left: 24px;\\n margin-right: 0; }\\n .ag-theme-material .ag-rtl .ag-floating-filter-button {\\n margin-right: 24px; }\\n .ag-theme-material .ag-rtl .ag-set-filter-item > div,\\n .ag-theme-material .ag-rtl .ag-set-filter-item > span {\\n margin-left: 0;\\n margin-right: 5px; }\\n .ag-theme-material .ag-rtl .ag-header .ag-header-cell-resize::after {\\n border-left: 1px solid #e2e2e2;\\n border-right: 0; }\\n .ag-theme-material .ag-rtl .ag-row-group-leaf-indent {\\n margin-right: 42px; }\\n .ag-theme-material .ag-rtl .ag-cell {\\n border-left: 1px solid transparent; }\\n .ag-theme-material .ag-rtl .ag-cell:not(.ag-cell-focus).ag-cell-first-right-pinned:not(.ag-cell-range-left),\\n .ag-theme-material .ag-rtl .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-first-right-pinned:not(.ag-cell-range-left),\\n .ag-theme-material .ag-rtl .ag-root:not(.ag-has-focus) .ag-cell.ag-cell-first-right-pinned:not(.ag-cell-range-left) {\\n border-left: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-rtl .ag-cell:not(.ag-cell-focus).ag-cell-last-left-pinned:not(.ag-cell-range-right),\\n .ag-theme-material .ag-rtl .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-last-left-pinned:not(.ag-cell-range-right),\\n .ag-theme-material .ag-rtl .ag-root:not(.ag-has-focus) .ag-cell.ag-cell-last-left-pinned:not(.ag-cell-range-right) {\\n border-right: 1px solid #e2e2e2; }\\n .ag-theme-material .ag-rtl .ag-side-bar {\\n border-right-width: 0; }\\n .ag-theme-material .ag-rtl .ag-side-bar .ag-panel-container {\\n border-left: 1px solid #e2e2e2;\\n border-right: 0; }\\n .ag-theme-material .ag-rtl .ag-side-bar.full-width .ag-panel-container {\\n border-left: 0; }\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-filter-toolpanel-header > div:not(.ag-input-wrapper) {\\n padding-right: 4px; }\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item {\\n margin-top: 8px;\\n margin-bottom: 8px;\\n margin-right: 0;\\n margin-left: 4px; }\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance).ag-level-1 .ag-filter-toolpanel-header,\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component.ag-level-1 .ag-filter-toolpanel-header {\\n padding-right: 1rem; }\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance).ag-level-2 .ag-group-component-title-bar,\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component.ag-level-2 .ag-group-component-title-bar {\\n padding-right: 1rem; }\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance).ag-level-2 .ag-filter-toolpanel-header,\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component.ag-level-2 .ag-filter-toolpanel-header {\\n padding-right: 2rem; }\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance).ag-level-3 .ag-group-component-title-bar,\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component.ag-level-3 .ag-group-component-title-bar {\\n padding-right: 2rem; }\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance).ag-level-3 .ag-filter-toolpanel-header,\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component.ag-level-3 .ag-filter-toolpanel-header {\\n padding-right: 3rem; }\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance).ag-level-4 .ag-group-component-title-bar,\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component.ag-level-4 .ag-group-component-title-bar {\\n padding-right: 3rem; }\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance).ag-level-4 .ag-filter-toolpanel-header,\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component.ag-level-4 .ag-filter-toolpanel-header {\\n padding-right: 4rem; }\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance).ag-level-5 .ag-group-component-title-bar,\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component.ag-level-5 .ag-group-component-title-bar {\\n padding-right: 4rem; }\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item:not(.ag-filter-toolpanel-instance).ag-level-5 .ag-filter-toolpanel-header,\\n .ag-theme-material .ag-rtl .ag-tool-panel-wrapper .ag-filter-panel .ag-group-component-container .ag-group-item > .ag-group-component.ag-level-5 .ag-filter-toolpanel-header {\\n padding-right: 5rem; }\\n .ag-theme-material .sass-variables::after {\\n content: '{ \\\"autoSizePadding\\\": \\\"24px\\\", \\\"headerHeight\\\": \\\"56px\\\", \\\"groupPaddingSize\\\": \\\"42px\\\", \\\"footerPaddingAddition\\\": \\\"32px\\\", \\\"virtualItemHeight\\\": \\\"40px\\\", \\\"aggFuncPopupHeight\\\": \\\"140px\\\", \\\"checkboxIndentWidth\\\": \\\"26px\\\", \\\"leafNodePadding\\\": \\\"24px\\\", \\\"rowHeight\\\": \\\"48px\\\", \\\"gridSize\\\": \\\"8px\\\", \\\"iconSize\\\": \\\"18px\\\" }';\\n display: none; }\\n .ag-theme-material .ag-icon-checkbox-checked,\\n .ag-theme-material .ag-icon-checkbox-checked-readonly,\\n .ag-theme-material .ag-icon-checkbox-unchecked,\\n .ag-theme-material .ag-icon-checkbox-unchecked-readonly,\\n .ag-theme-material .ag-icon-checkbox-indeterminate,\\n .ag-theme-material .ag-icon-checkbox-indeterminate-readonly,\\n .ag-theme-material .ag-icon-radio-button-on,\\n .ag-theme-material .ag-icon-radio-button-off {\\n height: 24px;\\n width: 24px;\\n font-size: 24px;\\n line-height: 24px; }\\n .ag-theme-material .ag-header-cell,\\n .ag-theme-material .ag-header-group-cell {\\n background-color: #fff;\\n -webkit-transition: background-color 0.5s;\\n transition: background-color 0.5s; }\\n .ag-theme-material .ag-cell-highlight {\\n background-color: #fce4ec !important; }\\n .ag-theme-material .ag-cell-highlight-animation {\\n -webkit-transition: background-color 1s;\\n transition: background-color 1s; }\\n .ag-theme-material .ag-menu-option {\\n height: 38px; }\\n .ag-theme-material .ag-side-bar {\\n border-bottom: none;\\n border-top: none; }\\n .ag-theme-material .ag-side-bar .ag-side-buttons {\\n z-index: 1; }\\n .ag-theme-material .ag-side-bar .ag-side-buttons .ag-side-button button {\\n color: rgba(0, 0, 0, 0.54);\\n font-family: \\\"Roboto\\\", sans-serif;\\n font-size: 12px;\\n font-weight: 700;\\n background-color: transparent;\\n border-width: 0;\\n width: calc(100% + 2px); }\\n .ag-theme-material .ag-side-bar .ag-side-buttons .ag-side-button.ag-selected {\\n background-color: #fafafa; }\\n .ag-theme-material .ag-side-bar .ag-filter-toolpanel-body {\\n background-color: #fff; }\\n .ag-theme-material .ag-status-bar {\\n border-top-width: 1px; }\\n .ag-theme-material .ag-ltr .ag-side-bar.ag-side-bar-right {\\n border-right: none; }\\n .ag-theme-material .ag-ltr .ag-side-bar.ag-side-bar-right .ag-side-buttons .ag-side-button button {\\n border-left: 2px solid transparent; }\\n .ag-theme-material .ag-ltr .ag-side-bar.ag-side-bar-right .ag-side-buttons .ag-side-button.ag-selected button {\\n border-left-color: #3f51b5; }\\n .ag-theme-material .ag-ltr .ag-side-bar.ag-side-bar-left {\\n border-left: none; }\\n .ag-theme-material .ag-ltr .ag-side-bar.ag-side-bar-left .ag-side-buttons .ag-side-button button {\\n border-right: 2px solid transparent; }\\n .ag-theme-material .ag-ltr .ag-side-bar.ag-side-bar-left .ag-side-buttons .ag-side-button.ag-selected button {\\n border-right-color: #3f51b5; }\\n .ag-theme-material .ag-rtl .ag-side-bar.ag-side-bar-right {\\n border-right: none; }\\n .ag-theme-material .ag-rtl .ag-side-bar.ag-side-bar-right .ag-side-buttons .ag-side-button button {\\n border-right: 2px solid transparent; }\\n .ag-theme-material .ag-rtl .ag-side-bar.ag-side-bar-right .ag-side-buttons .ag-side-button.ag-selected button {\\n border-right-color: #3f51b5; }\\n .ag-theme-material .ag-rtl .ag-side-bar.ag-side-bar-left {\\n border-left: none; }\\n .ag-theme-material .ag-rtl .ag-side-bar.ag-side-bar-left .ag-side-buttons .ag-side-button button {\\n border-left: 2px solid transparent; }\\n .ag-theme-material .ag-rtl .ag-side-bar.ag-side-bar-left .ag-side-buttons .ag-side-button.ag-selected button {\\n border-left-color: #3f51b5; }\\n .ag-theme-material .ag-group-expanded .ag-icon-expanded:empty:before {\\n content: \\\"\\\"; }\\n\\n\", \"\"]);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar continuousScale_1 = require(\"./continuousScale\");\nvar ticks_1 = require(\"../util/ticks\");\n/**\n * Maps continuous domain to a continuous range.\n */\nvar LinearScale = /** @class */ (function (_super) {\n __extends(LinearScale, _super);\n function LinearScale() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LinearScale.prototype.ticks = function (count) {\n if (count === void 0) { count = 10; }\n var d = this._domain;\n return ticks_1.default(d[0], d[d.length - 1], count);\n };\n /**\n * Extends the domain so that it starts and ends on nice round values.\n * @param count Tick count.\n */\n LinearScale.prototype.nice = function (count) {\n if (count === void 0) { count = 10; }\n var d = this.domain;\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var step;\n if (stop < start) {\n step = start;\n start = stop;\n stop = step;\n step = i0;\n i0 = i1;\n i1 = step;\n }\n step = ticks_1.tickIncrement(start, stop, count);\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = ticks_1.tickIncrement(start, stop, count);\n }\n else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = ticks_1.tickIncrement(start, stop, count);\n }\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n this.domain = d;\n }\n else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n this.domain = d;\n }\n };\n return LinearScale;\n}(continuousScale_1.default));\nexports.LinearScale = LinearScale;\n/**\n * Creates a continuous scale with the default interpolator and no clamping.\n */\nfunction scaleLinear() {\n return new LinearScale();\n}\nexports.default = scaleLinear;\n//# sourceMappingURL=linearScale.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Returns the minimum and maximum value in the given iterable using natural order.\n * If the iterable contains no comparable values, returns `undefined`.\n * @param values\n */\nfunction extent(values) {\n var n = values.length;\n var i = -1;\n var value;\n var min;\n var max;\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) {\n min = value;\n }\n if (max < value) {\n max = value;\n }\n }\n }\n }\n }\n return typeof min === 'undefined' || typeof max === 'undefined' ? undefined : [min, max];\n}\nexports.extent = extent;\n// Custom `Array.find` implementation for legacy browsers.\nfunction find(arr, predicate) {\n for (var i = 0, ln = arr.length; i < ln; i++) {\n var value = arr[i];\n if (predicate(value, i, arr)) {\n return value;\n }\n }\n}\nexports.find = find;\n/**\n * This method will only return `undefined` if there's not a single valid finite number present\n * in the given array of values. Date values will be converted to timestamps.\n * @param values\n */\nfunction numericExtent(values) {\n var calculatedExtent = extent(values);\n if (typeof calculatedExtent === 'undefined') {\n return;\n }\n var a = calculatedExtent[0], b = calculatedExtent[1];\n var min = a instanceof Date ? a.getTime() : a;\n var max = b instanceof Date ? b.getTime() : b;\n if (typeof min === 'number' && isFinite(min) && typeof max === 'number' && isFinite(max)) {\n return [min, max];\n }\n}\nexports.numericExtent = numericExtent;\nfunction sumPositiveValues(array) {\n return array.reduce(function (total, value) { return value > 0 ? total + value : total; }, 0);\n}\nexports.sumPositiveValues = sumPositiveValues;\n//# sourceMappingURL=array.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable = /** @class */ (function () {\n function Observable() {\n this.propertyListeners = new Map(); // property name => property change listeners\n this.eventListeners = new Map(); // event type => event listeners\n }\n Observable.prototype.addPropertyListener = function (name, listener) {\n var propertyListeners = this.propertyListeners;\n var listeners = propertyListeners.get(name);\n if (!listeners) {\n listeners = new Set();\n propertyListeners.set(name, listeners);\n }\n if (!listeners.has(listener)) {\n listeners.add(listener);\n return listener;\n }\n else {\n console.warn('Listener ', listener, ' already added to ', this);\n }\n };\n Observable.prototype.removePropertyListener = function (name, listener) {\n var propertyListeners = this.propertyListeners;\n var listeners = propertyListeners.get(name);\n if (listeners) {\n if (listener) {\n listeners.delete(listener);\n }\n else {\n listeners.clear();\n }\n }\n };\n Observable.prototype.notifyPropertyListeners = function (name, oldValue, value) {\n var _this = this;\n var nameListeners = this.propertyListeners;\n var listeners = nameListeners.get(name);\n if (listeners) {\n listeners.forEach(function (listener) {\n listener({\n type: name,\n source: _this,\n value: value,\n oldValue: oldValue\n });\n });\n }\n };\n Observable.prototype.addEventListener = function (type, listener) {\n var eventListeners = this.eventListeners;\n var listeners = eventListeners.get(type);\n if (!listeners) {\n listeners = new Set();\n eventListeners.set(type, listeners);\n }\n if (!listeners.has(listener)) {\n listeners.add(listener);\n return listener;\n }\n else {\n console.warn('Category listener ', listener, ' already added to ', this);\n }\n };\n Observable.prototype.removeEventListener = function (type, listener) {\n var eventListeners = this.eventListeners;\n var listeners = eventListeners.get(type);\n if (listeners) {\n if (listener) {\n listeners.delete(listener);\n }\n else {\n listeners.clear();\n }\n }\n };\n Observable.prototype.notifyEventListeners = function (types) {\n var eventListeners = this.eventListeners;\n types.forEach(function (type) {\n var listeners = eventListeners.get(type);\n if (listeners) {\n listeners.forEach(function (listener) { return listener({ type: type }); });\n }\n });\n };\n Observable.prototype.fireEvent = function (event) {\n var listeners = this.eventListeners.get(event.type);\n if (listeners) {\n listeners.forEach(function (listener) { return listener(event); });\n }\n };\n Observable.privateKeyPrefix = '_';\n return Observable;\n}());\nexports.Observable = Observable;\nfunction reactive(events, property) {\n return function (target, key) {\n // `target` is either a constructor (static member) or prototype (instance member)\n var privateKey = Observable.privateKeyPrefix + key;\n var backingProperty = property ? property.split('.') : undefined;\n var privateKeyEvents = privateKey + 'Events';\n if (!target[key]) {\n if (events) {\n target[privateKeyEvents] = events;\n }\n Object.defineProperty(target, key, {\n set: function (value) {\n var oldValue;\n if (backingProperty) {\n oldValue = this;\n backingProperty.forEach(function (key) {\n oldValue = oldValue[key];\n });\n }\n else {\n oldValue = this[privateKey];\n }\n if (oldValue !== value || (typeof value === 'object' && value !== null)) {\n if (backingProperty) {\n var i = 0, last = backingProperty.length - 1, obj = this;\n while (i < last) {\n obj = obj[backingProperty[i++]];\n }\n obj[backingProperty[last]] = value;\n }\n else {\n this[privateKey] = value;\n }\n this.notifyPropertyListeners(key, oldValue, value);\n var events_1 = this[privateKeyEvents];\n if (events_1) {\n this.notifyEventListeners(events_1);\n }\n }\n },\n get: function () {\n var value;\n if (backingProperty) {\n value = this;\n backingProperty.forEach(function (key) {\n value = value[key];\n });\n }\n else {\n value = this[privateKey];\n }\n return value;\n },\n enumerable: true,\n configurable: true\n });\n }\n };\n}\nexports.reactive = reactive;\n//# sourceMappingURL=observable.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar t0 = new Date;\nvar t1 = new Date;\n/**\n * The interval methods don't mutate Date parameters.\n */\nvar TimeInterval = /** @class */ (function () {\n function TimeInterval(floor, offset) {\n this._floor = floor;\n this._offset = offset;\n }\n /**\n * Returns a new date representing the latest interval boundary date before or equal to date.\n * For example, `day.floor(date)` typically returns 12:00 AM local time on the given date.\n * @param date\n */\n TimeInterval.prototype.floor = function (date) {\n date = new Date(+date);\n this._floor(date);\n return date;\n };\n /**\n * Returns a new date representing the earliest interval boundary date after or equal to date.\n * @param date\n */\n TimeInterval.prototype.ceil = function (date) {\n date = new Date(+date - 1);\n this._floor(date);\n this._offset(date, 1);\n this._floor(date);\n return date;\n };\n /**\n * Returns a new date representing the closest interval boundary date to date.\n * @param date\n */\n TimeInterval.prototype.round = function (date) {\n var d0 = this.floor(date);\n var d1 = this.ceil(date);\n var ms = +date;\n return ms - d0.getTime() < d1.getTime() - ms ? d0 : d1;\n };\n /**\n * Returns a new date equal to date plus step intervals.\n * @param date\n * @param step\n */\n TimeInterval.prototype.offset = function (date, step) {\n if (step === void 0) { step = 1; }\n date = new Date(+date);\n this._offset(date, Math.floor(step));\n return date;\n };\n /**\n * Returns an array of dates representing every interval boundary after or equal to start (inclusive) and before stop (exclusive).\n * @param start\n * @param stop\n * @param step\n */\n TimeInterval.prototype.range = function (start, stop, step) {\n if (step === void 0) { step = 1; }\n var range = [];\n start = this.ceil(start);\n step = Math.floor(step);\n if (start > stop || step <= 0) {\n return range;\n }\n var previous;\n do {\n previous = new Date(+start);\n range.push(previous);\n this._offset(start, step);\n this._floor(start);\n } while (previous < start && start < stop);\n return range;\n };\n // Returns an interval that is a subset of this interval.\n // For example, to create an interval that return 1st, 11th, 21st and 31st of each month:\n // day.filter(date => (date.getDate() - 1) % 10 === 0)\n TimeInterval.prototype.filter = function (test) {\n var _this = this;\n var floor = function (date) {\n if (date >= date) {\n while (_this._floor(date), !test(date)) {\n date.setTime(date.getTime() - 1);\n }\n }\n return date;\n };\n var offset = function (date, step) {\n if (date >= date) {\n if (step < 0) {\n while (++step <= 0) {\n do {\n _this._offset(date, -1);\n } while (!test(date));\n }\n }\n else {\n while (--step >= 0) {\n do {\n _this._offset(date, 1);\n } while (!test(date));\n }\n }\n }\n return date;\n };\n return new TimeInterval(floor, offset);\n };\n return TimeInterval;\n}());\nexports.TimeInterval = TimeInterval;\nvar CountableTimeInterval = /** @class */ (function (_super) {\n __extends(CountableTimeInterval, _super);\n function CountableTimeInterval(floor, offset, count, field) {\n var _this = _super.call(this, floor, offset) || this;\n _this._count = count;\n _this._field = field;\n return _this;\n }\n /**\n * Returns the number of interval boundaries after start (exclusive) and before or equal to end (inclusive).\n * @param start\n * @param end\n */\n CountableTimeInterval.prototype.count = function (start, end) {\n t0.setTime(+start);\n t1.setTime(+end);\n this._floor(t0);\n this._floor(t1);\n return Math.floor(this._count(t0, t1));\n };\n /**\n * Returns a filtered view of this interval representing every step'th date.\n * The meaning of step is dependent on this interval’s parent interval as defined by the `field` function.\n * @param step\n */\n CountableTimeInterval.prototype.every = function (step) {\n var _this = this;\n var result;\n step = Math.floor(step);\n if (isFinite(step) && step > 0) {\n if (step > 1) {\n var field_1 = this._field;\n if (field_1) {\n result = this.filter(function (d) { return field_1(d) % step === 0; });\n }\n else {\n result = this.filter(function (d) { return _this.count(0, d) % step === 0; });\n }\n }\n else {\n result = this;\n }\n }\n return result;\n };\n return CountableTimeInterval;\n}(TimeInterval));\nexports.CountableTimeInterval = CountableTimeInterval;\n//# sourceMappingURL=interval.js.map","\"use strict\";\n// For small data structs like a bounding box, objects are superior to arrays\n// in terms of performance (by 3-4% in Chrome 71, Safari 12 and by 20% in Firefox 64).\n// They are also self descriptive and harder to abuse.\n// For example, one has to do:\n// `ctx.strokeRect(bbox.x, bbox.y, bbox.width, bbox.height);`\n// rather than become enticed by the much slower:\n// `ctx.strokeRect(...bbox);`\n// https://jsperf.com/array-vs-object-create-access\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BBox = /** @class */ (function () {\n function BBox(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n BBox.prototype.isValid = function () {\n return isFinite(this.x) && isFinite(this.y) && isFinite(this.width) && isFinite(this.height);\n };\n BBox.prototype.dilate = function (value) {\n this.x -= value;\n this.y -= value;\n this.width += value * 2;\n this.height += value * 2;\n };\n BBox.prototype.containsPoint = function (x, y) {\n return x >= this.x && x <= (this.x + this.width)\n && y >= this.y && y <= (this.y + this.height);\n };\n BBox.prototype.render = function (ctx, params) {\n if (params === void 0) { params = BBox.noParams; }\n ctx.save();\n if (params.resetTransform) {\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n }\n ctx.strokeStyle = params.strokeStyle || 'cyan';\n ctx.lineWidth = params.lineWidth || 1;\n ctx.strokeRect(this.x, this.y, this.width, this.height);\n if (params.label) {\n ctx.fillStyle = params.fillStyle || 'black';\n ctx.textBaseline = 'bottom';\n ctx.fillText(params.label, this.x, this.y);\n }\n ctx.restore();\n };\n BBox.noParams = {};\n return BBox;\n}());\nexports.BBox = BBox;\n//# sourceMappingURL=bbox.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar matrix_1 = require(\"./matrix\");\nvar PointerEvents;\n(function (PointerEvents) {\n PointerEvents[PointerEvents[\"All\"] = 0] = \"All\";\n PointerEvents[PointerEvents[\"None\"] = 1] = \"None\";\n})(PointerEvents = exports.PointerEvents || (exports.PointerEvents = {}));\n/**\n * Abstract scene graph node.\n * Each node can have zero or one parent and belong to zero or one scene.\n */\nvar Node = /** @class */ (function () {\n function Node() {\n /**\n * Unique node ID in the form `ClassName-NaturalNumber`.\n */\n this.id = this.createId();\n /**\n * Some number to identify this node, typically within a `Group` node.\n * Usually this will be some enum value used as a selector.\n */\n this.tag = NaN;\n /**\n * To simplify the type system (especially in Selections) we don't have the `Parent` node\n * (one that has children). Instead, we mimic HTML DOM, where any node can have children.\n * But we still need to distinguish regular leaf nodes from container leafs somehow.\n */\n this.isContainerNode = false;\n this._children = [];\n // Used to check for duplicate nodes.\n this.childSet = {}; // new Set()\n // These matrices may need to have package level visibility\n // for performance optimization purposes.\n this.matrix = new matrix_1.Matrix();\n this.inverseMatrix = new matrix_1.Matrix();\n // TODO: should this be `true` by default as well?\n this._dirtyTransform = false;\n this._scalingX = 1;\n this._scalingY = 1;\n /**\n * The center of scaling.\n * The default value of `null` means the scaling center will be\n * determined automatically, as the center of the bounding box\n * of a node.\n */\n this._scalingCenterX = null;\n this._scalingCenterY = null;\n this._rotationCenterX = null;\n this._rotationCenterY = null;\n /**\n * Rotation angle in radians.\n * The value is set as is. No normalization to the [-180, 180) or [0, 360)\n * interval is performed.\n */\n this._rotation = 0;\n this._translationX = 0;\n this._translationY = 0;\n /**\n * Each time a property of the node that effects how it renders changes\n * the `dirty` property of the node should be set to `true`. The change\n * to the `dirty` property of the node will propagate up to its parents\n * and eventually to the scene, at which point an animation frame callback\n * will be scheduled to rerender the scene and its nodes and reset the `dirty`\n * flags of all nodes and the {@link Scene._dirty | Scene} back to `false`.\n * Since changes to node properties are not rendered immediately, it's possible\n * to change as many properties on as many nodes as needed and the rendering\n * will still only happen once in the next animation frame callback.\n * The animation frame callback is only scheduled if it hasn't been already.\n */\n this._dirty = true;\n this._visible = true;\n this.pointerEvents = PointerEvents.All;\n }\n // Uniquely identify nodes (to check for duplicates, for example).\n Node.prototype.createId = function () {\n var constructor = this.constructor;\n var className = constructor.className;\n if (!className) {\n throw new Error(\"The \" + constructor + \" is missing the 'className' property.\");\n }\n return className + '-' + (constructor.id = (constructor.id || 0) + 1);\n };\n /**\n * This is meaningfully faster than `instanceof` and should be the preferred way\n * of checking inside loops.\n * @param node\n */\n Node.isNode = function (node) {\n return node ? node.matrix !== undefined : false;\n };\n Node.prototype._setScene = function (value) {\n this._scene = value;\n var children = this.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n children[i]._setScene(value);\n }\n };\n Object.defineProperty(Node.prototype, \"scene\", {\n get: function () {\n return this._scene;\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype._setParent = function (value) {\n this._parent = value;\n };\n Object.defineProperty(Node.prototype, \"parent\", {\n get: function () {\n return this._parent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"children\", {\n get: function () {\n return this._children;\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype.countChildren = function (depth) {\n if (depth === void 0) { depth = Node.MAX_SAFE_INTEGER; }\n if (depth <= 0) {\n return 0;\n }\n var children = this.children;\n var n = children.length;\n var size = n;\n for (var i = 0; i < n; i++) {\n size += children[i].countChildren(depth - 1);\n }\n return size;\n };\n /**\n * Appends one or more new node instances to this parent.\n * If one needs to:\n * - move a child to the end of the list of children\n * - move a child from one parent to another (including parents in other scenes)\n * one should use the {@link insertBefore} method instead.\n * @param nodes A node or nodes to append.\n */\n Node.prototype.append = function (nodes) {\n // Passing a single parameter to an open-ended version of `append`\n // would be 30-35% slower than this.\n if (Node.isNode(nodes)) {\n nodes = [nodes];\n }\n // The function takes an array rather than having open-ended\n // arguments like `...nodes: Node[]` because the latter is\n // transpiled to a function where the `arguments` object\n // is copied to a temporary array inside a loop.\n // So an array is created either way. And if we already have\n // an array of nodes we want to add, we have to use the prohibitively\n // expensive spread operator to pass it to the function,\n // and, on top of that, the copy of the `arguments` is still made.\n var n = nodes.length;\n for (var i = 0; i < n; i++) {\n var node = nodes[i];\n if (node.parent) {\n throw new Error(node + \" already belongs to another parent: \" + node.parent + \".\");\n }\n if (node.scene) {\n throw new Error(node + \" already belongs a scene: \" + node.scene + \".\");\n }\n if (this.childSet[node.id]) {\n // Cast to `any` to avoid `Property 'name' does not exist on type 'Function'`.\n throw new Error(\"Duplicate \" + node.constructor.name + \" node: \" + node);\n }\n this._children.push(node);\n this.childSet[node.id] = true;\n node._setParent(this);\n node._setScene(this.scene);\n }\n this.dirty = true;\n };\n Node.prototype.appendChild = function (node) {\n if (node.parent) {\n throw new Error(node + \" already belongs to another parent: \" + node.parent + \".\");\n }\n if (node.scene) {\n throw new Error(node + \" already belongs a scene: \" + node.scene + \".\");\n }\n if (this.childSet[node.id]) {\n // Cast to `any` to avoid `Property 'name' does not exist on type 'Function'`.\n throw new Error(\"Duplicate \" + node.constructor.name + \" node: \" + node);\n }\n this._children.push(node);\n this.childSet[node.id] = true;\n node._setParent(this);\n node._setScene(this.scene);\n this.dirty = true;\n return node;\n };\n Node.prototype.removeChild = function (node) {\n if (node.parent === this) {\n var i = this.children.indexOf(node);\n if (i >= 0) {\n this._children.splice(i, 1);\n delete this.childSet[node.id];\n node._setParent(undefined);\n node._setScene(undefined);\n this.dirty = true;\n return node;\n }\n }\n throw new Error(\"The node to be removed is not a child of this node.\");\n };\n /**\n * Inserts the node `node` before the existing child node `nextNode`.\n * If `nextNode` is null, insert `node` at the end of the list of children.\n * If the `node` belongs to another parent, it is first removed.\n * Returns the `node`.\n * @param node\n * @param nextNode\n */\n Node.prototype.insertBefore = function (node, nextNode) {\n var parent = node.parent;\n if (node.parent) {\n node.parent.removeChild(node);\n }\n if (nextNode && nextNode.parent === this) {\n var i = this.children.indexOf(nextNode);\n if (i >= 0) {\n this._children.splice(i, 0, node);\n this.childSet[node.id] = true;\n node._setParent(this);\n node._setScene(this.scene);\n }\n else {\n throw new Error(nextNode + \" has \" + parent + \" as the parent, \"\n + \"but is not in its list of children.\");\n }\n this.dirty = true;\n }\n else {\n this.append(node);\n }\n return node;\n };\n Object.defineProperty(Node.prototype, \"nextSibling\", {\n get: function () {\n var parent = this.parent;\n if (parent) {\n var children = parent.children;\n var index = children.indexOf(this);\n if (index >= 0 && index <= children.length - 1) {\n return children[index + 1];\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Calculates the combined inverse transformation for this node,\n * and uses it to convert the given transformed point\n * to the untransformed one.\n * @param x\n * @param y\n */\n Node.prototype.transformPoint = function (x, y) {\n var matrix = matrix_1.Matrix.flyweight(this.matrix);\n var parent = this.parent;\n while (parent) {\n matrix.preMultiplySelf(parent.matrix);\n parent = parent.parent;\n }\n return matrix.invertSelf().transformPoint(x, y);\n };\n Object.defineProperty(Node.prototype, \"dirtyTransform\", {\n get: function () {\n return this._dirtyTransform;\n },\n set: function (value) {\n this._dirtyTransform = value;\n // TODO: replace this with simply `this.dirty = true`,\n // see `set dirty` method.\n if (value) {\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"scalingX\", {\n get: function () {\n return this._scalingX;\n },\n set: function (value) {\n if (this._scalingX !== value) {\n this._scalingX = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"scalingY\", {\n get: function () {\n return this._scalingY;\n },\n set: function (value) {\n if (this._scalingY !== value) {\n this._scalingY = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"scalingCenterX\", {\n get: function () {\n return this._scalingCenterX;\n },\n set: function (value) {\n if (this._scalingCenterX !== value) {\n this._scalingCenterX = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"scalingCenterY\", {\n get: function () {\n return this._scalingCenterY;\n },\n set: function (value) {\n if (this._scalingCenterY !== value) {\n this._scalingCenterY = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"rotationCenterX\", {\n get: function () {\n return this._rotationCenterX;\n },\n set: function (value) {\n if (this._rotationCenterX !== value) {\n this._rotationCenterX = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"rotationCenterY\", {\n get: function () {\n return this._rotationCenterY;\n },\n set: function (value) {\n if (this._rotationCenterY !== value) {\n this._rotationCenterY = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"rotation\", {\n get: function () {\n return this._rotation;\n },\n set: function (value) {\n if (this._rotation !== value) {\n this._rotation = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"rotationDeg\", {\n get: function () {\n return this.rotation / Math.PI * 180;\n },\n /**\n * For performance reasons the rotation angle's internal representation\n * is in radians. Therefore, don't expect to get the same number you set.\n * Even with integer angles about a quarter of them from 0 to 359 cannot\n * be converted to radians and back without precision loss.\n * For example:\n *\n * node.rotationDeg = 11;\n * console.log(node.rotationDeg); // 10.999999999999998\n *\n * @param value Rotation angle in degrees.\n */\n set: function (value) {\n this.rotation = value / 180 * Math.PI;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"translationX\", {\n get: function () {\n return this._translationX;\n },\n set: function (value) {\n if (this._translationX !== value) {\n this._translationX = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"translationY\", {\n get: function () {\n return this._translationY;\n },\n set: function (value) {\n if (this._translationY !== value) {\n this._translationY = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype.isPointInNode = function (x, y) {\n return false;\n };\n /**\n * Hit testing method.\n * Recursively checks if the given point is inside this node or any of its children.\n * Returns the first matching node or `undefined`.\n * Nodes that render later (show on top) are hit tested first.\n * @param x\n * @param y\n */\n Node.prototype.pickNode = function (x, y) {\n if (!this.visible || this.pointerEvents === PointerEvents.None || !this.isPointInNode(x, y)) {\n return;\n }\n var children = this.children;\n if (children.length) {\n // Nodes added later should be hit-tested first,\n // as they are rendered on top of the previously added nodes.\n for (var i = children.length - 1; i >= 0; i--) {\n var hit = children[i].pickNode(x, y);\n if (hit) {\n return hit;\n }\n }\n }\n else if (!this.isContainerNode) { // a leaf node, but not a container leaf\n return this;\n }\n };\n Node.prototype.computeBBox = function () { return; };\n Node.prototype.computeBBoxCenter = function () {\n var bbox = this.computeBBox && this.computeBBox();\n if (bbox) {\n return [\n bbox.x + bbox.width * 0.5,\n bbox.y + bbox.height * 0.5\n ];\n }\n return [0, 0];\n };\n Node.prototype.computeTransformMatrix = function () {\n // TODO: transforms without center of scaling and rotation correspond directly\n // to `setAttribute('transform', 'translate(tx, ty) rotate(rDeg) scale(sx, sy)')`\n // in SVG. Our use cases will mostly require positioning elements (rects, circles)\n // within a group, rotating groups at right angles (e.g. for axis) and translating\n // groups. We shouldn't even need `scale(1, -1)` (invert vertically), since this\n // can be done using D3-like scales already by inverting the output range.\n // So for now, just assume that centers of scaling and rotation are at the origin.\n // const [bbcx, bbcy] = this.computeBBoxCenter();\n var _a = [0, 0], bbcx = _a[0], bbcy = _a[1];\n var sx = this.scalingX;\n var sy = this.scalingY;\n var scx;\n var scy;\n if (sx === 1 && sy === 1) {\n scx = 0;\n scy = 0;\n }\n else {\n scx = this.scalingCenterX === null ? bbcx : this.scalingCenterX;\n scy = this.scalingCenterY === null ? bbcy : this.scalingCenterY;\n }\n var r = this.rotation;\n var cos = Math.cos(r);\n var sin = Math.sin(r);\n var rcx;\n var rcy;\n if (r === 0) {\n rcx = 0;\n rcy = 0;\n }\n else {\n rcx = this.rotationCenterX === null ? bbcx : this.rotationCenterX;\n rcy = this.rotationCenterY === null ? bbcy : this.rotationCenterY;\n }\n var tx = this.translationX;\n var ty = this.translationY;\n // The transform matrix `M` is a result of the following transformations:\n // 1) translate the center of scaling to the origin\n // 2) scale\n // 3) translate back\n // 4) translate the center of rotation to the origin\n // 5) rotate\n // 6) translate back\n // 7) translate\n // (7) (6) (5) (4) (3) (2) (1)\n // | 1 0 tx | | 1 0 rcx | | cos -sin 0 | | 1 0 -rcx | | 1 0 scx | | sx 0 0 | | 1 0 -scx |\n // M = | 0 1 ty | * | 0 1 rcy | * | sin cos 0 | * | 0 1 -rcy | * | 0 1 scy | * | 0 sy 0 | * | 0 1 -scy |\n // | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 0 | | 0 0 1 |\n // Translation after steps 1-4 above:\n var tx4 = scx * (1 - sx) - rcx;\n var ty4 = scy * (1 - sy) - rcy;\n this.dirtyTransform = false;\n this.matrix.setElements([\n cos * sx, sin * sx,\n -sin * sy, cos * sy,\n cos * tx4 - sin * ty4 + rcx + tx,\n sin * tx4 + cos * ty4 + rcy + ty\n ]).inverseTo(this.inverseMatrix);\n };\n Object.defineProperty(Node.prototype, \"dirty\", {\n get: function () {\n return this._dirty;\n },\n set: function (value) {\n // TODO: check if we are already dirty (e.g. if (this._dirty !== value))\n // if we are, then all parents and the scene have been\n // notified already, and we are doing redundant work\n // (but test if this is indeed the case)\n this._dirty = value;\n if (value) {\n if (this.parent) {\n this.parent.dirty = true;\n }\n else if (this.scene) {\n this.scene.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"visible\", {\n get: function () {\n return this._visible;\n },\n set: function (value) {\n if (this._visible !== value) {\n this._visible = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Node.MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; // Number.MAX_SAFE_INTEGER\n return Node;\n}());\nexports.Node = Node;\n//# sourceMappingURL=node.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar path_1 = require(\"../../scene/shape/path\");\nvar bbox_1 = require(\"../../scene/bbox\");\nvar Marker = /** @class */ (function (_super) {\n __extends(Marker, _super);\n function Marker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._x = 0;\n _this._y = 0;\n _this._size = 4;\n return _this;\n }\n Object.defineProperty(Marker.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Marker.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Marker.prototype, \"size\", {\n get: function () {\n return this._size;\n },\n set: function (value) {\n if (this._size !== value) {\n this._size = Math.abs(value);\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Marker.prototype.computeBBox = function () {\n var _a = this, x = _a.x, y = _a.y, size = _a.size;\n var half = size / 2;\n return new bbox_1.BBox(x - half, y - half, size, size);\n };\n return Marker;\n}(path_1.Path));\nexports.Marker = Marker;\n//# sourceMappingURL=marker.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Maps a discrete domain to a continuous numeric range.\n * See https://github.com/d3/d3-scale#band-scales for more info.\n */\nvar BandScale = /** @class */ (function () {\n function BandScale() {\n /**\n * Maps datum to its index in the {@link domain} array.\n * Used to check for duplicate datums (not allowed).\n */\n this.index = new Map();\n /**\n * The output range values for datum at each index.\n */\n this.ordinalRange = [];\n /**\n * Contains unique datums only. Since `{}` is used in place of `Map`\n * for IE11 compatibility, the datums are converted `toString` before\n * the uniqueness check.\n */\n this._domain = [];\n this._range = [0, 1];\n this._bandwidth = 1;\n /**\n * The ratio of the range that is reserved for space between bands.\n */\n this._paddingInner = 0;\n /**\n * The ratio of the range that is reserved for space before the first\n * and after the last band.\n */\n this._paddingOuter = 0;\n this._round = false;\n /**\n * How the leftover range is distributed.\n * `0.5` - equal distribution of space before the first and after the last band,\n * with bands effectively centered within the range.\n */\n this._align = 0.5;\n }\n Object.defineProperty(BandScale.prototype, \"domain\", {\n get: function () {\n return this._domain;\n },\n set: function (values) {\n var domain = this._domain;\n domain.length = 0;\n this.index = new Map();\n var index = this.index;\n // In case one wants to have duplicate domain values, for example, two 'Italy' categories,\n // one should use objects rather than strings for domain values like so:\n // { toString: () => 'Italy' }\n // { toString: () => 'Italy' }\n values.forEach(function (value) {\n if (index.get(value) === undefined) {\n index.set(value, domain.push(value) - 1);\n }\n });\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"range\", {\n get: function () {\n return this._range;\n },\n set: function (values) {\n this._range[0] = values[0];\n this._range[1] = values[1];\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n BandScale.prototype.ticks = function () {\n return this._domain;\n };\n BandScale.prototype.convert = function (d) {\n var i = this.index.get(d);\n if (i === undefined) {\n return NaN;\n }\n var r = this.ordinalRange[i];\n if (r === undefined) {\n return NaN;\n }\n return r;\n };\n Object.defineProperty(BandScale.prototype, \"bandwidth\", {\n get: function () {\n return this._bandwidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"padding\", {\n get: function () {\n return this._paddingInner;\n },\n set: function (value) {\n value = Math.max(0, Math.min(1, value));\n this._paddingInner = value;\n this._paddingOuter = value;\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"paddingInner\", {\n get: function () {\n return this._paddingInner;\n },\n set: function (value) {\n this._paddingInner = Math.max(0, Math.min(1, value)); // [0, 1]\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"paddingOuter\", {\n get: function () {\n return this._paddingOuter;\n },\n set: function (value) {\n this._paddingOuter = Math.max(0, Math.min(1, value)); // [0, 1]\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"round\", {\n get: function () {\n return this._round;\n },\n set: function (value) {\n this._round = value;\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"align\", {\n get: function () {\n return this._align;\n },\n set: function (value) {\n this._align = Math.max(0, Math.min(1, value)); // [0, 1]\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n BandScale.prototype.rescale = function () {\n var _a;\n var n = this._domain.length;\n if (!n) {\n return;\n }\n var _b = this._range, a = _b[0], b = _b[1];\n var reversed = b < a;\n if (reversed) {\n _a = [b, a], a = _a[0], b = _a[1];\n }\n var step = (b - a) / Math.max(1, n - this._paddingInner + this._paddingOuter * 2);\n if (this._round) {\n step = Math.floor(step);\n }\n a += (b - a - step * (n - this._paddingInner)) * this._align;\n this._bandwidth = step * (1 - this._paddingInner);\n if (this._round) {\n a = Math.round(a);\n this._bandwidth = Math.round(this._bandwidth);\n }\n var values = [];\n for (var i = 0; i < n; i++) {\n values.push(a + step * i);\n }\n this.ordinalRange = reversed ? values.reverse() : values;\n };\n return BandScale;\n}());\nexports.BandScale = BandScale;\n//# sourceMappingURL=bandScale.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar miniChart_1 = require(\"./miniChart\");\nvar line_1 = require(\"../../../../../charts/scene/shape/line\");\nvar MiniChartWithAxes = /** @class */ (function (_super) {\n __extends(MiniChartWithAxes, _super);\n function MiniChartWithAxes(parent, tooltipName) {\n var _this = _super.call(this, parent, tooltipName) || this;\n _this.stroke = 'gray';\n _this.axisOvershoot = 3;\n return _this;\n }\n MiniChartWithAxes.prototype.addAxes = function () {\n var size = this.size;\n var padding = this.padding;\n var leftAxis = new line_1.Line();\n leftAxis.x1 = padding;\n leftAxis.y1 = padding;\n leftAxis.x2 = padding;\n leftAxis.y2 = size - padding + this.axisOvershoot;\n leftAxis.stroke = this.stroke;\n var bottomAxis = new line_1.Line();\n bottomAxis.x1 = padding - this.axisOvershoot + 1;\n bottomAxis.y1 = size - padding;\n bottomAxis.x2 = size - padding + 1;\n bottomAxis.y2 = size - padding;\n bottomAxis.stroke = this.stroke;\n var root = this.root;\n root.append(leftAxis);\n root.append(bottomAxis);\n };\n __decorate([\n core_1.PostConstruct\n ], MiniChartWithAxes.prototype, \"addAxes\", null);\n return MiniChartWithAxes;\n}(miniChart_1.MiniChart));\nexports.MiniChartWithAxes = MiniChartWithAxes;\n//# sourceMappingURL=miniChartWithAxes.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar node_1 = require(\"./node\");\nvar EnterNode = /** @class */ (function () {\n function EnterNode(parent, datum) {\n this.next = null;\n this.scene = parent.scene;\n this.parent = parent;\n this.datum = datum;\n }\n EnterNode.prototype.appendChild = function (node) {\n // This doesn't work without the `strict: true` in the `tsconfig.json`,\n // so we must have two `if` checks below, instead of this single one.\n // if (this.next && !Node.isNode(this.next)) {\n // throw new Error(`${this.next} is not a Node.`);\n // }\n if (this.next === null) {\n return this.parent.insertBefore(node, null);\n }\n if (!node_1.Node.isNode(this.next)) {\n throw new Error(this.next + \" is not a Node.\");\n }\n return this.parent.insertBefore(node, this.next);\n };\n EnterNode.prototype.insertBefore = function (node, nextNode) {\n return this.parent.insertBefore(node, nextNode);\n };\n return EnterNode;\n}());\nexports.EnterNode = EnterNode;\n/**\n * G - type of the selected node(s).\n * GDatum - type of the datum of the selected node(s).\n * P - type of the parent node(s).\n * PDatum - type of the datum of the parent node(s).\n */\nvar Selection = /** @class */ (function () {\n function Selection(groups, parents) {\n this.groups = groups;\n this.parents = parents;\n }\n Selection.select = function (node) {\n return new Selection([[typeof node === 'function' ? node() : node]], [undefined]);\n };\n Selection.selectAll = function (nodes) {\n return new Selection([nodes == null ? [] : nodes], [undefined]);\n };\n /**\n * Creates new nodes, appends them to the nodes of this selection and returns them\n * as a new selection. The created nodes inherit the datums and the parents of the nodes\n * they replace.\n * @param Class The constructor function to use to create the new nodes.\n */\n Selection.prototype.append = function (Class) {\n return this.select(function (node) {\n return node.appendChild(new Class());\n });\n };\n /**\n * Same as the {@link append}, but accepts a custom creator function with the\n * {@link NodeSelector} signature rather than a constructor function.\n * @param creator\n */\n Selection.prototype.appendFn = function (creator) {\n return this.select(function (node, data, index, group) {\n return node.appendChild(creator(node, data, index, group));\n });\n };\n /**\n * Runs the given selector that returns a single node for every node in each group.\n * The original nodes are then replaced by the nodes returned by the selector\n * and returned as a new selection.\n * The selected nodes inherit the datums and the parents of the original nodes.\n */\n Selection.prototype.select = function (selector) {\n var groups = this.groups;\n var numGroups = groups.length;\n var subgroups = [];\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var groupSize = group.length;\n var subgroup = subgroups[j] = new Array(groupSize);\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n var subnode = selector(node, node.datum, i, group);\n if (subnode) {\n subnode.datum = node.datum;\n }\n subgroup[i] = subnode;\n }\n // else this can be a group of the `enter` selection,\n // for example, with no nodes at the i-th position,\n // only nodes at the end of the group\n }\n }\n return new Selection(subgroups, this.parents);\n };\n /**\n * Same as {@link select}, but uses the given {@param Class} (constructor) as a selector.\n * @param Class The constructor function to use to find matching nodes.\n */\n Selection.prototype.selectByClass = function (Class) {\n return this.select(function (node) {\n if (node_1.Node.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child instanceof Class) {\n return child;\n }\n }\n }\n });\n };\n Selection.prototype.selectByTag = function (tag) {\n return this.select(function (node) {\n if (node_1.Node.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child.tag === tag) {\n return child;\n }\n }\n }\n });\n };\n Selection.prototype.selectAllByClass = function (Class) {\n return this.selectAll(function (node) {\n var nodes = [];\n if (node_1.Node.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child instanceof Class) {\n nodes.push(child);\n }\n }\n }\n return nodes;\n });\n };\n Selection.prototype.selectAllByTag = function (tag) {\n return this.selectAll(function (node) {\n var nodes = [];\n if (node_1.Node.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child.tag === tag) {\n nodes.push(child);\n }\n }\n }\n return nodes;\n });\n };\n Selection.prototype.selectNone = function () {\n return [];\n };\n /**\n * Runs the given selector that returns a group of nodes for every node in each group.\n * The original nodes are then replaced by the groups of nodes returned by the selector\n * and returned as a new selection. The original nodes become the parent nodes for each\n * group in the new selection. The selected nodes do not inherit the datums of the original nodes.\n * If called without any parameters, creates a new selection with an empty group for each\n * node in this selection.\n */\n Selection.prototype.selectAll = function (selectorAll) {\n if (!selectorAll) {\n selectorAll = this.selectNone;\n }\n // Each subgroup is populated with the selector (run on each group node) results.\n var subgroups = [];\n // In the new selection that we return, subgroups become groups,\n // and group nodes become parents.\n var parents = [];\n var groups = this.groups;\n var groupCount = groups.length;\n for (var j = 0; j < groupCount; j++) {\n var group = groups[j];\n var groupLength = group.length;\n for (var i = 0; i < groupLength; i++) {\n var node = group[i];\n if (node) {\n subgroups.push(selectorAll(node, node.datum, i, group));\n parents.push(node);\n }\n }\n }\n return new Selection(subgroups, parents);\n };\n /**\n * Runs the given callback for every node in this selection and returns this selection.\n * @param cb\n */\n Selection.prototype.each = function (cb) {\n var groups = this.groups;\n var numGroups = groups.length;\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var groupSize = group.length;\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n cb(node, node.datum, i, group);\n }\n }\n }\n return this;\n };\n Selection.prototype.remove = function () {\n return this.each(function (node) {\n if (node_1.Node.isNode(node)) {\n var parent_1 = node.parent;\n if (parent_1) {\n parent_1.removeChild(node);\n }\n }\n });\n };\n Selection.prototype.merge = function (other) {\n var groups0 = this.groups;\n var groups1 = other.groups;\n var m0 = groups0.length;\n var m1 = groups1.length;\n var m = Math.min(m0, m1);\n var merges = new Array(m0);\n var j = 0;\n for (; j < m; j++) {\n var group0 = groups0[j];\n var group1 = groups1[j];\n var n = group0.length;\n var merge = merges[j] = new Array(n);\n for (var i = 0; i < n; i++) {\n var node = group0[i] || group1[i];\n merge[i] = node || undefined;\n }\n }\n for (; j < m0; j++) {\n merges[j] = groups0[j];\n }\n return new Selection(merges, this.parents);\n };\n /**\n * Return the first non-null element in this selection.\n * If the selection is empty, returns null.\n */\n Selection.prototype.node = function () {\n var groups = this.groups;\n var numGroups = groups.length;\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var groupSize = group.length;\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n return node;\n }\n }\n }\n return null;\n };\n Selection.prototype.attr = function (name, value) {\n this.each(function (node) {\n node[name] = value;\n });\n return this;\n };\n Selection.prototype.attrFn = function (name, value) {\n this.each(function (node, datum, index, group) {\n node[name] = value(node, datum, index, group);\n });\n return this;\n };\n /**\n * Invokes the given function once, passing in this selection.\n * Returns this selection. Facilitates method chaining.\n * @param cb\n */\n Selection.prototype.call = function (cb) {\n cb(this);\n return this;\n };\n Object.defineProperty(Selection.prototype, \"size\", {\n /**\n * Returns the total number of nodes in this selection.\n */\n get: function () {\n var size = 0;\n this.each(function () { return size++; });\n return size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Selection.prototype, \"data\", {\n /**\n * Returns the array of data for the selected elements.\n */\n get: function () {\n var data = [];\n this.each(function (_, datum) { return data.push(datum); });\n return data;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Selection.prototype, \"enter\", {\n get: function () {\n return new Selection(this.enterGroups ? this.enterGroups : [[]], this.parents);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Selection.prototype, \"exit\", {\n get: function () {\n return new Selection(this.exitGroups ? this.exitGroups : [[]], this.parents);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Binds the given value to each selected node and returns this selection\n * with its {@link GDatum} type changed to the type of the given value.\n * This method doesn't compute a join and doesn't affect indexes or the enter and exit selections.\n * This method can also be used to clear bound data.\n * @param value\n */\n Selection.prototype.setDatum = function (value) {\n return this.each(function (node) {\n node.datum = value;\n });\n };\n Object.defineProperty(Selection.prototype, \"datum\", {\n /**\n * Returns the bound datum for the first non-null element in the selection.\n * This is generally useful only if you know the selection contains exactly one element.\n */\n get: function () {\n var node = this.node();\n return node ? node.datum : null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Binds the specified array of values with the selected nodes, returning a new selection\n * that represents the _update_ selection: the nodes successfully bound to the values.\n * Also defines the {@link enter} and {@link exit} selections on the returned selection,\n * which can be used to add or remove the nodes to correspond to the new data.\n * The `values` is an array of values of a particular type, or a function that returns\n * an array of values for each group.\n * When values are assigned to the nodes, they are stored in the {@link Node.datum} property.\n * @param values\n * @param key\n */\n Selection.prototype.setData = function (values, key) {\n if (typeof values !== 'function') {\n var data_1 = values;\n values = function () { return data_1; };\n }\n var groups = this.groups;\n var parents = this.parents;\n var numGroups = groups.length;\n var updateGroups = new Array(numGroups);\n var enterGroups = new Array(numGroups);\n var exitGroups = new Array(numGroups);\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var parent_2 = parents[j];\n if (!parent_2) {\n throw new Error(\"Group #\" + j + \" has no parent: \" + group);\n }\n var groupSize = group.length;\n var data = values(parent_2, parent_2.datum, j, parents);\n var dataSize = data.length;\n var enterGroup = enterGroups[j] = new Array(dataSize);\n var updateGroup = updateGroups[j] = new Array(dataSize);\n var exitGroup = exitGroups[j] = new Array(groupSize);\n if (key) {\n this.bindKey(parent_2, group, enterGroup, updateGroup, exitGroup, data, key);\n }\n else {\n this.bindIndex(parent_2, group, enterGroup, updateGroup, exitGroup, data);\n }\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0; i0 < dataSize; i0++) {\n var previous = enterGroup[i0];\n if (previous) {\n if (i0 >= i1) {\n i1 = i0 + 1;\n }\n var next = void 0;\n while (!(next = updateGroup[i1]) && i1 < dataSize) {\n i1++;\n }\n previous.next = next || null;\n }\n }\n }\n var result = new Selection(updateGroups, parents);\n result.enterGroups = enterGroups;\n result.exitGroups = exitGroups;\n return result;\n };\n Selection.prototype.bindIndex = function (parent, group, enter, update, exit, data) {\n var groupSize = group.length;\n var dataSize = data.length;\n var i = 0;\n for (; i < dataSize; i++) {\n var node = group[i];\n if (node) {\n node.datum = data[i];\n update[i] = node;\n }\n else { // more datums than group nodes\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n // more group nodes than datums\n for (; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n exit[i] = node;\n }\n }\n };\n Selection.prototype.bindKey = function (parent, group, enter, update, exit, data, key) {\n var groupSize = group.length;\n var dataSize = data.length;\n var keyValues = new Array(groupSize);\n var nodeByKeyValue = {};\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n var keyValue = keyValues[i] = Selection.keyPrefix + key(node, node.datum, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n }\n else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n // Compute the key for each datum.\n // If there is a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (var i = 0; i < dataSize; i++) {\n var keyValue = Selection.keyPrefix + key(parent, data[i], i, data);\n var node = nodeByKeyValue[keyValue];\n if (node) {\n update[i] = node;\n node.datum = data[i];\n nodeByKeyValue[keyValue] = undefined;\n }\n else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n // Add any remaining nodes that were not bound to data to exit.\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n };\n Selection.keyPrefix = '$'; // Protect against keys like '__proto__'.\n return Selection;\n}());\nexports.Selection = Selection;\n//# sourceMappingURL=selection.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shape_1 = require(\"./shape\");\nvar path2D_1 = require(\"../path2D\");\nvar Path = /** @class */ (function (_super) {\n __extends(Path, _super);\n function Path() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Declare a path to retain for later rendering and hit testing\n * using custom Path2D class. Think of it as a TypeScript version\n * of the native Path2D (with some differences) that works in all browsers.\n */\n _this.path = new path2D_1.Path2D();\n /**\n * The path only has to be updated when certain attributes change.\n * For example, if transform attributes (such as `translationX`)\n * are changed, we don't have to update the path. The `dirtyPath` flag\n * is how we keep track if the path has to be updated or not.\n */\n _this._dirtyPath = true;\n /**\n * Path definition in SVG path syntax:\n * https://www.w3.org/TR/SVG11/paths.html#DAttribute\n */\n _this._svgPath = '';\n return _this;\n }\n Object.defineProperty(Path.prototype, \"dirtyPath\", {\n get: function () {\n return this._dirtyPath;\n },\n set: function (value) {\n if (this._dirtyPath !== value) {\n this._dirtyPath = value;\n if (value) {\n this.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Path.prototype, \"svgPath\", {\n get: function () {\n return this._svgPath;\n },\n set: function (value) {\n if (this._svgPath !== value) {\n this._svgPath = value;\n this.path.setFromString(value);\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Path.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n return this.path.closedPath && this.path.isPointInPath(point.x, point.y);\n };\n Path.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Path.prototype.updatePath = function () { };\n Path.prototype.render = function (ctx) {\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n // this.matrix.transformBBox(this.computeBBox()!).render(ctx);\n this.matrix.toContext(ctx);\n if (this.dirtyPath) {\n this.updatePath();\n this.dirtyPath = false;\n }\n this.scene.appendPath(this.path);\n this.fillStroke(ctx);\n this.dirty = false;\n };\n Path.className = 'Path';\n return Path;\n}(shape_1.Shape));\nexports.Path = Path;\n//# sourceMappingURL=path.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// Common time unit sizes in milliseconds.\nexports.durationSecond = 1000;\nexports.durationMinute = exports.durationSecond * 60;\nexports.durationHour = exports.durationMinute * 60;\nexports.durationDay = exports.durationHour * 24;\nexports.durationWeek = exports.durationDay * 7;\nexports.durationMonth = exports.durationDay * 30;\nexports.durationYear = exports.durationDay * 365;\n//# sourceMappingURL=duration.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.borneo = {\n fills: [\n '#f3622d',\n '#fba71b',\n '#57b757',\n '#41a9c9',\n '#4258c9',\n '#9a42c8',\n '#c84164',\n '#888888'\n ],\n strokes: [\n '#aa4520',\n '#b07513',\n '#3d803d',\n '#2d768d',\n '#2e3e8d',\n '#6c2e8c',\n '#8c2d46',\n '#5f5f5f'\n ]\n};\nexports.material = {\n fills: [\n '#f44336',\n '#e91e63',\n '#9c27b0',\n '#673ab7',\n '#3f51b5',\n '#2196f3',\n '#03a9f4',\n '#00bcd4',\n '#009688',\n '#4caf50',\n '#8bc34a',\n '#cddc39',\n '#ffeb3b',\n '#ffc107',\n '#ff9800',\n '#ff5722'\n ],\n strokes: [\n '#ab2f26',\n '#a31545',\n '#6d1b7b',\n '#482980',\n '#2c397f',\n '#1769aa',\n '#0276ab',\n '#008494',\n '#00695f',\n '#357a38',\n '#618834',\n '#909a28',\n '#b3a429',\n '#b38705',\n '#b36a00',\n '#b33d18'\n ]\n};\nexports.pastel = {\n fills: [\n '#c16068',\n '#a2bf8a',\n '#ebcc87',\n '#80a0c3',\n '#b58dae',\n '#85c0d1'\n ],\n strokes: [\n '#874349',\n '#718661',\n '#a48f5f',\n '#5a7088',\n '#7f637a',\n '#5d8692'\n ]\n};\nexports.bright = {\n fills: [\n '#5BC0EB',\n '#FDE74C',\n '#9BC53D',\n '#E55934',\n '#FA7921',\n '#fa3081'\n ],\n strokes: [\n '#4086a4',\n '#b1a235',\n '#6c8a2b',\n '#a03e24',\n '#af5517',\n '#af225a'\n ]\n};\nexports.flat = {\n fills: [\n '#febe76',\n '#ff7979',\n '#badc58',\n '#f9ca23',\n '#f0932b',\n '#eb4c4b',\n '#6ab04c',\n '#7ed6df',\n '#e056fd',\n '#686de0'\n ],\n strokes: [\n '#b28553',\n '#b35555',\n '#829a3e',\n '#ae8d19',\n '#a8671e',\n '#a43535',\n '#4a7b35',\n '#58969c',\n '#9d3cb1',\n '#494c9d'\n ]\n};\nexports.default = exports.borneo;\nexports.palettes = (function () {\n var map = new Map();\n map.set('borneo', exports.borneo);\n map.set('material', exports.material);\n map.set('pastel', exports.pastel);\n map.set('bright', exports.bright);\n map.set('flat', exports.flat);\n return map;\n})();\n//# sourceMappingURL=palettes.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar node_1 = require(\"../node\");\nvar object_1 = require(\"../../util/object\");\nvar Shape = /** @class */ (function (_super) {\n __extends(Shape, _super);\n function Shape() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastInstanceId = 0;\n _this._fillOpacity = 1;\n _this._strokeOpacity = 1;\n _this._fill = Shape.defaultStyles.fill;\n /**\n * Note that `strokeStyle = null` means invisible stroke,\n * while `lineWidth = 0` means no stroke, and sometimes this can mean different things.\n * For example, a rect shape with an invisible stroke may not align to the pixel grid\n * properly because the stroke affects the rules of alignment, and arc shapes forming\n * a pie chart will have a gap between them if they have an invisible stroke, whereas\n * there would be not gap if there was no stroke at all.\n * The preferred way of making the stroke invisible is setting the `lineWidth` to zero,\n * unless specific looks that is achieved by having an invisible stroke is desired.\n */\n _this._stroke = Shape.defaultStyles.stroke;\n _this._strokeWidth = Shape.defaultStyles.strokeWidth;\n _this._lineDash = Shape.defaultStyles.lineDash;\n _this._lineDashOffset = Shape.defaultStyles.lineDashOffset;\n _this._lineCap = Shape.defaultStyles.lineCap;\n _this._lineJoin = Shape.defaultStyles.lineJoin;\n _this._opacity = Shape.defaultStyles.opacity;\n _this.onShadowChange = function () {\n _this.dirty = true;\n };\n _this._fillShadow = Shape.defaultStyles.fillShadow;\n _this._strokeShadow = Shape.defaultStyles.strokeShadow;\n return _this;\n }\n /**\n * Creates a light-weight instance of the given shape (that serves as a template).\n * The created instance only stores the properites set on the instance itself\n * and the rest of the properties come via the prototype chain from the template.\n * This can greatly reduce memory usage in cases where one has many simular shapes,\n * for example, circles of different size, position and color. The exact memory usage\n * reduction will depend on the size of the template and the number of own properties\n * set on its lightweight instances, but will typically be around an order of magnitude\n * or more.\n *\n * Note: template shapes are not supposed to be part of the scene graph (they should not\n * have a parent).\n *\n * @param template\n */\n Shape.createInstance = function (template) {\n var shape = Object.create(template);\n shape._setParent(undefined);\n shape.id = template.id + '-Instance-' + String(++template.lastInstanceId);\n return shape;\n };\n /**\n * Restores the default styles introduced by this subclass.\n */\n Shape.prototype.restoreOwnStyles = function () {\n var styles = this.constructor.defaultStyles;\n var keys = Object.getOwnPropertyNames(styles);\n // getOwnPropertyNames is about 2.5 times faster than\n // for..in with the hasOwnProperty check and in this\n // case, where most properties are inherited, can be\n // more then an order of magnitude faster.\n for (var i = 0, n = keys.length; i < n; i++) {\n var key = keys[i];\n this[key] = styles[key];\n }\n };\n Shape.prototype.restoreAllStyles = function () {\n var styles = this.constructor.defaultStyles;\n for (var property in styles) {\n this[property] = styles[property];\n }\n };\n /**\n * Restores the base class default styles that have been overridden by this subclass.\n */\n Shape.prototype.restoreOverriddenStyles = function () {\n var styles = this.constructor.defaultStyles;\n var protoStyles = Object.getPrototypeOf(styles);\n for (var property in styles) {\n if (styles.hasOwnProperty(property) && protoStyles.hasOwnProperty(property)) {\n this[property] = styles[property];\n }\n }\n };\n Object.defineProperty(Shape.prototype, \"fillOpacity\", {\n get: function () {\n return this._fillOpacity;\n },\n set: function (value) {\n if (this._fillOpacity !== value) {\n this._fillOpacity = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"strokeOpacity\", {\n get: function () {\n return this._strokeOpacity;\n },\n set: function (value) {\n if (this._strokeOpacity !== value) {\n this._strokeOpacity = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"fill\", {\n get: function () {\n return this._fill;\n },\n set: function (value) {\n if (this._fill !== value) {\n this._fill = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"stroke\", {\n get: function () {\n return this._stroke;\n },\n set: function (value) {\n if (this._stroke !== value) {\n this._stroke = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"strokeWidth\", {\n get: function () {\n return this._strokeWidth;\n },\n set: function (value) {\n if (this._strokeWidth !== value) {\n this._strokeWidth = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"lineDash\", {\n get: function () {\n return this._lineDash;\n },\n set: function (value) {\n var oldValue = this._lineDash;\n if (oldValue !== value) {\n if (oldValue && value && oldValue.length === value.length) {\n var identical = true;\n var n = value.length;\n for (var i = 0; i < n; i++) {\n if (oldValue[i] !== value[i]) {\n identical = false;\n break;\n }\n }\n if (identical) {\n return;\n }\n }\n this._lineDash = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"lineDashOffset\", {\n get: function () {\n return this._lineDashOffset;\n },\n set: function (value) {\n if (this._lineDashOffset !== value) {\n this._lineDashOffset = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"lineCap\", {\n get: function () {\n return this._lineCap;\n },\n set: function (value) {\n if (this._lineCap !== value) {\n this._lineCap = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"lineJoin\", {\n get: function () {\n return this._lineJoin;\n },\n set: function (value) {\n if (this._lineJoin !== value) {\n this._lineJoin = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"opacity\", {\n get: function () {\n return this._opacity;\n },\n set: function (value) {\n value = Math.min(1, Math.max(0, value));\n if (this._opacity !== value) {\n this._opacity = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"fillShadow\", {\n get: function () {\n return this._fillShadow;\n },\n set: function (value) {\n var oldValue = this._fillShadow;\n if (oldValue !== value) {\n if (oldValue) {\n oldValue.removeEventListener('change', this.onShadowChange);\n }\n if (value) {\n value.addEventListener('change', this.onShadowChange);\n }\n this._fillShadow = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"strokeShadow\", {\n get: function () {\n return this._strokeShadow;\n },\n set: function (value) {\n var oldValue = this._strokeShadow;\n if (oldValue !== value) {\n if (oldValue) {\n oldValue.removeEventListener('change', this.onShadowChange);\n }\n if (value) {\n value.addEventListener('change', this.onShadowChange);\n }\n this._strokeShadow = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Shape.prototype.fillStroke = function (ctx) {\n if (!this.scene) {\n return;\n }\n var pixelRatio = this.scene.canvas.pixelRatio || 1;\n if (this.fill) {\n ctx.fillStyle = this.fill;\n ctx.globalAlpha = this.opacity * this.fillOpacity;\n // The canvas context scaling (depends on the device's pixel ratio)\n // has no effect on shadows, so we have to account for the pixel ratio\n // manually here.\n var fillShadow = this.fillShadow;\n if (fillShadow && fillShadow.enabled) {\n ctx.shadowColor = fillShadow.color;\n ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n ctx.shadowBlur = fillShadow.blur * pixelRatio;\n }\n ctx.fill();\n }\n ctx.shadowColor = 'rgba(0, 0, 0, 0)';\n if (this.stroke && this.strokeWidth) {\n ctx.strokeStyle = this.stroke;\n ctx.globalAlpha = this.opacity * this.strokeOpacity;\n ctx.lineWidth = this.strokeWidth;\n if (this.lineDash) {\n ctx.setLineDash(this.lineDash);\n }\n if (this.lineDashOffset) {\n ctx.lineDashOffset = this.lineDashOffset;\n }\n if (this.lineCap) {\n ctx.lineCap = this.lineCap;\n }\n if (this.lineJoin) {\n ctx.lineJoin = this.lineJoin;\n }\n var strokeShadow = this.strokeShadow;\n if (strokeShadow && strokeShadow.enabled) {\n ctx.shadowColor = strokeShadow.color;\n ctx.shadowOffsetX = strokeShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = strokeShadow.yOffset * pixelRatio;\n ctx.shadowBlur = strokeShadow.blur * pixelRatio;\n }\n ctx.stroke();\n }\n };\n Shape.prototype.isPointInNode = function (x, y) {\n return this.isPointInPath(x, y);\n };\n /**\n * Defaults for style properties. Note that properties that affect the position\n * and shape of the node are not considered style properties, for example:\n * `x`, `y`, `width`, `height`, `radius`, `rotation`, etc.\n * Can be used to reset to the original styling after some custom styling\n * has been applied (using the `restoreOwnStyles` and `restoreAllStyles` methods).\n * These static defaults are meant to be inherited by subclasses.\n */\n Shape.defaultStyles = object_1.chainObjects({}, {\n fill: 'black',\n stroke: undefined,\n strokeWidth: 0,\n lineDash: undefined,\n lineDashOffset: 0,\n lineCap: null,\n lineJoin: null,\n opacity: 1,\n fillShadow: undefined,\n strokeShadow: undefined\n });\n return Shape;\n}(node_1.Node));\nexports.Shape = Shape;\n//# sourceMappingURL=shape.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isEqual(a, b, epsilon) {\n if (epsilon === void 0) { epsilon = 1e-10; }\n return Math.abs(a - b) < epsilon;\n}\nexports.isEqual = isEqual;\n/**\n * `Number.toFixed(n)` always formats a number so that it has `n` digits after the decimal point.\n * For example, `Number(0.00003427).toFixed(2)` returns `0.00`.\n * That's not very helpful, because all the meaningful information is lost.\n * In this case we would want the formatted value to have at least two significant digits: `0.000034`,\n * not two fraction digits.\n * @param value\n * @param fractionOrSignificantDigits\n */\nfunction toFixed(value, fractionOrSignificantDigits) {\n if (fractionOrSignificantDigits === void 0) { fractionOrSignificantDigits = 2; }\n var power = Math.floor(Math.log(Math.abs(value)) / Math.LN10);\n if (power >= 0 || !isFinite(power)) {\n return value.toFixed(fractionOrSignificantDigits); // fraction digits\n }\n return value.toFixed(Math.abs(power) - 1 + fractionOrSignificantDigits); // significant digits\n}\nexports.toFixed = toFixed;\nvar numberUnits = [\"\", \"K\", \"M\", \"B\", \"T\"];\nfunction toReadableNumber(value, fractionDigits) {\n if (fractionDigits === void 0) { fractionDigits = 2; }\n // For example: toReadableNumber(10550000000) yields \"10.6B\"\n var prefix = '';\n if (value <= 0) {\n value = -value;\n prefix = '-';\n }\n var thousands = ~~(Math.log10(value) / Math.log10(1000)); // discard the floating point part\n return prefix + (value / Math.pow(1000.0, thousands)).toFixed(fractionDigits) + numberUnits[thousands];\n}\nexports.toReadableNumber = toReadableNumber;\n//# sourceMappingURL=number.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar twoPi = Math.PI * 2;\n/**\n * Normalize the given angle to be in the [0, 2π) interval.\n * @param radians Angle in radians.\n */\nfunction normalizeAngle360(radians) {\n radians %= twoPi;\n radians += twoPi;\n radians %= twoPi;\n return radians;\n}\nexports.normalizeAngle360 = normalizeAngle360;\nfunction normalizeAngle360Inclusive(radians) {\n radians %= twoPi;\n radians += twoPi;\n if (radians !== twoPi) {\n radians %= twoPi;\n }\n return radians;\n}\nexports.normalizeAngle360Inclusive = normalizeAngle360Inclusive;\n/**\n * Normalize the given angle to be in the [-π, π) interval.\n * @param radians Angle in radians.\n */\nfunction normalizeAngle180(radians) {\n radians %= twoPi;\n if (radians < -Math.PI) {\n radians += twoPi;\n }\n else if (radians >= Math.PI) {\n radians -= twoPi;\n }\n return radians;\n}\nexports.normalizeAngle180 = normalizeAngle180;\nfunction toRadians(degrees) {\n return degrees / 180 * Math.PI;\n}\nexports.toRadians = toRadians;\nfunction toDegrees(radians) {\n return radians / Math.PI * 180;\n}\nexports.toDegrees = toDegrees;\n//# sourceMappingURL=angle.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shape_1 = require(\"./shape\");\nvar object_1 = require(\"../../util/object\");\nvar bbox_1 = require(\"../bbox\");\nvar Text = /** @class */ (function (_super) {\n __extends(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._x = 0;\n _this._y = 0;\n _this.lineBreakRegex = /\\r?\\n/g;\n _this.lines = [];\n _this._text = '';\n _this._dirtyFont = true;\n _this._fontSize = 10;\n _this._fontFamily = 'sans-serif';\n _this._textAlign = Text.defaultStyles.textAlign;\n _this._textBaseline = Text.defaultStyles.textBaseline;\n _this._lineHeight = 14;\n return _this;\n }\n Object.defineProperty(Text.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Text.prototype.splitText = function () {\n this.lines = this._text.split(this.lineBreakRegex);\n };\n Object.defineProperty(Text.prototype, \"text\", {\n get: function () {\n return this._text;\n },\n set: function (value) {\n var str = String(value); // `value` can be an object here\n if (this._text !== str) {\n this._text = str;\n this.splitText();\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"font\", {\n get: function () {\n if (this.dirtyFont) {\n this.dirtyFont = false;\n this._font = [\n this.fontStyle || '',\n this.fontWeight || '',\n this.fontSize + 'px',\n this.fontFamily\n ].join(' ').trim();\n }\n return this._font;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"dirtyFont\", {\n get: function () {\n return this._dirtyFont;\n },\n set: function (value) {\n if (this._dirtyFont !== value) {\n this._dirtyFont = value;\n if (value) {\n this.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontStyle\", {\n get: function () {\n return this._fontStyle;\n },\n set: function (value) {\n if (this._fontStyle !== value) {\n this._fontStyle = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontWeight\", {\n get: function () {\n return this._fontWeight;\n },\n set: function (value) {\n if (this._fontWeight !== value) {\n this._fontWeight = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontSize\", {\n get: function () {\n return this._fontSize;\n },\n set: function (value) {\n if (!isFinite(value)) {\n value = 10;\n }\n if (this._fontSize !== value) {\n this._fontSize = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontFamily\", {\n get: function () {\n return this._fontFamily;\n },\n set: function (value) {\n if (this._fontFamily !== value) {\n this._fontFamily = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"textAlign\", {\n get: function () {\n return this._textAlign;\n },\n set: function (value) {\n if (this._textAlign !== value) {\n this._textAlign = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"textBaseline\", {\n get: function () {\n return this._textBaseline;\n },\n set: function (value) {\n if (this._textBaseline !== value) {\n this._textBaseline = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"lineHeight\", {\n get: function () {\n return this._lineHeight;\n },\n set: function (value) {\n // Multi-line text is complicated because:\n // - Canvas does not support it natively, so we have to implement it manually\n // - need to know the height of each line -> need to parse the font shorthand ->\n // generally impossible to do because font size may not be in pixels\n // - so, need to measure the text instead, each line individually -> expensive\n // - or make the user provide the line height manually for multi-line text\n // - computeBBox should use the lineHeight for multi-line text but ignore it otherwise\n // - textBaseline kind of loses its meaning for multi-line text\n if (this._lineHeight !== value) {\n this._lineHeight = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Text.prototype.computeBBox = function () {\n return this.scene\n ? this.scene.canvas.has.textMetrics\n ? this.getPreciseBBox()\n : this.getApproximateBBox()\n : undefined;\n };\n Text.prototype.getPreciseBBox = function () {\n var metrics = this.scene.canvas.measureText(this.text, this.font, this.textBaseline, this.textAlign);\n return new bbox_1.BBox(this.x - metrics.actualBoundingBoxLeft, this.y - metrics.actualBoundingBoxAscent, metrics.width, metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent);\n };\n Text.prototype.getApproximateBBox = function () {\n var size = this.scene.canvas.getTextSize(this.text, this.font);\n var _a = this, x = _a.x, y = _a.y;\n switch (this.textAlign) {\n case 'end':\n case 'right':\n x -= size.width;\n break;\n case 'center':\n x -= size.width / 2;\n }\n switch (this.textBaseline) {\n case 'alphabetic':\n y -= size.height * 0.7;\n break;\n case 'middle':\n y -= size.height * 0.45;\n break;\n case 'ideographic':\n y -= size.height;\n break;\n case 'hanging':\n y -= size.height * 0.2;\n break;\n case 'bottom':\n y -= size.height;\n break;\n }\n return new bbox_1.BBox(x, y, size.width, size.height);\n };\n Text.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return bbox ? bbox.containsPoint(point.x, point.y) : false;\n };\n Text.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Text.prototype.render = function (ctx) {\n if (!this.lines.length) {\n return;\n }\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n // this.matrix.transformBBox(this.computeBBox!()).render(ctx); // debug\n this.matrix.toContext(ctx);\n var _a = this, opacity = _a.opacity, fill = _a.fill, stroke = _a.stroke, strokeWidth = _a.strokeWidth;\n if (opacity < 1) {\n ctx.globalAlpha = opacity;\n }\n ctx.font = this.font;\n ctx.textAlign = this.textAlign;\n ctx.textBaseline = this.textBaseline;\n var pixelRatio = this.scene.canvas.pixelRatio || 1;\n if (fill) {\n ctx.fillStyle = fill;\n var _b = this, fillShadow = _b.fillShadow, text = _b.text, x = _b.x, y = _b.y;\n if (fillShadow && fillShadow.enabled) {\n ctx.shadowColor = fillShadow.color;\n ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n ctx.shadowBlur = fillShadow.blur * pixelRatio;\n }\n ctx.fillText(text, x, y);\n }\n if (stroke && strokeWidth) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n var _c = this, lineDash = _c.lineDash, lineDashOffset = _c.lineDashOffset, lineCap = _c.lineCap, lineJoin = _c.lineJoin, strokeShadow = _c.strokeShadow, text = _c.text, x = _c.x, y = _c.y;\n if (lineDash) {\n ctx.setLineDash(lineDash);\n }\n if (lineDashOffset) {\n ctx.lineDashOffset = lineDashOffset;\n }\n if (lineCap) {\n ctx.lineCap = lineCap;\n }\n if (lineJoin) {\n ctx.lineJoin = lineJoin;\n }\n if (strokeShadow && strokeShadow.enabled) {\n ctx.shadowColor = strokeShadow.color;\n ctx.shadowOffsetX = strokeShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = strokeShadow.yOffset * pixelRatio;\n ctx.shadowBlur = strokeShadow.blur * pixelRatio;\n }\n ctx.strokeText(text, x, y);\n }\n this.dirty = false;\n };\n Text.className = 'Text';\n Text.defaultStyles = object_1.chainObjects(shape_1.Shape.defaultStyles, {\n textAlign: 'start',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 10,\n fontFamily: 'sans-serif',\n textBaseline: 'alphabetic'\n });\n return Text;\n}(shape_1.Shape));\nexports.Text = Text;\n//# sourceMappingURL=text.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cartesianChart_1 = require(\"./chart/cartesianChart\");\nvar polarChart_1 = require(\"./chart/polarChart\");\nvar lineSeries_1 = require(\"./chart/series/cartesian/lineSeries\");\nvar scatterSeries_1 = require(\"./chart/series/cartesian/scatterSeries\");\nvar columnSeries_1 = require(\"./chart/series/cartesian/columnSeries\");\nvar areaSeries_1 = require(\"./chart/series/cartesian/areaSeries\");\nvar pieSeries_1 = require(\"./chart/series/polar/pieSeries\");\nvar dropShadow_1 = require(\"./scene/dropShadow\");\nvar categoryAxis_1 = require(\"./chart/axis/categoryAxis\");\nvar numberAxis_1 = require(\"./chart/axis/numberAxis\");\nvar padding_1 = require(\"./util/padding\");\nvar caption_1 = require(\"./caption\");\nvar groupedCategoryAxis_1 = require(\"./chart/axis/groupedCategoryAxis\");\nvar groupedCategoryChart_1 = require(\"./chart/groupedCategoryChart\");\nvar circle_1 = require(\"./chart/marker/circle\");\nvar cross_1 = require(\"./chart/marker/cross\");\nvar diamond_1 = require(\"./chart/marker/diamond\");\nvar plus_1 = require(\"./chart/marker/plus\");\nvar square_1 = require(\"./chart/marker/square\");\nvar triangle_1 = require(\"./chart/marker/triangle\");\nvar chartAxis_1 = require(\"./chart/chartAxis\");\nvar map_1 = require(\"./util/map\");\nvar timeAxis_1 = require(\"./chart/axis/timeAxis\");\nvar ChartBuilder = /** @class */ (function () {\n function ChartBuilder() {\n }\n ChartBuilder.createCartesianChart = function (parent, xAxis, yAxis, document) {\n var chart = new cartesianChart_1.CartesianChart(document);\n chart.parent = parent;\n xAxis.position = chartAxis_1.ChartAxisPosition.Bottom;\n yAxis.position = chartAxis_1.ChartAxisPosition.Left;\n chart.axes = [xAxis, yAxis];\n return chart;\n };\n ChartBuilder.createGroupedCategoryChart = function (parent, xAxis, yAxis, document) {\n var chart = new groupedCategoryChart_1.GroupedCategoryChart(document);\n chart.parent = parent;\n xAxis.position = chartAxis_1.ChartAxisPosition.Bottom;\n yAxis.position = chartAxis_1.ChartAxisPosition.Left;\n chart.axes = [xAxis, yAxis];\n return chart;\n };\n ChartBuilder.createBarChart = function (parent, options) {\n var chart = this.createCartesianChart(parent, ChartBuilder.createNumberAxis(options.xAxis), ChartBuilder.createCategoryAxis(options.yAxis), options.document);\n chart.layout = cartesianChart_1.CartesianChartLayout.Horizontal;\n ChartBuilder.initChart(chart, options);\n if (options.series) {\n chart.series = options.series.map(function (s) { return ChartBuilder.initBarSeries(new columnSeries_1.ColumnSeries(), s); });\n }\n return chart;\n };\n ChartBuilder.createColumnChart = function (parent, options) {\n var chart = this.createCartesianChart(parent, ChartBuilder.createCategoryAxis(options.xAxis), ChartBuilder.createNumberAxis(options.yAxis), options.document);\n ChartBuilder.initChart(chart, options);\n if (options.series) {\n chart.series = options.series.map(function (s) { return ChartBuilder.initBarSeries(new columnSeries_1.ColumnSeries(), s); });\n }\n return chart;\n };\n ChartBuilder.createLineChart = function (parent, options) {\n var chart = this.createCartesianChart(parent, ChartBuilder.createAxis(options.xAxis, 'category'), ChartBuilder.createAxis(options.yAxis, 'number'), options.document);\n ChartBuilder.initChart(chart, options);\n if (options.series) {\n chart.series = options.series.map(function (s) { return ChartBuilder.initLineSeries(new lineSeries_1.LineSeries(), s); });\n }\n return chart;\n };\n ChartBuilder.createScatterChart = function (parent, options) {\n var chart = this.createCartesianChart(parent, ChartBuilder.createAxis(options.xAxis, 'number'), ChartBuilder.createAxis(options.yAxis, 'number'), options.document);\n ChartBuilder.initChart(chart, options);\n if (options.series) {\n chart.series = options.series.map(function (s) { return ChartBuilder.initScatterSeries(new scatterSeries_1.ScatterSeries(), s); });\n }\n return chart;\n };\n ChartBuilder.createAreaChart = function (parent, options) {\n var chart = this.createCartesianChart(parent, ChartBuilder.createCategoryAxis(options.xAxis), ChartBuilder.createNumberAxis(options.yAxis), options.document);\n ChartBuilder.initChart(chart, options);\n if (options.series) {\n chart.series = options.series.map(function (s) { return ChartBuilder.initAreaSeries(new areaSeries_1.AreaSeries(), s); });\n }\n return chart;\n };\n ChartBuilder.createPolarChart = function (parent) {\n var chart = new polarChart_1.PolarChart();\n chart.parent = parent;\n return chart;\n };\n ChartBuilder.createDoughnutChart = function (parent, options) {\n return this.createPieChart(parent, options);\n };\n ChartBuilder.createPieChart = function (parent, options) {\n var chart = this.createPolarChart(parent);\n ChartBuilder.initChart(chart, options);\n if (options.series) {\n chart.series = options.series.map(function (s) { return ChartBuilder.initPieSeries(new pieSeries_1.PieSeries(), s); });\n }\n return chart;\n };\n ChartBuilder.createGroupedColumnChart = function (parent, options) {\n var chart = this.createGroupedCategoryChart(parent, ChartBuilder.createGroupedAxis(options.xAxis), ChartBuilder.createNumberAxis(options.yAxis), options.document);\n ChartBuilder.initChart(chart, options);\n if (options.series) {\n chart.series = options.series.map(function (s) { return ChartBuilder.initBarSeries(new columnSeries_1.ColumnSeries(), s); });\n }\n return chart;\n };\n ChartBuilder.createGroupedBarChart = function (parent, options) {\n var chart = this.createGroupedCategoryChart(parent, ChartBuilder.createNumberAxis(options.xAxis), ChartBuilder.createGroupedAxis(options.yAxis), options.document);\n chart.layout = cartesianChart_1.CartesianChartLayout.Horizontal;\n ChartBuilder.initChart(chart, options);\n if (options.series) {\n chart.series = options.series.map(function (s) { return ChartBuilder.initBarSeries(new columnSeries_1.ColumnSeries(), s); });\n }\n return chart;\n };\n ChartBuilder.createGroupedLineChart = function (parent, options) {\n var chart = this.createGroupedCategoryChart(parent, ChartBuilder.createGroupedAxis(options.xAxis), ChartBuilder.createNumberAxis(options.yAxis), options.document);\n ChartBuilder.initChart(chart, options);\n if (options.series) {\n chart.series = options.series.map(function (s) { return ChartBuilder.initLineSeries(new lineSeries_1.LineSeries(), s); });\n }\n return chart;\n };\n ChartBuilder.createGroupedAreaChart = function (parent, options) {\n var chart = this.createGroupedCategoryChart(parent, ChartBuilder.createGroupedAxis(options.xAxis), ChartBuilder.createNumberAxis(options.yAxis), options.document);\n ChartBuilder.initChart(chart, options);\n if (options.series) {\n chart.series = options.series.map(function (s) { return ChartBuilder.initAreaSeries(new areaSeries_1.AreaSeries(), s); });\n }\n return chart;\n };\n ChartBuilder.createSeries = function (options) {\n switch (options && options.type) {\n case 'line':\n return ChartBuilder.initLineSeries(new lineSeries_1.LineSeries(), options);\n case 'scatter':\n return ChartBuilder.initScatterSeries(new scatterSeries_1.ScatterSeries(), options);\n case 'bar':\n return ChartBuilder.initBarSeries(new columnSeries_1.ColumnSeries(), options);\n case 'area':\n return ChartBuilder.initAreaSeries(new areaSeries_1.AreaSeries(), options);\n case 'pie':\n return ChartBuilder.initPieSeries(new pieSeries_1.PieSeries(), options);\n default:\n return null;\n }\n };\n ChartBuilder.initChart = function (chart, options) {\n this.setValueIfExists(chart, 'width', options.width);\n this.setValueIfExists(chart, 'height', options.height);\n this.setValueIfExists(chart, 'tooltipClass', options.tooltipClass);\n this.setTransformedValueIfExists(chart, 'title', function (t) { return ChartBuilder.createTitle(t); }, options.title);\n this.setTransformedValueIfExists(chart, 'subtitle', function (t) { return ChartBuilder.createSubtitle(t); }, options.subtitle);\n this.setTransformedValueIfExists(chart, 'padding', function (p) { return new padding_1.Padding(p.top, p.right, p.bottom, p.left); }, options.padding);\n if (options.background) {\n this.setValueIfExists(chart.background, 'fill', options.background.fill);\n this.setValueIfExists(chart.background, 'visible', options.background.visible);\n }\n if (options.legend !== undefined) {\n ChartBuilder.initLegend(chart.legend, options.legend);\n }\n return chart;\n };\n ChartBuilder.initSeries = function (series, options) {\n this.setValueIfExists(series, 'visible', options.visible);\n this.setValueIfExists(series, 'showInLegend', options.showInLegend);\n this.setValueIfExists(series, 'data', options.data);\n return series;\n };\n ChartBuilder.initLineSeries = function (series, options) {\n ChartBuilder.initSeries(series, options);\n this.setValueIfExists(series, 'title', options.title);\n var field = options.field, fill = options.fill, stroke = options.stroke, highlightStyle = options.highlightStyle, marker = options.marker, tooltip = options.tooltip;\n if (field) {\n this.setValueIfExists(series, 'xKey', field.xKey);\n this.setValueIfExists(series, 'xName', field.xName);\n this.setValueIfExists(series, 'yKey', field.yKey);\n this.setValueIfExists(series, 'yName', field.yName);\n }\n if (fill) {\n this.setValueIfExists(series, 'fill', fill.color);\n // default marker to same fill as series\n this.setValueIfExists(series.marker, 'fill', fill.color);\n }\n if (stroke) {\n this.setValueIfExists(series, 'stroke', stroke.color);\n this.setValueIfExists(series, 'strokeWidth', stroke.width);\n // default marker to same stroke as series\n this.setValueIfExists(series.marker, 'stroke', stroke.color);\n this.setValueIfExists(series.marker, 'strokeWidth', stroke.width);\n }\n if (highlightStyle) {\n this.initHighlightStyle(series.highlightStyle, highlightStyle);\n }\n if (marker) {\n this.initMarker(series.marker, marker);\n }\n if (tooltip) {\n this.setValueIfExists(series, 'tooltipEnabled', tooltip.enabled);\n this.setValueIfExists(series, 'tooltipRenderer', tooltip.renderer);\n }\n return series;\n };\n ChartBuilder.initScatterSeries = function (series, options) {\n ChartBuilder.initSeries(series, options);\n this.setValueIfExists(series, 'title', options.title);\n var field = options.field, fill = options.fill, stroke = options.stroke, highlightStyle = options.highlightStyle, marker = options.marker, tooltip = options.tooltip;\n if (field) {\n this.setValueIfExists(series, 'xKey', field.xKey);\n this.setValueIfExists(series, 'xName', field.xName);\n this.setValueIfExists(series, 'yKey', field.yKey);\n this.setValueIfExists(series, 'yName', field.yName);\n this.setValueIfExists(series, 'sizeKey', field.sizeKey);\n this.setValueIfExists(series, 'sizeName', field.sizeName);\n this.setValueIfExists(series, 'labelKey', field.labelKey);\n this.setValueIfExists(series, 'labelName', field.labelName);\n }\n if (fill) {\n // default marker to same fill as series\n this.setValueIfExists(series.marker, 'fill', fill.color);\n }\n if (stroke) {\n // default marker to same stroke as series\n this.setValueIfExists(series.marker, 'stroke', stroke.color);\n this.setValueIfExists(series.marker, 'strokeWidth', stroke.width);\n }\n if (highlightStyle) {\n this.initHighlightStyle(series.highlightStyle, highlightStyle);\n }\n if (marker) {\n this.initMarker(series.marker, marker);\n }\n if (tooltip) {\n this.setValueIfExists(series, 'tooltipEnabled', tooltip.enabled);\n this.setValueIfExists(series, 'tooltipRenderer', tooltip.renderer);\n }\n return series;\n };\n ChartBuilder.initLabelOptions = function (series, options) {\n this.setValueIfExists(series, 'enabled', options.enabled);\n this.setValueIfExists(series, 'fontStyle', options.fontStyle);\n this.setValueIfExists(series, 'fontWeight', options.fontWeight);\n this.setValueIfExists(series, 'fontSize', options.fontSize);\n this.setValueIfExists(series, 'fontFamily', options.fontFamily);\n this.setValueIfExists(series, 'color', options.color);\n };\n ChartBuilder.initBarSeries = function (series, options) {\n ChartBuilder.initSeries(series, options);\n this.setValueIfExists(series, 'grouped', options.grouped);\n this.setValueIfExists(series, 'normalizedTo', options.normalizedTo);\n var field = options.field, fill = options.fill, stroke = options.stroke, highlightStyle = options.highlightStyle, label = options.label, tooltip = options.tooltip;\n if (field) {\n this.setValueIfExists(series, 'xKey', field.xKey);\n this.setValueIfExists(series, 'yKeys', field.yKeys);\n this.setValueIfExists(series, 'yNames', field.yNames);\n }\n if (fill) {\n this.setValueIfExists(series, 'fills', fill.colors);\n this.setValueIfExists(series, 'fillOpacity', fill.opacity);\n }\n if (stroke) {\n this.setValueIfExists(series, 'strokes', stroke.colors);\n this.setValueIfExists(series, 'strokeOpacity', stroke.opacity);\n this.setValueIfExists(series, 'strokeWidth', stroke.width);\n }\n if (highlightStyle) {\n this.initHighlightStyle(series.highlightStyle, highlightStyle);\n }\n if (label) {\n ChartBuilder.initLabelOptions(series.label, label);\n this.setValueIfExists(series.label, 'enabled', label.enabled);\n this.setValueIfExists(series.label, 'formatter', label.formatter);\n }\n if (tooltip) {\n this.setValueIfExists(series, 'tooltipEnabled', tooltip.enabled);\n this.setValueIfExists(series, 'tooltipRenderer', tooltip.renderer);\n }\n this.setTransformedValueIfExists(series, 'shadow', function (s) { return ChartBuilder.createDropShadow(s); }, options.shadow);\n return series;\n };\n ChartBuilder.initAreaSeries = function (series, options) {\n ChartBuilder.initSeries(series, options);\n this.setValueIfExists(series, 'normalizedTo', options.normalizedTo);\n var field = options.field, fill = options.fill, stroke = options.stroke, highlightStyle = options.highlightStyle, marker = options.marker, tooltip = options.tooltip;\n if (field) {\n this.setValueIfExists(series, 'xKey', field.xKey);\n this.setValueIfExists(series, 'yKeys', field.yKeys);\n this.setValueIfExists(series, 'yNames', field.yNames);\n }\n if (fill) {\n this.setValueIfExists(series, 'fills', fill.colors);\n this.setValueIfExists(series, 'fillOpacity', fill.opacity);\n }\n if (stroke) {\n this.setValueIfExists(series, 'strokes', stroke.colors);\n this.setValueIfExists(series, 'strokeOpacity', stroke.opacity);\n this.setValueIfExists(series, 'strokeWidth', stroke.width);\n }\n if (highlightStyle) {\n this.initHighlightStyle(series.highlightStyle, highlightStyle);\n }\n if (marker) {\n this.initMarker(series.marker, marker);\n }\n if (tooltip) {\n this.setValueIfExists(series, 'tooltipEnabled', tooltip.enabled);\n this.setValueIfExists(series, 'tooltipRenderer', tooltip.renderer);\n }\n this.setTransformedValueIfExists(series, 'shadow', function (s) { return ChartBuilder.createDropShadow(s); }, options.shadow);\n return series;\n };\n ChartBuilder.initPieSeries = function (series, options) {\n ChartBuilder.initSeries(series, options);\n this.setTransformedValueIfExists(series, 'title', function (t) { return ChartBuilder.createPieTitle(t); }, options.title);\n this.setValueIfExists(series, 'rotation', options.rotation);\n this.setValueIfExists(series, 'outerRadiusOffset', options.outerRadiusOffset);\n this.setValueIfExists(series, 'innerRadiusOffset', options.innerRadiusOffset);\n var field = options.field, fill = options.fill, stroke = options.stroke, highlightStyle = options.highlightStyle, callout = options.callout, label = options.label, tooltip = options.tooltip;\n if (field) {\n this.setValueIfExists(series, 'angleKey', field.angleKey);\n this.setValueIfExists(series, 'angleName', field.angleName);\n this.setValueIfExists(series, 'radiusKey', field.radiusKey);\n this.setValueIfExists(series, 'radiusName', field.radiusName);\n this.setValueIfExists(series, 'labelKey', field.labelKey);\n this.setValueIfExists(series, 'labelName', field.labelName);\n }\n if (fill) {\n this.setValueIfExists(series, 'fills', fill.colors);\n this.setValueIfExists(series, 'fillOpacity', fill.opacity);\n }\n if (stroke) {\n this.setValueIfExists(series, 'strokes', stroke.colors);\n this.setValueIfExists(series, 'strokeOpacity', stroke.opacity);\n this.setValueIfExists(series, 'strokeWidth', stroke.width);\n }\n if (highlightStyle) {\n this.initHighlightStyle(series.highlightStyle, highlightStyle);\n }\n if (callout) {\n this.setValueIfExists(series, 'calloutColors', callout.colors);\n this.setValueIfExists(series, 'calloutStrokeWidth', callout.strokeWidth);\n this.setValueIfExists(series, 'calloutLength', callout.length);\n }\n if (label) {\n ChartBuilder.initLabelOptions(series.label, label);\n this.setValueIfExists(series.label, 'enabled', label.enabled);\n this.setValueIfExists(series.label, 'minAngle', label.minRequiredAngle);\n this.setValueIfExists(series.label, 'offset', label.offset);\n }\n if (tooltip) {\n this.setValueIfExists(series, 'tooltipEnabled', tooltip.enabled);\n this.setValueIfExists(series, 'tooltipRenderer', tooltip.renderer);\n }\n this.setTransformedValueIfExists(series, 'shadow', function (s) { return ChartBuilder.createDropShadow(s); }, options.shadow);\n return series;\n };\n ChartBuilder.getMarkerFromType = function (type) {\n return this.markerTypes.get(type) || circle_1.Circle;\n };\n ChartBuilder.initLegend = function (legend, options) {\n this.setValueIfExists(legend, 'enabled', options.enabled);\n this.setValueIfExists(legend, 'position', options.position);\n var item = options.item;\n if (item) {\n var label = item.label, marker = item.marker;\n if (label) {\n this.setValueIfExists(legend, 'labelFontFamily', label.fontFamily);\n this.setValueIfExists(legend, 'labelFontSize', label.fontSize);\n this.setValueIfExists(legend, 'labelFontStyle', label.fontStyle);\n this.setValueIfExists(legend, 'labelFontWeight', label.fontWeight);\n this.setValueIfExists(legend, 'labelColor', label.color);\n }\n if (marker) {\n this.setValueIfExists(legend, 'markerType', ChartBuilder.getMarkerFromType(marker.type));\n this.setValueIfExists(legend, 'markerStrokeWidth', marker.strokeWidth);\n this.setValueIfExists(legend, 'markerSize', marker.size);\n this.setValueIfExists(legend, 'markerPadding', marker.padding);\n }\n this.setValueIfExists(legend, 'itemPaddingX', item.paddingX);\n this.setValueIfExists(legend, 'itemPaddingY', item.paddingY);\n }\n };\n ChartBuilder.initMarker = function (marker, options) {\n marker.type = ChartBuilder.getMarkerFromType(options.type);\n this.setValueIfExists(marker, 'enabled', options.enabled);\n this.setValueIfExists(marker, 'size', options.size);\n this.setValueIfExists(marker, 'minSize', options.minSize);\n this.setValueIfExists(marker, 'fill', options.fill);\n this.setValueIfExists(marker, 'stroke', options.stroke);\n this.setValueIfExists(marker, 'strokeWidth', options.strokeWidth);\n };\n ChartBuilder.initHighlightStyle = function (highlightStyle, options) {\n this.setValueIfExists(highlightStyle, 'fill', options.fill);\n this.setValueIfExists(highlightStyle, 'stroke', options.stroke);\n };\n ChartBuilder.setDefaultFontOptions = function (options, fontSize, fontWeight, fontFamily) {\n if (fontSize === void 0) { fontSize = 16; }\n if (fontWeight === void 0) { fontWeight = 'bold'; }\n if (fontFamily === void 0) { fontFamily = 'Verdana, sans-serif'; }\n if (options.fontSize === undefined) {\n options.fontSize = fontSize;\n }\n if (options.fontWeight === undefined) {\n options.fontWeight = fontWeight;\n }\n if (options.fontFamily === undefined) {\n options.fontFamily = fontFamily;\n }\n };\n ChartBuilder.createTitle = function (options) {\n options = Object.create(options);\n if (options.text === undefined) {\n options.text = '';\n }\n this.setDefaultFontOptions(options);\n return ChartBuilder.createCaption(options);\n };\n ChartBuilder.createSubtitle = function (options) {\n options = Object.create(options);\n if (options.text === undefined) {\n options.text = '';\n }\n this.setDefaultFontOptions(options, 12);\n return ChartBuilder.createCaption(options);\n };\n ChartBuilder.createPieTitle = function (options) {\n options = Object.create(options);\n this.setDefaultFontOptions(options, 12);\n return ChartBuilder.createCaption(options);\n };\n ChartBuilder.createCaption = function (options) {\n var caption = new caption_1.Caption();\n this.setValueIfExists(caption, 'enabled', options.enabled);\n this.setValueIfExists(caption, 'text', options.text);\n this.setValueIfExists(caption, 'fontStyle', options.fontStyle);\n this.setValueIfExists(caption, 'fontWeight', options.fontWeight);\n this.setValueIfExists(caption, 'fontSize', options.fontSize);\n this.setValueIfExists(caption, 'fontFamily', options.fontFamily);\n this.setValueIfExists(caption, 'color', options.color);\n return caption;\n };\n ChartBuilder.initAxis = function (axis, options) {\n this.setTransformedValueIfExists(axis, 'title', function (t) { return ChartBuilder.createTitle(t); }, options.title);\n this.setValueIfExists(axis, 'gridStyle', options.gridStyle);\n var line = options.line, tick = options.tick, label = options.label;\n if (line) {\n this.setValueIfExists(axis.line, 'width', line.width);\n this.setValueIfExists(axis.line, 'color', line.color);\n }\n if (tick) {\n this.setValueIfExists(axis.tick, 'width', tick.width);\n this.setValueIfExists(axis.tick, 'size', tick.size);\n this.setValueIfExists(axis.tick, 'color', tick.color);\n }\n if (label) {\n this.setValueIfExists(axis.label, 'fontStyle', label.fontStyle);\n this.setValueIfExists(axis.label, 'fontWeight', label.fontWeight);\n this.setValueIfExists(axis.label, 'fontSize', label.fontSize);\n this.setValueIfExists(axis.label, 'fontFamily', label.fontFamily);\n this.setValueIfExists(axis.label, 'color', label.color);\n this.setValueIfExists(axis.label, 'padding', label.padding);\n this.setValueIfExists(axis.label, 'rotation', label.rotation);\n this.setValueIfExists(axis.label, 'format', label.format);\n this.setValueIfExists(axis.label, 'formatter', label.formatter);\n }\n };\n ChartBuilder.createNumberAxis = function (options) {\n var axis = new numberAxis_1.NumberAxis();\n this.initAxis(axis, options);\n return axis;\n };\n ChartBuilder.createCategoryAxis = function (options) {\n var axis = new categoryAxis_1.CategoryAxis();\n this.initAxis(axis, options);\n return axis;\n };\n ChartBuilder.createGroupedAxis = function (options) {\n var axis = new groupedCategoryAxis_1.GroupedCategoryAxis();\n this.initAxis(axis, options);\n return axis;\n };\n ChartBuilder.createTimeAxis = function (options) {\n var axis = new timeAxis_1.TimeAxis();\n this.initAxis(axis, options);\n return axis;\n };\n ChartBuilder.createAxis = function (options, defaultType) {\n var axis;\n switch (options.type || defaultType) {\n case 'category':\n axis = new categoryAxis_1.CategoryAxis();\n break;\n case 'number':\n axis = new numberAxis_1.NumberAxis();\n break;\n case 'time':\n axis = new timeAxis_1.TimeAxis();\n break;\n default:\n throw new Error('Unknown axis type');\n }\n this.initAxis(axis, options);\n return axis;\n };\n ChartBuilder.setValueIfExists = function (target, property, value, transform) {\n if (value === undefined) {\n return;\n }\n target[property] = transform ? transform(value) : value;\n };\n ChartBuilder.setTransformedValueIfExists = function (target, property, transform, value) {\n if (value === undefined) {\n return;\n }\n target[property] = transform(value);\n };\n ChartBuilder.markerTypes = map_1.convertToMap([\n ['circle', circle_1.Circle],\n ['cross', cross_1.Cross],\n ['diamond', diamond_1.Diamond],\n ['plus', plus_1.Plus],\n ['square', square_1.Square],\n ['triangle', triangle_1.Triangle]\n ]);\n ChartBuilder.createDropShadow = function (options) {\n if (options === void 0) { options = {}; }\n var shadow = new dropShadow_1.DropShadow();\n shadow.enabled = options.enabled == null ? true : options.enabled;\n shadow.xOffset = options.xOffset || 0;\n shadow.yOffset = options.yOffset || 0;\n shadow.blur = options.blur || 5;\n shadow.color = options.color || 'rgba(0, 0, 0, 0.5)';\n return shadow;\n };\n return ChartBuilder;\n}());\nexports.ChartBuilder = ChartBuilder;\n//# sourceMappingURL=chartBuilder.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar path_1 = require(\"./path\");\nvar shape_1 = require(\"./shape\");\nvar bbox_1 = require(\"../bbox\");\nvar RectSizing;\n(function (RectSizing) {\n RectSizing[RectSizing[\"Content\"] = 0] = \"Content\";\n RectSizing[RectSizing[\"Border\"] = 1] = \"Border\";\n})(RectSizing = exports.RectSizing || (exports.RectSizing = {}));\nvar Rect = /** @class */ (function (_super) {\n __extends(Rect, _super);\n function Rect() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._x = 0;\n _this._y = 0;\n _this._width = 10;\n _this._height = 10;\n _this._radius = 0;\n /**\n * If `true`, the rect is aligned to the pixel grid for crisp looking lines.\n * Animated rects may not look nice with this option enabled, for example\n * when a rect is translated by a sub-pixel value on each frame.\n */\n _this._crisp = false;\n _this.effectiveStrokeWidth = shape_1.Shape.defaultStyles.strokeWidth;\n /**\n * Similar to https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing\n */\n _this._sizing = RectSizing.Content;\n return _this;\n }\n Object.defineProperty(Rect.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n set: function (value) {\n if (this._width !== value) {\n this._width = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n set: function (value) {\n if (this._height !== value) {\n this._height = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"radius\", {\n get: function () {\n return this._radius;\n },\n set: function (value) {\n if (this._radius !== value) {\n this._radius = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"crisp\", {\n get: function () {\n return this._crisp;\n },\n set: function (value) {\n if (this._crisp !== value) {\n this._crisp = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"strokeWidth\", {\n get: function () {\n return this._strokeWidth;\n },\n set: function (value) {\n if (this._strokeWidth !== value) {\n this._strokeWidth = value;\n // Normally, when the `lineWidth` changes, we only need to repaint the rect\n // without updating the path. If the `isCrisp` is set to `true` however,\n // we need to update the path to make sure the new stroke aligns to\n // the pixel grid. This is the reason we override the `lineWidth` setter\n // and getter here.\n if (this.crisp || this.sizing === RectSizing.Border) {\n this.dirtyPath = true;\n }\n else {\n this.effectiveStrokeWidth = value;\n this.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"sizing\", {\n get: function () {\n return this._sizing;\n },\n set: function (value) {\n if (this._sizing !== value) {\n this._sizing = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Rect.prototype.updatePath = function () {\n var borderSizing = this.sizing === RectSizing.Border;\n var path = this.path;\n path.clear();\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n var strokeWidth;\n if (borderSizing) {\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n strokeWidth = Math.min(this.strokeWidth, halfWidth, halfHeight);\n x = Math.min(x + strokeWidth / 2, x + halfWidth);\n y = Math.min(y + strokeWidth / 2, y + halfHeight);\n width = Math.max(width - strokeWidth, 0);\n height = Math.max(height - strokeWidth, 0);\n }\n else {\n strokeWidth = this.strokeWidth;\n }\n this.effectiveStrokeWidth = strokeWidth;\n if (this.crisp && !borderSizing) {\n var alignment = Math.floor(strokeWidth) % 2 / 2;\n path.rect(Math.floor(x) + alignment, Math.floor(y) + alignment, Math.floor(width) + Math.floor(x % 1 + width % 1), Math.floor(height) + Math.floor(y % 1 + height % 1));\n }\n else {\n path.rect(x, y, width, height);\n }\n };\n Rect.prototype.computeBBox = function () {\n return new bbox_1.BBox(this.x, this.y, this.width, this.height);\n };\n Rect.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return bbox.containsPoint(point.x, point.y);\n };\n Rect.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Rect.prototype.fillStroke = function (ctx) {\n if (!this.scene) {\n return;\n }\n var pixelRatio = this.scene.canvas.pixelRatio || 1;\n if (this.fill) {\n ctx.fillStyle = this.fill;\n ctx.globalAlpha = this.opacity * this.fillOpacity;\n // The canvas context scaling (depends on the device's pixel ratio)\n // has no effect on shadows, so we have to account for the pixel ratio\n // manually here.\n var fillShadow = this.fillShadow;\n if (fillShadow && fillShadow.enabled) {\n ctx.shadowColor = fillShadow.color;\n ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n ctx.shadowBlur = fillShadow.blur * pixelRatio;\n }\n ctx.fill();\n }\n ctx.shadowColor = 'rgba(0, 0, 0, 0)';\n if (this.stroke && this.effectiveStrokeWidth) {\n ctx.strokeStyle = this.stroke;\n ctx.globalAlpha = this.opacity * this.strokeOpacity;\n ctx.lineWidth = this.effectiveStrokeWidth;\n if (this.lineDash) {\n ctx.setLineDash(this.lineDash);\n }\n if (this.lineDashOffset) {\n ctx.lineDashOffset = this.lineDashOffset;\n }\n if (this.lineCap) {\n ctx.lineCap = this.lineCap;\n }\n if (this.lineJoin) {\n ctx.lineJoin = this.lineJoin;\n }\n var strokeShadow = this.strokeShadow;\n if (strokeShadow && strokeShadow.enabled) {\n ctx.shadowColor = strokeShadow.color;\n ctx.shadowOffsetX = strokeShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = strokeShadow.yOffset * pixelRatio;\n ctx.shadowBlur = strokeShadow.blur * pixelRatio;\n }\n ctx.stroke();\n }\n };\n Rect.className = 'Rect';\n return Rect;\n}(path_1.Path));\nexports.Rect = Rect;\n//# sourceMappingURL=rect.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar chartDatasource_1 = require(\"./chartDatasource\");\nvar ChartDataModel = /** @class */ (function (_super) {\n __extends(ChartDataModel, _super);\n function ChartDataModel(params) {\n var _this = _super.call(this) || this;\n _this.dimensionColState = [];\n _this.valueColState = [];\n _this.detached = false;\n _this.columnNames = {};\n _this.isPivotActive = function () { return _this.columnController.isPivotActive(); };\n _this.isPivotMode = function () { return _this.columnController.isPivotMode(); };\n _this.isPivotChart = function () { return _this.pivotChart; };\n _this.getChartId = function () { return _this.chartId; };\n _this.getValueColState = function () { return _this.valueColState.map(_this.displayNameMapper.bind(_this)); };\n _this.getDimensionColState = function () { return _this.dimensionColState; };\n _this.getCellRanges = function () { return [_this.dimensionCellRange, _this.valueCellRange].filter(function (r) { return r; }); };\n _this.getChartType = function () { return _this.chartType; };\n _this.isSuppressChartRanges = function () { return _this.suppressChartRanges; };\n _this.isDetached = function () { return _this.detached; };\n _this.getSelectedValueColState = function () { return _this.getValueColState().filter(function (cs) { return cs.selected; }); };\n _this.getSelectedValueCols = function () { return _this.valueColState.filter(function (cs) { return cs.selected; }).map(function (cs) { return cs.column; }); };\n _this.getSelectedDimension = function () { return _this.dimensionColState.filter(function (cs) { return cs.selected; })[0]; };\n _this.getColDisplayName = function (col) { return _this.columnController.getDisplayNameForColumn(col, 'chart'); };\n _this.pivotChart = params.pivotChart;\n _this.chartType = params.chartType;\n _this.aggFunc = params.aggFunc;\n _this.referenceCellRange = params.cellRange;\n _this.suppressChartRanges = params.suppressChartRanges;\n // this is used to associate chart ranges with charts\n _this.chartId = _this.generateId();\n return _this;\n }\n ChartDataModel.prototype.init = function () {\n this.datasource = this.wireBean(new chartDatasource_1.ChartDatasource());\n this.updateCellRanges();\n };\n ChartDataModel.prototype.updateCellRanges = function (updatedColState) {\n if (this.valueCellRange) {\n this.referenceCellRange = this.valueCellRange;\n }\n var _a = this.getAllChartColumns(), dimensionCols = _a.dimensionCols, valueCols = _a.valueCols;\n var allColsFromRanges = this.getAllColumnsFromRanges();\n if (updatedColState) {\n this.updateColumnState(updatedColState);\n }\n this.setDimensionCellRange(dimensionCols, allColsFromRanges, updatedColState);\n this.setValueCellRange(valueCols, allColsFromRanges, updatedColState);\n if (!updatedColState) {\n this.resetColumnState();\n }\n this.updateData();\n };\n ChartDataModel.prototype.getData = function () {\n return this.chartData;\n };\n ChartDataModel.prototype.setChartType = function (chartType) {\n var isCurrentMultiCategory = this.isMultiCategoryChart();\n this.chartType = chartType;\n // switching between single and multi-category charts requires data to be reformatted\n if (isCurrentMultiCategory !== this.isMultiCategoryChart()) {\n this.updateData();\n }\n };\n ChartDataModel.prototype.isGrouping = function () {\n var usingTreeData = this.gridOptionsWrapper.isTreeData();\n var groupedCols = usingTreeData ? null : this.columnController.getRowGroupColumns();\n var groupActive = usingTreeData || (groupedCols && groupedCols.length > 0);\n // charts only group when the selected category is a group column\n var groupCols = this.columnController.getGroupDisplayColumns();\n var colId = this.getSelectedDimension().colId;\n var groupDimensionSelected = groupCols\n .map(function (col) { return col.getColId(); })\n .some(function (id) { return id === colId; });\n return groupActive && groupDimensionSelected;\n };\n ChartDataModel.prototype.toggleDetached = function () {\n this.detached = !this.detached;\n };\n ChartDataModel.prototype.createCellRange = function (type) {\n var columns = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n columns[_i - 1] = arguments[_i];\n }\n return {\n id: this.chartId,\n startRow: this.referenceCellRange.startRow,\n endRow: this.referenceCellRange.endRow,\n columns: columns,\n startColumn: type === core_1.CellRangeType.DIMENSION ? columns[0] : this.referenceCellRange.startColumn,\n type: type\n };\n };\n ChartDataModel.prototype.getAllColumnsFromRanges = function () {\n if (this.pivotChart) {\n return core_1._.convertToSet(this.columnController.getAllDisplayedColumns());\n }\n ;\n var columns = this.dimensionCellRange || this.valueCellRange ? [] : this.referenceCellRange.columns;\n if (this.dimensionCellRange) {\n columns.push.apply(columns, this.dimensionCellRange.columns);\n }\n if (this.valueCellRange) {\n columns.push.apply(columns, this.valueCellRange.columns);\n }\n return core_1._.convertToSet(columns);\n };\n ChartDataModel.prototype.getRowIndexes = function () {\n var startRow = 0, endRow = 0;\n var rangeController = this.rangeController;\n var range = this.valueCellRange;\n if (rangeController && range) {\n startRow = rangeController.getRangeStartRow(range).rowIndex;\n endRow = rangeController.getRangeEndRow(range).rowIndex;\n }\n return { startRow: startRow, endRow: endRow };\n };\n ChartDataModel.prototype.getAllChartColumns = function () {\n var _this = this;\n var displayedCols = this.columnController.getAllDisplayedColumns();\n var dimensionCols = new Set();\n var valueCols = new Set();\n displayedCols.forEach(function (col) {\n var colDef = col.getColDef();\n var chartDataType = colDef.chartDataType;\n if (chartDataType) {\n // chart data type was specified explicitly\n switch (chartDataType) {\n case 'category':\n dimensionCols.add(col);\n return;\n case 'series':\n valueCols.add(col);\n return;\n case 'excluded':\n return;\n default:\n console.warn(\"ag-Grid: unexpected chartDataType value '\" + chartDataType + \"' supplied, instead use 'category', 'series' or 'excluded'\");\n break;\n }\n }\n if (colDef.colId === 'ag-Grid-AutoColumn') {\n dimensionCols.add(col);\n return;\n }\n if (!col.isPrimary()) {\n valueCols.add(col);\n return;\n }\n // if 'chartDataType' is not provided then infer type based data contained in first row\n (_this.isNumberCol(col) ? valueCols : dimensionCols).add(col);\n });\n return { dimensionCols: dimensionCols, valueCols: valueCols };\n };\n ChartDataModel.prototype.isNumberCol = function (col) {\n if (col.getColId() === 'ag-Grid-AutoColumn') {\n return false;\n }\n var row = this.rowRenderer.getRowNode({ rowIndex: 0, rowPinned: undefined });\n if (!row) {\n return false;\n }\n var cellValue = this.valueService.getValue(col, row);\n if (cellValue == null) {\n cellValue = this.extractLeafData(row, col);\n }\n if (cellValue != null && typeof cellValue.toNumber === 'function') {\n cellValue = cellValue.toNumber();\n }\n return typeof cellValue === 'number';\n };\n ChartDataModel.prototype.extractLeafData = function (row, col) {\n if (!row.allLeafChildren) {\n return null;\n }\n for (var i = 0; i < row.allLeafChildren.length; i++) {\n var childRow = row.allLeafChildren[i];\n var value = this.valueService.getValue(col, childRow);\n if (value != null) {\n return value;\n }\n }\n return null;\n };\n ChartDataModel.prototype.displayNameMapper = function (col) {\n var columnNames = this.columnNames[col.colId];\n col.displayName = columnNames ? columnNames.join(' - ') : this.getColDisplayName(col.column);\n return col;\n };\n ChartDataModel.prototype.isMultiCategoryChart = function () {\n return !core_1._.includes([core_1.ChartType.Pie, core_1.ChartType.Doughnut, core_1.ChartType.Scatter, core_1.ChartType.Bubble], this.chartType);\n };\n ChartDataModel.prototype.generateId = function () {\n return 'id-' + Math.random().toString(36).substr(2, 16);\n };\n ChartDataModel.prototype.updateData = function () {\n var _a = this.getRowIndexes(), startRow = _a.startRow, endRow = _a.endRow;\n if (this.pivotChart) {\n this.resetColumnState();\n }\n this.grouping = this.isGrouping();\n var params = {\n aggFunc: this.aggFunc,\n dimensionCols: [this.getSelectedDimension()],\n grouping: this.grouping,\n pivoting: this.isPivotActive(),\n multiCategories: this.isMultiCategoryChart(),\n valueCols: this.getSelectedValueCols(),\n startRow: startRow,\n endRow: endRow\n };\n var result = this.datasource.getData(params);\n this.chartData = result.data;\n this.columnNames = result.columnNames;\n };\n ChartDataModel.prototype.resetColumnState = function () {\n var _this = this;\n var _a = this.getAllChartColumns(), dimensionCols = _a.dimensionCols, valueCols = _a.valueCols;\n var allCols = this.getAllColumnsFromRanges();\n var isInitialising = this.valueColState.length < 1;\n this.dimensionColState = [];\n this.valueColState = [];\n var hasSelectedDimension = false;\n var order = 1;\n dimensionCols.forEach(function (column) {\n var selected = !hasSelectedDimension && allCols.has(column);\n _this.dimensionColState.push({\n column: column,\n colId: column.getColId(),\n displayName: _this.getColDisplayName(column),\n selected: selected,\n order: order++\n });\n if (selected) {\n hasSelectedDimension = true;\n }\n });\n var defaultCategory = {\n colId: ChartDataModel.DEFAULT_CATEGORY,\n displayName: '(None)',\n selected: !hasSelectedDimension,\n order: 0\n };\n this.dimensionColState.unshift(defaultCategory);\n var valueColumnsFromReferenceRange = this.referenceCellRange.columns.filter(function (c) { return valueCols.has(c); });\n valueCols.forEach(function (column) {\n // first time the value cell range is set, preserve the column order from the supplied range\n if (isInitialising && core_1._.includes(_this.referenceCellRange.columns, column)) {\n column = valueColumnsFromReferenceRange.shift();\n }\n _this.valueColState.push({\n column: column,\n colId: column.getColId(),\n displayName: _this.getColDisplayName(column),\n selected: allCols.has(column),\n order: order++\n });\n });\n };\n ChartDataModel.prototype.updateColumnState = function (updatedCol) {\n var idsMatch = function (cs) { return cs.colId === updatedCol.colId; };\n var _a = this, dimensionColState = _a.dimensionColState, valueColState = _a.valueColState;\n if (dimensionColState.filter(idsMatch).length > 0) {\n // only one dimension should be selected\n dimensionColState.forEach(function (cs) { return cs.selected = idsMatch(cs); });\n }\n else {\n // just update the selected value on the supplied value column\n valueColState.filter(idsMatch).forEach(function (cs) { return cs.selected = updatedCol.selected; });\n }\n var allColumns = __spreadArrays(dimensionColState, valueColState);\n var orderedColIds = [];\n // calculate new order\n allColumns.forEach(function (col, i) {\n if (i === updatedCol.order) {\n orderedColIds.push(updatedCol.colId);\n }\n if (col.colId !== updatedCol.colId) {\n orderedColIds.push(col.colId);\n }\n });\n // update col state with new order\n allColumns.forEach(function (col) {\n var order = orderedColIds.indexOf(col.colId);\n col.order = order >= 0 ? orderedColIds.indexOf(col.colId) : allColumns.length - 1;\n });\n this.reorderColState();\n };\n ChartDataModel.prototype.reorderColState = function () {\n var _a = this, dimensionColState = _a.dimensionColState, valueColState = _a.valueColState;\n dimensionColState.sort(function (a, b) { return a.order - b.order; });\n valueColState.sort(function (a, b) { return a.order - b.order; });\n };\n ChartDataModel.prototype.setDimensionCellRange = function (dimensionCols, colsInRange, updatedColState) {\n var _this = this;\n this.dimensionCellRange = undefined;\n var dimensionColState = this.dimensionColState;\n if (!updatedColState && !dimensionColState.length) {\n // use first dimension column in range by default\n dimensionCols.forEach(function (col) {\n if (_this.dimensionCellRange || !colsInRange.has(col)) {\n return;\n }\n _this.dimensionCellRange = _this.createCellRange(core_1.CellRangeType.DIMENSION, col);\n });\n return;\n }\n var selectedDimensionColState = updatedColState;\n if (!selectedDimensionColState || !dimensionCols.has(selectedDimensionColState.column)) {\n selectedDimensionColState = this.dimensionColState.filter(function (cs) { return cs.selected; })[0];\n }\n if (selectedDimensionColState && selectedDimensionColState.colId !== ChartDataModel.DEFAULT_CATEGORY) {\n this.dimensionCellRange = this.createCellRange(core_1.CellRangeType.DIMENSION, selectedDimensionColState.column);\n }\n };\n ChartDataModel.prototype.setValueCellRange = function (valueCols, colsInRange, updatedColState) {\n this.valueCellRange = undefined;\n var selectedValueCols = [];\n valueCols.forEach(function (col) {\n if (updatedColState && updatedColState.colId === col.getColId()) {\n if (updatedColState.selected) {\n selectedValueCols.push(updatedColState.column);\n }\n }\n else if (colsInRange.has(col)) {\n selectedValueCols.push(col);\n }\n });\n if (selectedValueCols.length > 0) {\n var orderedColIds_1 = [];\n if (this.valueColState.length > 0) {\n orderedColIds_1 = this.valueColState.map(function (c) { return c.colId; });\n }\n else {\n colsInRange.forEach(function (c) { return orderedColIds_1.push(c.getColId()); });\n }\n selectedValueCols.sort(function (a, b) { return orderedColIds_1.indexOf(a.getColId()) - orderedColIds_1.indexOf(b.getColId()); });\n this.valueCellRange = this.createCellRange.apply(this, __spreadArrays([core_1.CellRangeType.VALUE], selectedValueCols));\n }\n };\n ChartDataModel.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.datasource) {\n this.datasource.destroy();\n }\n };\n ChartDataModel.DEFAULT_CATEGORY = 'AG-GRID-DEFAULT-CATEGORY';\n __decorate([\n core_1.Autowired('columnController')\n ], ChartDataModel.prototype, \"columnController\", void 0);\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], ChartDataModel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('valueService')\n ], ChartDataModel.prototype, \"valueService\", void 0);\n __decorate([\n core_1.Autowired('rangeController')\n ], ChartDataModel.prototype, \"rangeController\", void 0);\n __decorate([\n core_1.Autowired('rowRenderer')\n ], ChartDataModel.prototype, \"rowRenderer\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ChartDataModel.prototype, \"init\", null);\n return ChartDataModel;\n}(core_1.BeanStub));\nexports.ChartDataModel = ChartDataModel;\n//# sourceMappingURL=chartDataModel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar FontPanel = /** @class */ (function (_super) {\n __extends(FontPanel, _super);\n function FontPanel(params) {\n var _this = _super.call(this) || this;\n _this.activeComps = [];\n _this.params = params;\n return _this;\n }\n FontPanel.prototype.init = function () {\n this.setTemplate(FontPanel.TEMPLATE);\n this.initGroup();\n this.initFontFamilySelect();\n this.initFontWeightStyleSelect();\n this.initFontSizeSelect();\n this.initFontColorPicker();\n };\n FontPanel.prototype.addCompToPanel = function (comp) {\n this.fontGroup.addItem(comp);\n this.activeComps.push(comp);\n };\n FontPanel.prototype.setEnabled = function (enabled) {\n this.fontGroup.setEnabled(enabled);\n };\n FontPanel.prototype.initGroup = function () {\n var _this = this;\n this.fontGroup\n .setTitle(this.params.name || this.chartTranslator.translate('font'))\n .setEnabled(this.params.enabled)\n .hideEnabledCheckbox(!!this.params.suppressEnabledCheckbox)\n .hideOpenCloseIcons(true)\n .onEnableChange(function (enabled) {\n if (_this.params.setEnabled) {\n _this.params.setEnabled(enabled);\n }\n });\n };\n FontPanel.prototype.initFontFamilySelect = function () {\n var _this = this;\n var families = [\n 'Arial, sans-serif',\n 'Aria Black, sans-serif',\n 'Book Antiqua, serif',\n 'Charcoal, sans-serif',\n 'Comic Sans MS, cursive',\n 'Courier, monospace',\n 'Courier New, monospace',\n 'Gadget, sans-serif',\n 'Geneva, sans-serif',\n 'Helvetica, sans-serif',\n 'Impact, sans-serif',\n 'Lucida Console, monospace',\n 'Lucida Grande, sans-serif',\n 'Lucida Sans Unicode, sans-serif',\n 'Monaco, monospace',\n 'Palatino Linotype, serif',\n 'Palatino, serif',\n 'Times New Roman, serif',\n 'Times, serif',\n 'Verdana, sans-serif',\n ];\n var family = this.params.initialFont.family;\n var initialValue = families[0];\n if (family) {\n // check for known values using lowercase\n var lowerCaseValues = families.map(function (f) { return f.toLowerCase(); });\n var valueIndex = lowerCaseValues.indexOf(family.toLowerCase());\n if (valueIndex >= 0) {\n initialValue = families[valueIndex];\n }\n else {\n // add user provided value to list\n var capitalisedFontValue = core_1._.capitalise(family);\n families.push(capitalisedFontValue);\n initialValue = capitalisedFontValue;\n }\n }\n var options = families.sort().map(function (value) { return ({ value: value, text: value }); });\n this.familySelect.addOptions(options)\n .setValue(\"\" + initialValue)\n .onValueChange(function (newValue) { return _this.params.setFont({ family: newValue }); });\n };\n FontPanel.prototype.initFontSizeSelect = function () {\n var _this = this;\n var sizes = [8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36];\n var size = this.params.initialFont.size;\n if (!core_1._.includes(sizes, size)) {\n sizes.push(size);\n }\n var options = sizes.sort(function (a, b) { return a - b; }).map(function (value) { return ({ value: \"\" + value, text: \"\" + value }); });\n this.sizeSelect.addOptions(options)\n .setValue(\"\" + size)\n .onValueChange(function (newValue) { return _this.params.setFont({ size: parseInt(newValue, 10) }); });\n this.sizeSelect.setLabel(this.chartTranslator.translate('size'));\n };\n FontPanel.prototype.initFontWeightStyleSelect = function () {\n var _this = this;\n var _a = this.params.initialFont, _b = _a.weight, weight = _b === void 0 ? 'normal' : _b, _c = _a.style, style = _c === void 0 ? 'normal' : _c;\n var weightStyles = [\n { name: 'normal', weight: 'normal', style: 'normal' },\n { name: 'bold', weight: 'bold', style: 'normal' },\n { name: 'italic', weight: 'normal', style: 'italic' },\n { name: 'boldItalic', weight: 'bold', style: 'italic' }\n ];\n var selectedOption = core_1._.find(weightStyles, function (x) { return x.weight === weight && x.style === style; });\n if (!selectedOption) {\n selectedOption = { name: 'predefined', weight: weight, style: style };\n weightStyles.unshift(selectedOption);\n }\n var options = weightStyles.map(function (ws) { return ({\n value: ws.name,\n text: _this.chartTranslator.translate(ws.name),\n }); });\n this.weightStyleSelect.addOptions(options)\n .setValue(selectedOption.name)\n .onValueChange(function (newValue) {\n var selectedWeightStyle = core_1._.find(weightStyles, function (x) { return x.name === newValue; });\n _this.params.setFont({ weight: selectedWeightStyle.weight, style: selectedWeightStyle.style });\n });\n };\n FontPanel.prototype.initFontColorPicker = function () {\n var _this = this;\n this.colorPicker\n .setLabel(this.chartTranslator.translate('color'))\n .setInputWidth(45)\n .setValue(\"\" + this.params.initialFont.color)\n .onValueChange(function (newColor) { return _this.params.setFont({ color: newColor }); });\n };\n FontPanel.prototype.destroyActiveComps = function () {\n this.activeComps.forEach(function (comp) {\n core_1._.removeFromParent(comp.getGui());\n comp.destroy();\n });\n };\n FontPanel.prototype.destroy = function () {\n this.destroyActiveComps();\n _super.prototype.destroy.call(this);\n };\n FontPanel.TEMPLATE = \"
\\n \\n \\n \\n
\\n \\n \\n
\\n
\\n
\";\n __decorate([\n core_1.RefSelector('fontGroup')\n ], FontPanel.prototype, \"fontGroup\", void 0);\n __decorate([\n core_1.RefSelector('familySelect')\n ], FontPanel.prototype, \"familySelect\", void 0);\n __decorate([\n core_1.RefSelector('weightStyleSelect')\n ], FontPanel.prototype, \"weightStyleSelect\", void 0);\n __decorate([\n core_1.RefSelector('sizeSelect')\n ], FontPanel.prototype, \"sizeSelect\", void 0);\n __decorate([\n core_1.RefSelector('colorPicker')\n ], FontPanel.prototype, \"colorPicker\", void 0);\n __decorate([\n core_1.Autowired('chartTranslator')\n ], FontPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], FontPanel.prototype, \"init\", null);\n return FontPanel;\n}(core_1.Component));\nexports.FontPanel = FontPanel;\n//# sourceMappingURL=fontPanel.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Padding = /** @class */ (function () {\n function Padding(top, right, bottom, left) {\n if (top === void 0) { top = 0; }\n if (right === void 0) { right = top; }\n if (bottom === void 0) { bottom = top; }\n if (left === void 0) { left = right; }\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n this.left = left;\n }\n Padding.prototype.clear = function () {\n this.top = this.right = this.bottom = this.left = 0;\n };\n return Padding;\n}());\nexports.Padding = Padding;\n//# sourceMappingURL=padding.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar series_1 = require(\"../series\");\nvar chartAxis_1 = require(\"../../chartAxis\");\nvar seriesMarker_1 = require(\"../seriesMarker\");\nvar CartesianSeries = /** @class */ (function (_super) {\n __extends(CartesianSeries, _super);\n function CartesianSeries() {\n var _a;\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.directionKeys = (_a = {},\n _a[chartAxis_1.ChartAxisDirection.X] = ['xKey'],\n _a[chartAxis_1.ChartAxisDirection.Y] = ['yKey'],\n _a);\n return _this;\n }\n return CartesianSeries;\n}(series_1.Series));\nexports.CartesianSeries = CartesianSeries;\nvar CartesianSeriesMarker = /** @class */ (function (_super) {\n __extends(CartesianSeriesMarker, _super);\n function CartesianSeriesMarker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return CartesianSeriesMarker;\n}(seriesMarker_1.SeriesMarker));\nexports.CartesianSeriesMarker = CartesianSeriesMarker;\n//# sourceMappingURL=cartesianSeries.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bandScale_1 = require(\"../../scale/bandScale\");\nvar chartAxis_1 = require(\"../chartAxis\");\nvar CategoryAxis = /** @class */ (function (_super) {\n __extends(CategoryAxis, _super);\n function CategoryAxis() {\n var _this = this;\n var scale = new bandScale_1.BandScale();\n scale.paddingInner = 0.2;\n scale.paddingOuter = 0.3;\n _this = _super.call(this, scale) || this;\n return _this;\n }\n return CategoryAxis;\n}(chartAxis_1.ChartAxis));\nexports.CategoryAxis = CategoryAxis;\n//# sourceMappingURL=categoryAxis.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar NameValueComp = /** @class */ (function (_super) {\n __extends(NameValueComp, _super);\n function NameValueComp() {\n return _super.call(this, NameValueComp.TEMPLATE) || this;\n }\n NameValueComp.prototype.setLabel = function (key, defaultValue) {\n // we want to hide until the first value comes in\n this.setDisplayed(false);\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eLabel.innerHTML = localeTextFunc(key, defaultValue);\n };\n NameValueComp.prototype.setValue = function (value) {\n this.eValue.innerHTML = value;\n };\n NameValueComp.TEMPLATE = \"
\\n : \\n \\n
\";\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], NameValueComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.RefSelector('eLabel')\n ], NameValueComp.prototype, \"eLabel\", void 0);\n __decorate([\n core_1.RefSelector('eValue')\n ], NameValueComp.prototype, \"eValue\", void 0);\n return NameValueComp;\n}(core_1.Component));\nexports.NameValueComp = NameValueComp;\n//# sourceMappingURL=nameValueComp.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rowGroupingModule_1 = require(\"./rowGroupingModule\");\nexports.RowGroupingModule = rowGroupingModule_1.RowGroupingModule;\nvar rowGroupDropZonePanel_1 = require(\"./rowGrouping/columnDropZones/rowGroupDropZonePanel\");\nexports.RowGroupDropZonePanel = rowGroupDropZonePanel_1.RowGroupDropZonePanel;\nvar valueDropZonePanel_1 = require(\"./rowGrouping/columnDropZones/valueDropZonePanel\");\nexports.ValuesDropZonePanel = valueDropZonePanel_1.ValuesDropZonePanel;\nvar pivotDropZonePanel_1 = require(\"./rowGrouping/columnDropZones/pivotDropZonePanel\");\nexports.PivotDropZonePanel = pivotDropZonePanel_1.PivotDropZonePanel;\n//# sourceMappingURL=main.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar sideBarModule_1 = require(\"./sideBarModule\");\nexports.SideBarModule = sideBarModule_1.SideBarModule;\nvar toolPanelColDefService_1 = require(\"./sideBar/common/toolPanelColDefService\");\nexports.ToolPanelColDefService = toolPanelColDefService_1.ToolPanelColDefService;\n//# sourceMappingURL=main.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar chartDataModel_1 = require(\"./chartDataModel\");\nvar palettes_1 = require(\"../../charts/chart/palettes\");\nvar ChartController = /** @class */ (function (_super) {\n __extends(ChartController, _super);\n function ChartController(model, paletteName) {\n if (paletteName === void 0) { paletteName = 'borneo'; }\n var _this = _super.call(this) || this;\n _this.model = model;\n _this.getChartType = function () { return _this.model.getChartType(); };\n _this.isPivotChart = function () { return _this.model.isPivotChart(); };\n _this.chartPaletteName = paletteName;\n return _this;\n }\n ChartController.prototype.init = function () {\n var _this = this;\n this.setChartRange();\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_RANGE_SELECTION_CHANGED, function (event) {\n if (event.id && event.id === _this.model.getChartId()) {\n _this.updateForRangeChange();\n }\n });\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_MOVED, this.updateForGridChange.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_PINNED, this.updateForGridChange.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_COLUMN_VISIBLE, this.updateForGridChange.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_MODEL_UPDATED, this.updateForDataChange.bind(this));\n this.addDestroyableEventListener(this.eventService, core_1.Events.EVENT_CELL_VALUE_CHANGED, this.updateForDataChange.bind(this));\n };\n ChartController.prototype.updateForGridChange = function () {\n if (this.model.isDetached()) {\n return;\n }\n this.model.updateCellRanges();\n this.setChartRange();\n };\n ChartController.prototype.updateForDataChange = function () {\n if (this.model.isDetached()) {\n return;\n }\n this.model.updateData();\n this.raiseChartUpdatedEvent();\n };\n ChartController.prototype.updateForRangeChange = function () {\n this.updateForGridChange();\n this.raiseChartRangeSelectionChangedEvent();\n };\n ChartController.prototype.updateForPanelChange = function (updatedCol) {\n this.model.updateCellRanges(updatedCol);\n this.setChartRange();\n this.raiseChartRangeSelectionChangedEvent();\n };\n ChartController.prototype.getChartModel = function () {\n return {\n chartId: this.model.getChartId(),\n chartType: this.model.getChartType(),\n chartPalette: this.getPaletteName(),\n chartOptions: this.chartProxy.getChartOptions(),\n cellRange: this.getCurrentCellRangeParams()\n };\n };\n ChartController.prototype.getPaletteName = function () {\n return this.chartPaletteName;\n };\n ChartController.prototype.getPalettes = function () {\n var customPalette = this.chartProxy.getCustomPalette();\n if (customPalette) {\n var map = new Map();\n map.set(undefined, customPalette);\n return map;\n }\n return palettes_1.palettes;\n };\n ChartController.prototype.setChartType = function (chartType) {\n this.model.setChartType(chartType);\n this.raiseChartUpdatedEvent();\n this.raiseChartOptionsChangedEvent();\n };\n ChartController.prototype.setChartPaletteName = function (palette) {\n this.chartPaletteName = palette;\n this.raiseChartUpdatedEvent();\n this.raiseChartOptionsChangedEvent();\n };\n ChartController.prototype.getColStateForMenu = function () {\n return { dimensionCols: this.model.getDimensionColState(), valueCols: this.model.getValueColState() };\n };\n ChartController.prototype.isDefaultCategorySelected = function () {\n var selectedDimension = this.model.getSelectedDimension().colId;\n return selectedDimension && selectedDimension === chartDataModel_1.ChartDataModel.DEFAULT_CATEGORY;\n };\n ChartController.prototype.setChartRange = function () {\n if (this.rangeController && !this.model.isSuppressChartRanges() && !this.model.isDetached()) {\n this.rangeController.setCellRanges(this.model.getCellRanges());\n }\n this.raiseChartUpdatedEvent();\n };\n ChartController.prototype.detachChartRange = function () {\n // when chart is detached it won't listen to changes from the grid\n this.model.toggleDetached();\n if (this.model.isDetached()) {\n // remove range from grid\n if (this.rangeController) {\n this.rangeController.setCellRanges([]);\n }\n }\n else {\n // update chart data may have changed\n this.updateForGridChange();\n }\n };\n ChartController.prototype.setChartProxy = function (chartProxy) {\n this.chartProxy = chartProxy;\n };\n ChartController.prototype.getChartProxy = function () {\n return this.chartProxy;\n };\n ChartController.prototype.isActiveXYChart = function () {\n return core_1._.includes([core_1.ChartType.Scatter, core_1.ChartType.Bubble], this.getChartType());\n };\n ChartController.prototype.getCurrentCellRangeParams = function () {\n var cellRanges = this.model.getCellRanges();\n var firstCellRange = cellRanges[0];\n return {\n rowStartIndex: firstCellRange.startRow && firstCellRange.startRow.rowIndex,\n rowStartPinned: firstCellRange.startRow && firstCellRange.startRow.rowPinned,\n rowEndIndex: firstCellRange.endRow && firstCellRange.endRow.rowIndex,\n rowEndPinned: firstCellRange.endRow && firstCellRange.endRow.rowPinned,\n columns: cellRanges.reduce(function (columns, value) { return columns.concat(value.columns.map(function (c) { return c.getId(); })); }, [])\n };\n };\n ChartController.prototype.raiseChartUpdatedEvent = function () {\n var event = Object.freeze({\n type: ChartController.EVENT_CHART_UPDATED\n });\n this.dispatchEvent(event);\n };\n ChartController.prototype.raiseChartOptionsChangedEvent = function () {\n var event = Object.freeze({\n type: core_1.Events.EVENT_CHART_OPTIONS_CHANGED,\n chartType: this.getChartType(),\n chartPalette: this.chartPaletteName,\n chartOptions: this.getChartProxy().getChartOptions(),\n });\n this.eventService.dispatchEvent(event);\n };\n ChartController.prototype.raiseChartRangeSelectionChangedEvent = function () {\n var event = Object.freeze({\n type: core_1.Events.EVENT_CHART_RANGE_SELECTION_CHANGED,\n id: this.model.getChartId(),\n cellRange: this.getCurrentCellRangeParams(),\n api: this.gridApi,\n columnApi: this.columnApi,\n });\n this.eventService.dispatchEvent(event);\n };\n ChartController.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.rangeController) {\n this.rangeController.setCellRanges([]);\n }\n };\n ChartController.EVENT_CHART_UPDATED = 'chartUpdated';\n __decorate([\n core_1.Autowired('eventService')\n ], ChartController.prototype, \"eventService\", void 0);\n __decorate([\n core_1.Autowired('rangeController')\n ], ChartController.prototype, \"rangeController\", void 0);\n __decorate([\n core_1.Autowired('gridApi')\n ], ChartController.prototype, \"gridApi\", void 0);\n __decorate([\n core_1.Autowired('columnApi')\n ], ChartController.prototype, \"columnApi\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ChartController.prototype, \"init\", null);\n return ChartController;\n}(core_1.BeanStub));\nexports.ChartController = ChartController;\n//# sourceMappingURL=chartController.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bbox_1 = require(\"./bbox\");\n/**\n * As of Jan 8, 2019, Firefox still doesn't implement\n * `getTransform(): DOMMatrix;`\n * `setTransform(transform?: DOMMatrix2DInit)`\n * in the `CanvasRenderingContext2D`.\n * Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=928150\n * IE11 and Edge 44 also don't have the support.\n * Thus this class, to keep track of the current transform and\n * combine transformations.\n * Standards:\n * https://html.spec.whatwg.org/dev/canvas.html\n * https://www.w3.org/TR/geometry-1/\n */\nvar Matrix = /** @class */ (function () {\n function Matrix(elements) {\n if (elements === void 0) { elements = [1, 0, 0, 1, 0, 0]; }\n this.elements = elements;\n }\n Matrix.prototype.setElements = function (elements) {\n var e = this.elements;\n // `this.elements = elements.slice()` is 4-5 times slower\n // (in Chrome 71 and FF 64) than manually copying elements,\n // since slicing allocates new memory.\n // The performance of passing parameters individually\n // vs as an array is about the same in both browsers, so we\n // go with a single (array of elements) parameter, because\n // `setElements(elements)` and `setElements([a, b, c, d, e, f])`\n // calls give us roughly the same performance, versus\n // `setElements(...elements)` and `setElements(a, b, c, d, e, f)`,\n // where the spread operator causes a 20-30x performance drop\n // (30x when compiled to ES5's `.apply(this, elements)`\n // 20x when used natively).\n e[0] = elements[0];\n e[1] = elements[1];\n e[2] = elements[2];\n e[3] = elements[3];\n e[4] = elements[4];\n e[5] = elements[5];\n return this;\n };\n Matrix.prototype.setIdentityElements = function () {\n var e = this.elements;\n e[0] = 1;\n e[1] = 0;\n e[2] = 0;\n e[3] = 1;\n e[4] = 0;\n e[5] = 0;\n return this;\n };\n Object.defineProperty(Matrix.prototype, \"identity\", {\n get: function () {\n var e = this.elements;\n return e[0] === 1 && e[1] === 0 && e[2] === 0 &&\n e[3] === 1 && e[4] === 0 && e[5] === 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"a\", {\n get: function () {\n return this.elements[0];\n },\n set: function (value) {\n this.elements[0] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"b\", {\n get: function () {\n return this.elements[1];\n },\n set: function (value) {\n this.elements[1] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"c\", {\n get: function () {\n return this.elements[2];\n },\n set: function (value) {\n this.elements[2] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"d\", {\n get: function () {\n return this.elements[3];\n },\n set: function (value) {\n this.elements[3] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"e\", {\n get: function () {\n return this.elements[4];\n },\n set: function (value) {\n this.elements[4] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"f\", {\n get: function () {\n return this.elements[5];\n },\n set: function (value) {\n this.elements[5] = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Performs the AxB matrix multiplication and saves the result\n * to `C`, if given, or to `A` otherwise.\n */\n Matrix.prototype.AxB = function (A, B, C) {\n var m11 = A[0], m12 = A[1], m21 = A[2], m22 = A[3], m31 = A[4], m32 = A[5];\n var o11 = B[0], o12 = B[1], o21 = B[2], o22 = B[3], o31 = B[4], o32 = B[5];\n C = C || A;\n C[0] = m11 * o11 + m21 * o12;\n C[1] = m12 * o11 + m22 * o12;\n C[2] = m11 * o21 + m21 * o22;\n C[3] = m12 * o21 + m22 * o22;\n C[4] = m11 * o31 + m21 * o32 + m31;\n C[5] = m12 * o31 + m22 * o32 + m32;\n };\n /**\n * The `other` matrix gets post-multiplied to the current matrix.\n * Returns the current matrix.\n * @param other\n */\n Matrix.prototype.multiplySelf = function (other) {\n this.AxB(this.elements, other.elements);\n return this;\n };\n /**\n * The `other` matrix gets post-multiplied to the current matrix.\n * Returns a new matrix.\n * @param other\n */\n Matrix.prototype.multiply = function (other) {\n var elements = new Array(6);\n this.AxB(this.elements, other.elements, elements);\n return new Matrix(elements);\n };\n Matrix.prototype.preMultiplySelf = function (other) {\n this.AxB(other.elements, this.elements, this.elements);\n return this;\n };\n /**\n * Returns the inverse of this matrix as a new matrix.\n */\n Matrix.prototype.inverse = function () {\n var _a = this.elements, a = _a[0], b = _a[1], c = _a[2], d = _a[3], e = _a[4], f = _a[5];\n var rD = 1 / (a * d - b * c); // reciprocal of determinant\n a *= rD;\n b *= rD;\n c *= rD;\n d *= rD;\n return new Matrix([d, -b, -c, a, c * f - d * e, b * e - a * f]);\n };\n /**\n * Save the inverse of this matrix to the given matrix.\n */\n Matrix.prototype.inverseTo = function (other) {\n var _a = this.elements, a = _a[0], b = _a[1], c = _a[2], d = _a[3], e = _a[4], f = _a[5];\n var rD = 1 / (a * d - b * c); // reciprocal of determinant\n a *= rD;\n b *= rD;\n c *= rD;\n d *= rD;\n other.setElements([d, -b, -c, a, c * f - d * e, b * e - a * f]);\n return this;\n };\n Matrix.prototype.invertSelf = function () {\n var elements = this.elements;\n var a = elements[0], b = elements[1], c = elements[2], d = elements[3], e = elements[4], f = elements[5];\n var rD = 1 / (a * d - b * c); // reciprocal of determinant\n a *= rD;\n b *= rD;\n c *= rD;\n d *= rD;\n elements[0] = d;\n elements[1] = -b;\n elements[2] = -c;\n elements[3] = a;\n elements[4] = c * f - d * e;\n elements[5] = b * e - a * f;\n return this;\n };\n Matrix.prototype.clone = function () {\n return new Matrix(this.elements.slice());\n };\n Matrix.prototype.transformPoint = function (x, y) {\n var e = this.elements;\n return {\n x: x * e[0] + y * e[2] + e[4],\n y: x * e[1] + y * e[3] + e[5]\n };\n };\n Matrix.prototype.transformBBox = function (bbox, radius, target) {\n if (radius === void 0) { radius = 0; }\n var elements = this.elements;\n var xx = elements[0];\n var xy = elements[1];\n var yx = elements[2];\n var yy = elements[3];\n var h_w = bbox.width * 0.5;\n var h_h = bbox.height * 0.5;\n var cx = bbox.x + h_w;\n var cy = bbox.y + h_h;\n var w, h;\n if (radius) {\n h_w -= radius;\n h_h -= radius;\n var sx = Math.sqrt(xx * xx + yx * yx);\n var sy = Math.sqrt(xy * xy + yy * yy);\n w = Math.abs(h_w * xx) + Math.abs(h_h * yx) + Math.abs(sx * radius);\n h = Math.abs(h_w * xy) + Math.abs(h_h * yy) + Math.abs(sy * radius);\n }\n else {\n w = Math.abs(h_w * xx) + Math.abs(h_h * yx);\n h = Math.abs(h_w * xy) + Math.abs(h_h * yy);\n }\n if (!target) {\n target = new bbox_1.BBox(0, 0, 0, 0);\n }\n target.x = cx * xx + cy * yx + elements[4] - w;\n target.y = cx * xy + cy * yy + elements[5] - h;\n target.width = w + w;\n target.height = h + h;\n return target;\n };\n Matrix.prototype.toContext = function (ctx) {\n // It's fair to say that matrix multiplications are not cheap.\n // However, updating path definitions on every frame isn't either, so\n // it may be cheaper to just translate paths. It's also fair to\n // say, that most paths will have to be re-rendered anyway, say\n // rectangle paths in a bar chart, where an animation would happen when\n // the data set changes and existing bars are morphed into new ones.\n // Or a pie chart, where old sectors are also morphed into new ones.\n // Same for the line chart. The only plausible case where translating\n // existing paths would be enough, is the scatter chart, where marker\n // icons, typically circles, stay the same size. But if circle radii\n // are bound to some data points, even circle paths would have to be\n // updated. And thus it makes sense to optimize for fewer matrix\n // transforms, where transform matrices of paths are mostly identity\n // matrices and `x`/`y`, `centerX`/`centerY` and similar properties\n // are used to define a path at specific coordinates. And only groups\n // are used to collectively apply a transform to a set of nodes.\n // If the matrix is mostly identity (95% of the time),\n // the `if (this.isIdentity)` check can make this call 3-4 times\n // faster on average: https://jsperf.com/matrix-check-first-vs-always-set\n if (this.identity) {\n return;\n }\n var e = this.elements;\n ctx.transform(e[0], e[1], e[2], e[3], e[4], e[5]);\n };\n Matrix.flyweight = function (elements) {\n if (elements) {\n if (elements instanceof Matrix) {\n Matrix.matrix.setElements(elements.elements);\n }\n else {\n Matrix.matrix.setElements(elements);\n }\n }\n else {\n Matrix.matrix.setIdentityElements();\n }\n return Matrix.matrix;\n };\n Matrix.matrix = new Matrix();\n return Matrix;\n}());\nexports.Matrix = Matrix;\n//# sourceMappingURL=matrix.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shape_1 = require(\"./shape\");\nvar object_1 = require(\"../../util/object\");\nvar bbox_1 = require(\"../bbox\");\nvar Line = /** @class */ (function (_super) {\n __extends(Line, _super);\n function Line() {\n var _this = _super.call(this) || this;\n _this._x1 = 0;\n _this._y1 = 0;\n _this._x2 = 0;\n _this._y2 = 0;\n _this.restoreOwnStyles();\n return _this;\n }\n Object.defineProperty(Line.prototype, \"x1\", {\n get: function () {\n // TODO: Investigate getter performance further in the context\n // of the scene graph.\n // In isolated benchmarks using a getter has the same\n // performance as a direct property access in Firefox 64.\n // But in Chrome 71 the getter is 60% slower than direct access.\n // Direct read is 4.5+ times slower in Chrome than it is in Firefox.\n // Property access and direct read have the same performance\n // in Safari 12, which is 2+ times faster than Firefox at this.\n // https://jsperf.com/es5-getters-setters-versus-getter-setter-methods/18\n // This is a know Chrome issue. They say it's not a regression, since\n // the behavior is observed since M60, but jsperf.com history shows the\n // 10x slowdown happened between Chrome 48 and Chrome 57.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=908743\n return this._x1;\n },\n set: function (value) {\n if (this._x1 !== value) {\n this._x1 = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Line.prototype, \"y1\", {\n get: function () {\n return this._y1;\n },\n set: function (value) {\n if (this._y1 !== value) {\n this._y1 = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Line.prototype, \"x2\", {\n get: function () {\n return this._x2;\n },\n set: function (value) {\n if (this._x2 !== value) {\n this._x2 = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Line.prototype, \"y2\", {\n get: function () {\n return this._y2;\n },\n set: function (value) {\n if (this._y2 !== value) {\n this._y2 = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Line.prototype.computeBBox = function () {\n return new bbox_1.BBox(this.x1, this.y1, this.x2 - this.x1, this.y2 - this.y1);\n };\n Line.prototype.isPointInPath = function (x, y) {\n return false;\n };\n Line.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Line.prototype.render = function (ctx) {\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.matrix.toContext(ctx);\n var x1 = this.x1;\n var y1 = this.y1;\n var x2 = this.x2;\n var y2 = this.y2;\n // Align to the pixel grid if the line is strictly vertical\n // or horizontal (but not both, i.e. a dot).\n if (x1 === x2) {\n var x = Math.round(x1) + Math.floor(this.strokeWidth) % 2 / 2;\n x1 = x;\n x2 = x;\n }\n else if (y1 === y2) {\n var y = Math.round(y1) + Math.floor(this.strokeWidth) % 2 / 2;\n y1 = y;\n y2 = y;\n }\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n this.fillStroke(ctx);\n this.dirty = false;\n };\n Line.className = 'Line';\n Line.defaultStyles = object_1.chainObjects(shape_1.Shape.defaultStyles, {\n fill: undefined,\n strokeWidth: 1\n });\n return Line;\n}(shape_1.Shape));\nexports.Line = Line;\n//# sourceMappingURL=line.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction chainObjects(parent, child) {\n var obj = Object.create(parent);\n for (var prop in child) {\n if (child.hasOwnProperty(prop)) {\n obj[prop] = child[prop];\n }\n }\n return obj;\n}\nexports.chainObjects = chainObjects;\n//# sourceMappingURL=object.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar chartProxy_1 = require(\"../chartProxy\");\nvar core_1 = require(\"@ag-grid-community/core\");\nvar chartDataModel_1 = require(\"../../chartDataModel\");\nvar chartAxis_1 = require(\"../../../../charts/chart/chartAxis\");\nvar array_1 = require(\"../../../../charts/util/array\");\nvar CartesianChartProxy = /** @class */ (function (_super) {\n __extends(CartesianChartProxy, _super);\n function CartesianChartProxy(params) {\n return _super.call(this, params) || this;\n }\n CartesianChartProxy.prototype.getAxisProperty = function (expression) {\n return core_1._.get(this.chartOptions.xAxis, expression, undefined);\n };\n CartesianChartProxy.prototype.setAxisProperty = function (expression, value) {\n core_1._.set(this.chartOptions.xAxis, expression, value);\n core_1._.set(this.chartOptions.yAxis, expression, value);\n var chart = this.chart;\n this.chart.axes.forEach(function (axis) { return core_1._.set(axis, expression, value); });\n chart.performLayout();\n this.raiseChartOptionsChangedEvent();\n };\n CartesianChartProxy.prototype.updateLabelRotation = function (categoryId, isHorizontalChart) {\n if (isHorizontalChart === void 0) { isHorizontalChart = false; }\n var labelRotation = 0;\n var axisKey = isHorizontalChart ? 'yAxis' : 'xAxis';\n if (categoryId !== chartDataModel_1.ChartDataModel.DEFAULT_CATEGORY && !this.chartProxyParams.grouping) {\n var label = this.chartOptions[axisKey].label;\n if (label && label.rotation) {\n labelRotation = label.rotation;\n }\n }\n var axisPosition = isHorizontalChart ? chartAxis_1.ChartAxisPosition.Left : chartAxis_1.ChartAxisPosition.Bottom;\n var axis = array_1.find(this.chart.axes, function (axis) { return axis.position === axisPosition; });\n if (axis) {\n axis.label.rotation = labelRotation;\n }\n };\n CartesianChartProxy.prototype.getDefaultAxisOptions = function () {\n var fontOptions = this.getDefaultFontOptions();\n var stroke = this.getAxisGridColor();\n var axisColor = \"rgba(195, 195, 195, 1)\";\n return {\n title: __assign(__assign({}, fontOptions), { enabled: false, fontSize: 14 }),\n line: {\n color: axisColor,\n width: 1,\n },\n tick: {\n color: axisColor,\n size: 6,\n width: 1,\n },\n label: __assign(__assign({}, fontOptions), { padding: 5, rotation: 0 }),\n gridStyle: [{\n stroke: stroke,\n lineDash: [4, 2]\n }]\n };\n };\n CartesianChartProxy.prototype.getDefaultCartesianChartOptions = function () {\n var options = this.getDefaultChartOptions();\n options.xAxis = this.getDefaultAxisOptions();\n options.yAxis = this.getDefaultAxisOptions();\n return options;\n };\n return CartesianChartProxy;\n}(chartProxy_1.ChartProxy));\nexports.CartesianChartProxy = CartesianChartProxy;\n//# sourceMappingURL=cartesianChartProxy.js.map","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar LicenseManager = /** @class */ (function () {\n function LicenseManager() {\n this.watermarkMessage = undefined;\n }\n LicenseManager_1 = LicenseManager;\n LicenseManager.prototype.validateLicense = function () {\n if (core_1._.missingOrEmpty(LicenseManager_1.licenseKey)) {\n this.outputMissingLicenseKey();\n }\n else if (LicenseManager_1.licenseKey.length > 32) {\n var _a = LicenseManager_1.extractLicenseComponents(LicenseManager_1.licenseKey), md5 = _a.md5, license = _a.license, version = _a.version, isTrial = _a.isTrial;\n if (md5 === this.md5.md5(license)) {\n if (core_1._.exists(version) && version) {\n this.validateLicenseKeyForVersion(version, !!isTrial, license);\n }\n else {\n this.validateLegacyKey(license);\n }\n }\n else {\n this.outputInvalidLicenseKey();\n }\n }\n else {\n this.outputInvalidLicenseKey();\n }\n };\n LicenseManager.extractExpiry = function (license) {\n var restrictionHashed = license.substring(license.lastIndexOf('_') + 1, license.length);\n return new Date(parseInt(LicenseManager_1.decode(restrictionHashed), 10));\n };\n LicenseManager.extractLicenseComponents = function (licenseKey) {\n var hashStart = licenseKey.length - 32;\n var md5 = licenseKey.substring(hashStart);\n var license = licenseKey.substring(0, hashStart);\n var _a = LicenseManager_1.extractBracketedInformation(licenseKey), version = _a[0], isTrial = _a[1];\n return { md5: md5, license: license, version: version, isTrial: isTrial };\n };\n LicenseManager.prototype.getLicenseDetails = function (licenseKey) {\n var _a = LicenseManager_1.extractLicenseComponents(licenseKey), md5 = _a.md5, license = _a.license, version = _a.version, isTrial = _a.isTrial;\n var valid = (md5 === this.md5.md5(license));\n var expiry = null;\n if (valid) {\n expiry = LicenseManager_1.extractExpiry(license);\n valid = !isNaN(expiry.getTime());\n }\n return {\n licenseKey: licenseKey,\n valid: valid,\n expiry: valid ? LicenseManager_1.formatDate(expiry) : null,\n version: version ? version : 'legacy',\n isTrial: isTrial\n };\n };\n LicenseManager.prototype.isDisplayWatermark = function () {\n return !core_1._.missingOrEmpty(this.watermarkMessage);\n };\n LicenseManager.prototype.getWatermarkMessage = function () {\n return this.watermarkMessage;\n };\n LicenseManager.formatDate = function (date) {\n var monthNames = [\n 'January', 'February', 'March',\n 'April', 'May', 'June', 'July',\n 'August', 'September', 'October',\n 'November', 'December'\n ];\n var day = date.getDate();\n var monthIndex = date.getMonth();\n var year = date.getFullYear();\n return day + ' ' + monthNames[monthIndex] + ' ' + year;\n };\n LicenseManager.getGridReleaseDate = function () {\n return new Date(parseInt(LicenseManager_1.decode(LicenseManager_1.RELEASE_INFORMATION), 10));\n };\n LicenseManager.decode = function (input) {\n var keystr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var t = '';\n var n, r, i;\n var s, o, u, a;\n var f = 0;\n var e = input.replace(/[^A-Za-z0-9+/=]/g, '');\n while (f < e.length) {\n s = keystr.indexOf(e.charAt(f++));\n o = keystr.indexOf(e.charAt(f++));\n u = keystr.indexOf(e.charAt(f++));\n a = keystr.indexOf(e.charAt(f++));\n n = s << 2 | o >> 4;\n r = (o & 15) << 4 | u >> 2;\n i = (u & 3) << 6 | a;\n t = t + String.fromCharCode(n);\n if (u != 64) {\n t = t + String.fromCharCode(r);\n }\n if (a != 64) {\n t = t + String.fromCharCode(i);\n }\n }\n t = LicenseManager_1.utf8_decode(t);\n return t;\n };\n LicenseManager.utf8_decode = function (input) {\n input = input.replace(/rn/g, 'n');\n var t = '';\n for (var n = 0; n < input.length; n++) {\n var r = input.charCodeAt(n);\n if (r < 128) {\n t += String.fromCharCode(r);\n }\n else if (r > 127 && r < 2048) {\n t += String.fromCharCode(r >> 6 | 192);\n t += String.fromCharCode(r & 63 | 128);\n }\n else {\n t += String.fromCharCode(r >> 12 | 224);\n t += String.fromCharCode(r >> 6 & 63 | 128);\n t += String.fromCharCode(r & 63 | 128);\n }\n }\n return t;\n };\n LicenseManager.setLicenseKey = function (licenseKey) {\n LicenseManager_1.licenseKey = licenseKey;\n };\n LicenseManager.extractBracketedInformation = function (licenseKey) {\n var matches = licenseKey.split('[')\n .filter(function (v) {\n return v.indexOf(']') > -1;\n })\n .map(function (value) {\n return value.split(']')[0];\n });\n if (!matches || matches.length === 0) {\n return [null, null];\n }\n var isTrial = matches.filter(function (match) { return match === 'TRIAL'; }).length === 1;\n var version = matches.filter(function (match) { return match.indexOf(\"v\") === 0; }).map(function (match) { return match.replace(/^v/, \"\"); })[0];\n return [version, isTrial];\n };\n LicenseManager.prototype.validateLicenseKeyForVersion = function (version, isTrial, license) {\n switch (version) {\n case \"2\":\n if (isTrial) {\n this.validateForTrial(license);\n }\n else {\n this.validateLegacyKey(license);\n }\n break;\n }\n };\n LicenseManager.prototype.validateLegacyKey = function (license) {\n var gridReleaseDate = LicenseManager_1.getGridReleaseDate();\n var expiry = LicenseManager_1.extractExpiry(license);\n var valid = false;\n var current = false;\n if (!isNaN(expiry.getTime())) {\n valid = true;\n current = (gridReleaseDate < expiry);\n }\n if (!valid) {\n this.outputInvalidLicenseKey();\n }\n else if (!current) {\n var formattedExpiryDate = LicenseManager_1.formatDate(expiry);\n var formattedReleaseDate = LicenseManager_1.formatDate(gridReleaseDate);\n this.outputIncompatibleVersion(formattedExpiryDate, formattedReleaseDate);\n }\n };\n LicenseManager.prototype.validateForTrial = function (license) {\n var expiry = LicenseManager_1.extractExpiry(license);\n var now = new Date();\n var valid = false;\n var current = false;\n if (!isNaN(expiry.getTime())) {\n valid = true;\n current = (expiry > now);\n }\n if (!valid) {\n this.outputInvalidLicenseKey();\n }\n else if (!current) {\n var formattedExpiryDate = LicenseManager_1.formatDate(expiry);\n this.outputExpiredTrialKey(formattedExpiryDate);\n }\n };\n LicenseManager.prototype.outputInvalidLicenseKey = function () {\n console.error('*****************************************************************************************************************');\n console.error('***************************************** ag-Grid Enterprise License ********************************************');\n console.error('********************************************* Invalid License ***************************************************');\n console.error('* Your license for ag-Grid Enterprise is not valid - please contact info@ag-grid.com to obtain a valid license. *');\n console.error('*****************************************************************************************************************');\n console.error('*****************************************************************************************************************');\n this.watermarkMessage = \"Invalid License\";\n };\n LicenseManager.prototype.outputExpiredTrialKey = function (formattedExpiryDate) {\n console.error('****************************************************************************************************************');\n console.error('***************************************** ag-Grid Enterprise License *******************************************');\n console.error('***************************************** Trial Period Expired. *******************************************');\n console.error(\"* Your license for ag-Grid Enterprise expired on \" + formattedExpiryDate + \". *\");\n console.error('* Please email info@ag-grid.com to purchase a license. *');\n console.error('****************************************************************************************************************');\n console.error('****************************************************************************************************************');\n this.watermarkMessage = \"Trial Period Expired\";\n };\n LicenseManager.prototype.outputMissingLicenseKey = function () {\n console.error('****************************************************************************************************************');\n console.error('***************************************** ag-Grid Enterprise License *******************************************');\n console.error('****************************************** License Key Not Found ***********************************************');\n console.error('* All ag-Grid Enterprise features are unlocked. *');\n console.error('* This is an evaluation only version, it is not licensed for development projects intended for production. *');\n console.error('* If you want to hide the watermark, please email info@ag-grid.com for a trial license. *');\n console.error('****************************************************************************************************************');\n console.error('****************************************************************************************************************');\n this.watermarkMessage = \"For Trial Use Only\";\n };\n LicenseManager.prototype.outputIncompatibleVersion = function (formattedExpiryDate, formattedReleaseDate) {\n console.error('****************************************************************************************************************************');\n console.error('********************************************* ag-Grid Enterprise License ***************************************************');\n console.error('*************************** License not compatible with installed version of ag-Grid Enterprise. ***************************');\n console.error(\"* Your license for ag-Grid Enterprise expired on \" + formattedExpiryDate + \" but the version installed was released on \" + formattedReleaseDate + \". *\");\n console.error('* Please contact info@ag-grid.com to renew your subscription to new versions. *');\n console.error('****************************************************************************************************************************');\n console.error('****************************************************************************************************************************');\n this.watermarkMessage = \"Incompatible License Version\";\n };\n var LicenseManager_1;\n LicenseManager.RELEASE_INFORMATION = 'MTU3NjA1OTQ4NDg4MA==';\n __decorate([\n core_1.Autowired('md5')\n ], LicenseManager.prototype, \"md5\", void 0);\n __decorate([\n core_1.PreConstruct\n ], LicenseManager.prototype, \"validateLicense\", null);\n LicenseManager = LicenseManager_1 = __decorate([\n core_1.Bean('licenseManager')\n ], LicenseManager);\n return LicenseManager;\n}());\nexports.LicenseManager = LicenseManager;\n//# sourceMappingURL=licenseManager.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar dropZoneColumnComp_1 = require(\"./dropZoneColumnComp\");\nvar BaseDropZonePanel = /** @class */ (function (_super) {\n __extends(BaseDropZonePanel, _super);\n function BaseDropZonePanel(horizontal, valueColumn, name) {\n var _this = _super.call(this, \"
\") || this;\n _this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n _this.guiDestroyFunctions = [];\n _this.childColumnComponents = [];\n _this.horizontal = horizontal;\n _this.valueColumn = valueColumn;\n _this.eColumnDropList = core_1._.loadTemplate('
');\n return _this;\n }\n BaseDropZonePanel.prototype.isHorizontal = function () {\n return this.horizontal;\n };\n BaseDropZonePanel.prototype.setBeans = function (beans) {\n this.beans = beans;\n };\n BaseDropZonePanel.prototype.destroy = function () {\n this.destroyGui();\n _super.prototype.destroy.call(this);\n };\n BaseDropZonePanel.prototype.destroyGui = function () {\n this.guiDestroyFunctions.forEach(function (func) { return func(); });\n this.guiDestroyFunctions.length = 0;\n this.childColumnComponents.length = 0;\n core_1._.clearElement(this.getGui());\n core_1._.clearElement(this.eColumnDropList);\n };\n BaseDropZonePanel.prototype.init = function (params) {\n this.params = params;\n this.logger = this.beans.loggerFactory.create('AbstractColumnDropPanel');\n this.beans.eventService.addEventListener(core_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.refreshGui.bind(this));\n this.addDestroyableEventListener(this.beans.gridOptionsWrapper, 'functionsReadOnly', this.refreshGui.bind(this));\n this.setupDropTarget();\n // we don't know if this bean will be initialised before columnController.\n // if columnController first, then below will work\n // if columnController second, then below will put blank in, and then above event gets first when columnController is set up\n this.refreshGui();\n };\n BaseDropZonePanel.prototype.setupDropTarget = function () {\n this.dropTarget = {\n getContainer: this.getGui.bind(this),\n getIconName: this.getIconName.bind(this),\n onDragging: this.onDragging.bind(this),\n onDragEnter: this.onDragEnter.bind(this),\n onDragLeave: this.onDragLeave.bind(this),\n onDragStop: this.onDragStop.bind(this),\n isInterestedIn: this.isInterestedIn.bind(this)\n };\n this.beans.dragAndDropService.addDropTarget(this.dropTarget);\n };\n BaseDropZonePanel.prototype.isInterestedIn = function (type) {\n // not interested in row drags\n return type === core_1.DragSourceType.HeaderCell || type === core_1.DragSourceType.ToolPanel;\n };\n BaseDropZonePanel.prototype.checkInsertIndex = function (draggingEvent) {\n var newIndex = this.horizontal ? this.getNewHorizontalInsertIndex(draggingEvent) : this.getNewVerticalInsertIndex(draggingEvent);\n // <0 happens when drag is no a direction we are interested in, eg drag is up/down but in horizontal panel\n if (newIndex < 0) {\n return false;\n }\n var changed = newIndex !== this.insertIndex;\n if (changed) {\n this.insertIndex = newIndex;\n }\n return changed;\n };\n BaseDropZonePanel.prototype.getNewHorizontalInsertIndex = function (draggingEvent) {\n if (core_1._.missing(draggingEvent.hDirection)) {\n return -1;\n }\n var newIndex = 0;\n var mouseEvent = draggingEvent.event;\n var enableRtl = this.beans.gridOptionsWrapper.isEnableRtl();\n var goingLeft = draggingEvent.hDirection === core_1.HorizontalDirection.Left;\n var mouseX = mouseEvent.clientX;\n this.childColumnComponents.forEach(function (childColumn) {\n var rect = childColumn.getGui().getBoundingClientRect();\n var rectX = goingLeft ? rect.right : rect.left;\n var horizontalFit = enableRtl ? mouseX <= rectX : mouseX >= rectX;\n if (horizontalFit) {\n newIndex++;\n }\n });\n return newIndex;\n };\n BaseDropZonePanel.prototype.getNewVerticalInsertIndex = function (draggingEvent) {\n if (core_1._.missing(draggingEvent.vDirection)) {\n return -1;\n }\n var newIndex = 0;\n var mouseEvent = draggingEvent.event;\n this.childColumnComponents.forEach(function (childColumn) {\n var rect = childColumn.getGui().getBoundingClientRect();\n var verticalFit = mouseEvent.clientY >= (draggingEvent.vDirection === core_1.VerticalDirection.Down ? rect.top : rect.bottom);\n if (verticalFit) {\n newIndex++;\n }\n });\n return newIndex;\n };\n BaseDropZonePanel.prototype.checkDragStartedBySelf = function (draggingEvent) {\n if (this.state !== BaseDropZonePanel.STATE_NOT_DRAGGING) {\n return;\n }\n this.state = BaseDropZonePanel.STATE_REARRANGE_COLUMNS;\n this.potentialDndColumns = draggingEvent.dragSource.getDragItem().columns || [];\n this.refreshGui();\n this.checkInsertIndex(draggingEvent);\n this.refreshGui();\n };\n BaseDropZonePanel.prototype.onDragging = function (draggingEvent) {\n this.checkDragStartedBySelf(draggingEvent);\n if (this.checkInsertIndex(draggingEvent)) {\n this.refreshGui();\n }\n };\n BaseDropZonePanel.prototype.onDragEnter = function (draggingEvent) {\n // this will contain all columns that are potential drops\n var dragColumns = draggingEvent.dragSource.getDragItem().columns || [];\n this.state = BaseDropZonePanel.STATE_NEW_COLUMNS_IN;\n // take out columns that are not droppable\n var goodDragColumns = dragColumns.filter(this.isColumnDroppable.bind(this));\n if (goodDragColumns.length > 0) {\n this.potentialDndColumns = goodDragColumns;\n this.checkInsertIndex(draggingEvent);\n this.refreshGui();\n }\n };\n BaseDropZonePanel.prototype.isPotentialDndColumns = function () {\n return core_1._.existsAndNotEmpty(this.potentialDndColumns);\n };\n BaseDropZonePanel.prototype.onDragLeave = function (draggingEvent) {\n // if the dragging started from us, we remove the group, however if it started\n // someplace else, then we don't, as it was only 'asking'\n if (this.state === BaseDropZonePanel.STATE_REARRANGE_COLUMNS) {\n var columns = draggingEvent.dragSource.getDragItem().columns || [];\n this.removeColumns(columns);\n }\n if (this.isPotentialDndColumns()) {\n this.potentialDndColumns = [];\n this.refreshGui();\n }\n this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n };\n BaseDropZonePanel.prototype.onDragStop = function () {\n if (this.isPotentialDndColumns()) {\n var success = false;\n if (this.state === BaseDropZonePanel.STATE_NEW_COLUMNS_IN) {\n this.addColumns(this.potentialDndColumns);\n success = true;\n }\n else {\n success = this.rearrangeColumns(this.potentialDndColumns);\n }\n this.potentialDndColumns = [];\n // If the function is passive, then we don't refresh, as we assume the client application\n // is going to call setRowGroups / setPivots / setValues at a later point which will then\n // cause a refresh. This gives a nice GUI where the ghost stays until the app has caught\n // up with the changes. However, if there was no change in the order, then we do need to\n // refresh to reset the columns\n if (!this.beans.gridOptionsWrapper.isFunctionsPassive() || !success) {\n this.refreshGui();\n }\n }\n this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n };\n BaseDropZonePanel.prototype.removeColumns = function (columnsToRemove) {\n var newColumnList = this.getExistingColumns().filter(function (col) { return !core_1._.includes(columnsToRemove, col); });\n this.updateColumns(newColumnList);\n };\n BaseDropZonePanel.prototype.addColumns = function (columnsToAdd) {\n var newColumnList = this.getExistingColumns().slice();\n core_1._.insertArrayIntoArray(newColumnList, columnsToAdd, this.insertIndex);\n this.updateColumns(newColumnList);\n };\n BaseDropZonePanel.prototype.rearrangeColumns = function (columnsToAdd) {\n var newColumnList = this.getNonGhostColumns().slice();\n core_1._.insertArrayIntoArray(newColumnList, columnsToAdd, this.insertIndex);\n if (core_1._.shallowCompare(newColumnList, this.getExistingColumns())) {\n return false;\n }\n else {\n this.updateColumns(newColumnList);\n return true;\n }\n };\n BaseDropZonePanel.prototype.refreshGui = function () {\n // we reset the scroll position after the refresh.\n // if we don't do this, then the list will always scroll to the top\n // each time we refresh it. this is because part of the refresh empties\n // out the list which sets scroll to zero. so the user could be just\n // reordering the list - we want to prevent the resetting of the scroll.\n // this is relevant for vertical display only (as horizontal has no scroll)\n var scrollTop = this.eColumnDropList.scrollTop;\n this.destroyGui();\n this.addIconAndTitleToGui();\n this.addEmptyMessageToGui();\n this.addColumnsToGui();\n if (!this.isHorizontal()) {\n this.eColumnDropList.scrollTop = scrollTop;\n }\n };\n BaseDropZonePanel.prototype.getNonGhostColumns = function () {\n var _this = this;\n var existingColumns = this.getExistingColumns();\n if (this.isPotentialDndColumns()) {\n return existingColumns.filter(function (column) { return !core_1._.includes(_this.potentialDndColumns, column); });\n }\n else {\n return existingColumns;\n }\n };\n BaseDropZonePanel.prototype.addColumnsToGui = function () {\n var _this = this;\n var nonGhostColumns = this.getNonGhostColumns();\n var addingGhosts = this.isPotentialDndColumns();\n var itemsToAddToGui = [];\n nonGhostColumns.forEach(function (column, index) {\n if (addingGhosts && index >= _this.insertIndex) {\n return;\n }\n var columnComponent = _this.createColumnComponent(column, false);\n itemsToAddToGui.push(columnComponent);\n });\n if (this.isPotentialDndColumns()) {\n this.potentialDndColumns.forEach(function (column) {\n var columnComponent = _this.createColumnComponent(column, true);\n itemsToAddToGui.push(columnComponent);\n });\n nonGhostColumns.forEach(function (column, index) {\n if (index < _this.insertIndex) {\n return;\n }\n var columnComponent = _this.createColumnComponent(column, false);\n itemsToAddToGui.push(columnComponent);\n });\n }\n this.getGui().appendChild(this.eColumnDropList);\n itemsToAddToGui.forEach(function (columnComponent, index) {\n if (index > 0) {\n _this.addArrow(_this.eColumnDropList);\n }\n _this.eColumnDropList.appendChild(columnComponent.getGui());\n });\n };\n BaseDropZonePanel.prototype.createColumnComponent = function (column, ghost) {\n var columnComponent = new dropZoneColumnComp_1.DropZoneColumnComp(column, this.dropTarget, ghost, this.valueColumn);\n columnComponent.addEventListener(dropZoneColumnComp_1.DropZoneColumnComp.EVENT_COLUMN_REMOVE, this.removeColumns.bind(this, [column]));\n this.beans.context.wireBean(columnComponent);\n this.guiDestroyFunctions.push(function () { return columnComponent.destroy(); });\n if (!ghost) {\n this.childColumnComponents.push(columnComponent);\n }\n return columnComponent;\n };\n BaseDropZonePanel.prototype.addIconAndTitleToGui = function () {\n var iconFaded = this.horizontal && this.isExistingColumnsEmpty();\n var eGroupIcon = this.params.icon;\n var eContainer = document.createElement('div');\n core_1._.addCssClass(eGroupIcon, 'ag-column-drop-icon');\n core_1._.addOrRemoveCssClass(eGroupIcon, 'ag-faded', iconFaded);\n eContainer.appendChild(eGroupIcon);\n if (!this.horizontal) {\n var eTitle = document.createElement('span');\n eTitle.innerHTML = this.params.title;\n core_1._.addCssClass(eTitle, 'ag-column-drop-title');\n core_1._.addOrRemoveCssClass(eTitle, 'ag-faded', iconFaded);\n eContainer.appendChild(eTitle);\n }\n this.getGui().appendChild(eContainer);\n };\n BaseDropZonePanel.prototype.isExistingColumnsEmpty = function () {\n return this.getExistingColumns().length === 0;\n };\n BaseDropZonePanel.prototype.addEmptyMessageToGui = function () {\n if (!this.isExistingColumnsEmpty() || this.isPotentialDndColumns()) {\n return;\n }\n var eMessage = document.createElement('span');\n eMessage.innerHTML = this.params.emptyMessage;\n core_1._.addCssClass(eMessage, 'ag-column-drop-empty-message');\n this.getGui().appendChild(eMessage);\n };\n BaseDropZonePanel.prototype.addArrow = function (eParent) {\n // only add the arrows if the layout is horizontal\n if (this.horizontal) {\n // for RTL it's a left arrow, otherwise it's a right arrow\n var enableRtl = this.beans.gridOptionsWrapper.isEnableRtl();\n eParent.appendChild(core_1._.createIconNoSpan(enableRtl ? 'smallLeft' : 'smallRight', this.beans.gridOptionsWrapper));\n }\n };\n BaseDropZonePanel.STATE_NOT_DRAGGING = 'notDragging';\n BaseDropZonePanel.STATE_NEW_COLUMNS_IN = 'newColumnsIn';\n BaseDropZonePanel.STATE_REARRANGE_COLUMNS = 'rearrangeColumns';\n return BaseDropZonePanel;\n}(core_1.Component));\nexports.BaseDropZonePanel = BaseDropZonePanel;\n//# sourceMappingURL=baseDropZonePanel.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar numberFormats_1 = require(\"./numberFormats\");\nvar fonts_1 = require(\"./fonts\");\nvar fills_1 = require(\"./fills\");\nvar borders_1 = require(\"./borders\");\nvar cellStyleXfs_1 = require(\"./cellStyleXfs\");\nvar cellXfs_1 = require(\"./cellXfs\");\nvar cellStyles_1 = require(\"./cellStyles\");\nvar numberFormat_1 = require(\"./numberFormat\");\nvar font_1 = require(\"./font\");\nvar border_1 = require(\"./border\");\nvar stylesMap;\nvar registeredNumberFmts;\nvar registeredFonts;\nvar registeredFills;\nvar registeredBorders;\nvar registeredCellStyleXfs;\nvar registeredCellXfs;\nvar registeredCellStyles;\nvar resetStylesheetValues = function () {\n stylesMap = { base: 0 };\n registeredNumberFmts = [];\n registeredFonts = [{ name: 'Calibri', size: 14, colorTheme: '1', family: 2, scheme: 'minor' }];\n registeredFills = [{ patternType: 'none', }, { patternType: 'gray125' }];\n registeredBorders = [{ left: undefined, right: undefined, top: undefined, bottom: undefined, diagonal: undefined }];\n registeredCellStyleXfs = [{ borderId: 0, fillId: 0, fontId: 0, numFmtId: 0 }];\n registeredCellXfs = [{ borderId: 0, fillId: 0, fontId: 0, numFmtId: 0, xfId: 0 }];\n registeredCellStyles = [{ builtinId: 0, name: 'normal', xfId: 0 }];\n};\nvar convertLegacyPattern = function (name) {\n var colorMap = {\n None: 'none',\n Solid: 'solid',\n Gray50: 'mediumGray',\n Gray75: 'darkGray',\n Gray25: 'lightGray',\n HorzStripe: 'darkHorizontal',\n VertStripe: 'darkVertical',\n ReverseDiagStripe: 'darkDown',\n DiagStripe: 'darkUp',\n DiagCross: 'darkGrid',\n ThickDiagCross: 'darkTrellis',\n ThinHorzStripe: 'lightHorizontal',\n ThinVertStripe: 'lightVertical',\n ThinReverseDiagStripe: 'lightDown',\n ThinDiagStripe: 'lightUp',\n ThinHorzCross: 'lightGrid',\n ThinDiagCross: 'lightTrellis',\n Gray125: 'gray125',\n Gray0625: 'gray0625'\n };\n if (!name) {\n return 'none';\n }\n return colorMap[name] || name;\n};\nexports.convertLegacyColor = function (color) {\n if (color == undefined) {\n return color;\n }\n if (color.charAt(0) === '#') {\n color = color.substr(1);\n }\n return color.length === 6 ? '00' + color : color;\n};\nvar registerFill = function (fill) {\n var convertedPattern = convertLegacyPattern(fill.pattern);\n var convertedFillColor = exports.convertLegacyColor(fill.color);\n var convertedPatternColor = exports.convertLegacyColor(fill.patternColor);\n var pos = core_1._.findIndex(registeredFills, function (currentFill) {\n var patternType = currentFill.patternType, fgRgb = currentFill.fgRgb, bgRgb = currentFill.bgRgb;\n if (patternType != convertedPattern ||\n fgRgb != convertedFillColor ||\n bgRgb != convertedPatternColor) {\n return false;\n }\n return true;\n });\n if (pos === -1) {\n pos = registeredFills.length;\n registeredFills.push({ patternType: convertedPattern, fgRgb: convertedFillColor, bgRgb: convertedPatternColor });\n }\n return pos;\n};\nvar registerNumberFmt = function (format) {\n format = core_1._.utf8_encode(format);\n if (numberFormat_1.numberFormatMap[format]) {\n return numberFormat_1.numberFormatMap[format];\n }\n var pos = core_1._.findIndex(registeredNumberFmts, function (currentFormat) { return currentFormat.formatCode === format; });\n if (pos === -1) {\n pos = registeredNumberFmts.length + 164;\n registeredNumberFmts.push({ formatCode: format, numFmtId: pos });\n }\n else {\n pos = registeredNumberFmts[pos].numFmtId;\n }\n return pos;\n};\nvar registerBorders = function (borders) {\n var borderBottom = borders.borderBottom, borderTop = borders.borderTop, borderLeft = borders.borderLeft, borderRight = borders.borderRight;\n var bottomStyle, topStyle, leftStyle, rightStyle;\n var bottomColor, topColor, leftColor, rightColor;\n if (borderLeft) {\n leftStyle = border_1.convertLegacyBorder(borderLeft.lineStyle, borderLeft.weight);\n leftColor = exports.convertLegacyColor(borderLeft.color);\n }\n if (borderRight) {\n rightStyle = border_1.convertLegacyBorder(borderRight.lineStyle, borderRight.weight);\n rightColor = exports.convertLegacyColor(borderRight.color);\n }\n if (borderBottom) {\n bottomStyle = border_1.convertLegacyBorder(borderBottom.lineStyle, borderBottom.weight);\n bottomColor = exports.convertLegacyColor(borderBottom.color);\n }\n if (borderTop) {\n topStyle = border_1.convertLegacyBorder(borderTop.lineStyle, borderTop.weight);\n topColor = exports.convertLegacyColor(borderTop.color);\n }\n var pos = core_1._.findIndex(registeredBorders, function (currentBorder) {\n var left = currentBorder.left, right = currentBorder.right, top = currentBorder.top, bottom = currentBorder.bottom;\n if (!left && (leftStyle || leftColor)) {\n return false;\n }\n if (!right && (rightStyle || rightColor)) {\n return false;\n }\n if (!top && (topStyle || topColor)) {\n return false;\n }\n if (!bottom && (bottomStyle || bottomColor)) {\n return false;\n }\n var _a = left || {}, clS = _a.style, clC = _a.color;\n var _b = right || {}, crS = _b.style, crC = _b.color;\n var _c = top || {}, ctS = _c.style, ctC = _c.color;\n var _d = bottom || {}, cbS = _d.style, cbC = _d.color;\n if (clS != leftStyle || clC != leftColor) {\n return false;\n }\n if (crS != rightStyle || crC != rightColor) {\n return false;\n }\n if (ctS != topStyle || ctC != topColor) {\n return false;\n }\n if (cbS != bottomStyle || cbC != bottomColor) {\n return false;\n }\n return true;\n });\n if (pos === -1) {\n pos = registeredBorders.length;\n registeredBorders.push({\n left: {\n style: leftStyle, color: leftColor\n },\n right: {\n style: rightStyle, color: rightColor\n },\n top: {\n style: topStyle, color: topColor\n },\n bottom: {\n style: bottomStyle, color: bottomColor\n },\n diagonal: {\n style: undefined,\n color: undefined\n }\n });\n }\n return pos;\n};\nvar registerFont = function (font) {\n var name = font.fontName, color = font.color, size = font.size, bold = font.bold, italic = font.italic, outline = font.outline, shadow = font.shadow, strikeThrough = font.strikeThrough, underline = font.underline, family = font.family;\n var utf8Name = name ? core_1._.utf8_encode(name) : name;\n var convertedColor = exports.convertLegacyColor(color);\n var familyId = font_1.getFamilyId(family);\n var pos = core_1._.findIndex(registeredFonts, function (currentFont) {\n if (currentFont.name != utf8Name ||\n currentFont.color != convertedColor ||\n currentFont.size != size ||\n currentFont.bold != bold ||\n currentFont.italic != italic ||\n currentFont.outline != outline ||\n currentFont.shadow != shadow ||\n currentFont.strike != strikeThrough ||\n currentFont.underline != underline ||\n currentFont.family != familyId) {\n return false;\n }\n return true;\n });\n if (pos === -1) {\n pos = registeredFonts.length;\n registeredFonts.push({\n name: utf8Name,\n color: convertedColor,\n size: size,\n bold: bold,\n italic: italic,\n outline: outline,\n shadow: shadow,\n strike: strikeThrough,\n underline: underline,\n family: familyId\n });\n }\n return pos;\n};\nvar registerStyle = function (config) {\n var id = config.id, alignment = config.alignment, borders = config.borders, font = config.font, interior = config.interior, numberFormat = config.numberFormat, protection = config.protection;\n var currentFill = 0;\n var currentBorder = 0;\n var currentFont = 0;\n var currentNumberFmt = 0;\n if (!id || stylesMap[id] != undefined) {\n return;\n }\n if (interior) {\n currentFill = registerFill(interior);\n }\n if (borders) {\n currentBorder = registerBorders(borders);\n }\n if (font) {\n currentFont = registerFont(font);\n }\n if (numberFormat) {\n currentNumberFmt = registerNumberFmt(numberFormat.format);\n }\n stylesMap[id] = registeredCellXfs.length;\n registeredCellXfs.push({\n alignment: alignment,\n borderId: currentBorder || 0,\n fillId: currentFill || 0,\n fontId: currentFont || 0,\n numFmtId: currentNumberFmt || 0,\n protection: protection,\n xfId: 0\n });\n};\nvar stylesheetFactory = {\n getTemplate: function () {\n var numberFormats = numberFormats_1.default.getTemplate(registeredNumberFmts);\n var fonts = fonts_1.default.getTemplate(registeredFonts);\n var fills = fills_1.default.getTemplate(registeredFills);\n var borders = borders_1.default.getTemplate(registeredBorders);\n var cellStylesXfs = cellStyleXfs_1.default.getTemplate(registeredCellStyleXfs);\n var cellXfs = cellXfs_1.default.getTemplate(registeredCellXfs);\n var cellStyles = cellStyles_1.default.getTemplate(registeredCellStyles);\n resetStylesheetValues();\n return {\n name: 'styleSheet',\n properties: {\n rawMap: {\n xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'\n }\n },\n children: [\n numberFormats,\n fonts,\n fills,\n borders,\n cellStylesXfs,\n cellXfs,\n cellStyles,\n {\n name: 'tableStyles',\n properties: {\n rawMap: {\n count: 0,\n defaultPivotStyle: 'PivotStyleLight16',\n defaultTableStyle: 'TableStyleMedium2'\n }\n }\n }\n ]\n };\n }\n};\nexports.getStyleId = function (name) {\n return stylesMap[name] || 0;\n};\nexports.registerStyles = function (styles) {\n resetStylesheetValues();\n styles.forEach(registerStyle);\n};\nexports.default = stylesheetFactory;\n//# sourceMappingURL=stylesheet.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar ShadowPanel = /** @class */ (function (_super) {\n __extends(ShadowPanel, _super);\n function ShadowPanel(chartController) {\n var _this = _super.call(this) || this;\n _this.chartController = chartController;\n return _this;\n }\n ShadowPanel.prototype.init = function () {\n this.setTemplate(ShadowPanel.TEMPLATE);\n this.shadowBlurSlider.setTextFieldWidth(45);\n this.shadowXOffsetSlider.setTextFieldWidth(45);\n this.shadowYOffsetSlider.setTextFieldWidth(45);\n this.initSeriesShadow();\n };\n ShadowPanel.prototype.initSeriesShadow = function () {\n var _this = this;\n this.shadowGroup\n .setTitle(this.chartTranslator.translate(\"shadow\"))\n .setEnabled(this.chartController.getChartProxy().getShadowEnabled())\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(false)\n .onEnableChange(function (newValue) { return _this.chartController.getChartProxy().setShadowProperty(\"enabled\", newValue); });\n this.shadowColorPicker\n .setLabel(this.chartTranslator.translate(\"color\"))\n .setLabelWidth(\"flex\")\n .setInputWidth(45)\n .setValue(\"rgba(0,0,0,0.5)\")\n .onValueChange(function (newValue) { return _this.chartController.getChartProxy().setShadowProperty(\"color\", newValue); });\n var initInput = function (input, property, minValue, maxValue) {\n input.setLabel(_this.chartTranslator.translate(property))\n .setValue(_this.chartController.getChartProxy().getShadowProperty(property))\n .setMinValue(minValue)\n .setMaxValue(maxValue)\n .onValueChange(function (newValue) { return _this.chartController.getChartProxy().setShadowProperty(property, newValue); });\n };\n initInput(this.shadowBlurSlider, \"blur\", 0, 20);\n initInput(this.shadowXOffsetSlider, \"xOffset\", -10, 10);\n initInput(this.shadowYOffsetSlider, \"yOffset\", -10, 10);\n };\n ShadowPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n \\n
\";\n __decorate([\n core_1.RefSelector('shadowGroup')\n ], ShadowPanel.prototype, \"shadowGroup\", void 0);\n __decorate([\n core_1.RefSelector('shadowColorPicker')\n ], ShadowPanel.prototype, \"shadowColorPicker\", void 0);\n __decorate([\n core_1.RefSelector('shadowBlurSlider')\n ], ShadowPanel.prototype, \"shadowBlurSlider\", void 0);\n __decorate([\n core_1.RefSelector('shadowXOffsetSlider')\n ], ShadowPanel.prototype, \"shadowXOffsetSlider\", void 0);\n __decorate([\n core_1.RefSelector('shadowYOffsetSlider')\n ], ShadowPanel.prototype, \"shadowYOffsetSlider\", void 0);\n __decorate([\n core_1.Autowired('chartTranslator')\n ], ShadowPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], ShadowPanel.prototype, \"init\", null);\n return ShadowPanel;\n}(core_1.Component));\nexports.ShadowPanel = ShadowPanel;\n//# sourceMappingURL=shadowPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction default_1(a, b, count) {\n var step = tickStep(a, b, count);\n a = Math.ceil(a / step) * step;\n b = Math.floor(b / step) * step + step / 2;\n // Add half a step here so that the array returned by `range` includes the last tick.\n return range(a, b, step);\n}\nexports.default = default_1;\nvar e10 = Math.sqrt(50);\nvar e5 = Math.sqrt(10);\nvar e2 = Math.sqrt(2);\nfunction tickStep(a, b, count) {\n var rawStep = Math.abs(b - a) / Math.max(0, count);\n var step = Math.pow(10, Math.floor(Math.log(rawStep) / Math.LN10)); // = Math.log10(rawStep)\n var error = rawStep / step;\n if (error >= e10) {\n step *= 10;\n }\n else if (error >= e5) {\n step *= 5;\n }\n else if (error >= e2) {\n step *= 2;\n }\n return b < a ? -step : step;\n}\nexports.tickStep = tickStep;\nfunction tickIncrement(a, b, count) {\n var rawStep = (b - a) / Math.max(0, count);\n var power = Math.floor(Math.log(rawStep) / Math.LN10);\n var error = rawStep / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\nexports.tickIncrement = tickIncrement;\nvar NumericTicks = /** @class */ (function (_super) {\n __extends(NumericTicks, _super);\n function NumericTicks(fractionDigits, size) {\n if (size === void 0) { size = 0; }\n var _this = _super.call(this, size) || this;\n _this.fractionDigits = fractionDigits;\n return _this;\n }\n return NumericTicks;\n}(Array));\nexports.NumericTicks = NumericTicks;\nfunction range(a, b, step) {\n if (step === void 0) { step = 1; }\n var absStep = Math.abs(step);\n var fractionDigits = (absStep > 0 && absStep < 1)\n ? Math.abs(Math.floor(Math.log(absStep) / Math.LN10))\n : 0;\n var f = Math.pow(10, fractionDigits);\n var n = Math.max(0, Math.ceil((b - a) / step)) || 0;\n var values = new NumericTicks(fractionDigits, n);\n for (var i = 0; i < n; i++) {\n var value = a + step * i;\n values[i] = Math.round(value * f) / f;\n }\n return values;\n}\n//# sourceMappingURL=ticks.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shape_1 = require(\"./shape\");\nvar path_1 = require(\"./path\");\nvar bbox_1 = require(\"../bbox\");\nvar angle_1 = require(\"../../util/angle\");\nvar object_1 = require(\"../../util/object\");\nvar number_1 = require(\"../../util/number\");\nvar ArcType;\n(function (ArcType) {\n ArcType[ArcType[\"Open\"] = 0] = \"Open\";\n ArcType[ArcType[\"Chord\"] = 1] = \"Chord\";\n ArcType[ArcType[\"Round\"] = 2] = \"Round\";\n})(ArcType = exports.ArcType || (exports.ArcType = {}));\n/**\n * Elliptical arc node.\n */\nvar Arc = /** @class */ (function (_super) {\n __extends(Arc, _super);\n function Arc() {\n var _this = _super.call(this) || this;\n _this._centerX = 0;\n _this._centerY = 0;\n _this._radiusX = 10;\n _this._radiusY = 10;\n _this._startAngle = 0;\n _this._endAngle = Math.PI * 2;\n _this._counterClockwise = false;\n /**\n * The type of arc to render:\n * - {@link ArcType.Open} - end points of the arc segment are not connected (default)\n * - {@link ArcType.Chord} - end points of the arc segment are connected by a line segment\n * - {@link ArcType.Round} - each of the end points of the arc segment are connected\n * to the center of the arc\n * Arcs with {@link ArcType.Open} do not support hit testing, even if they have their\n * {@link Shape.fillStyle} set, because they are not closed paths. Hit testing support\n * would require using two paths - one for rendering, another for hit testing - and there\n * doesn't seem to be a compelling reason to do that, when one can just use {@link ArcType.Chord}\n * to create a closed path.\n */\n _this._type = ArcType.Open;\n _this.restoreOwnStyles();\n return _this;\n }\n Object.defineProperty(Arc.prototype, \"centerX\", {\n get: function () {\n return this._centerX;\n },\n set: function (value) {\n if (this._centerX !== value) {\n this._centerX = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Arc.prototype, \"centerY\", {\n get: function () {\n return this._centerY;\n },\n set: function (value) {\n if (this._centerY !== value) {\n this._centerY = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Arc.prototype, \"radiusX\", {\n get: function () {\n return this._radiusX;\n },\n set: function (value) {\n if (this._radiusX !== value) {\n this._radiusX = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Arc.prototype, \"radiusY\", {\n get: function () {\n return this._radiusY;\n },\n set: function (value) {\n if (this._radiusY !== value) {\n this._radiusY = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Arc.prototype, \"startAngle\", {\n get: function () {\n return this._startAngle;\n },\n set: function (value) {\n if (this._startAngle !== value) {\n this._startAngle = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Arc.prototype, \"endAngle\", {\n get: function () {\n return this._endAngle;\n },\n set: function (value) {\n if (this._endAngle !== value) {\n this._endAngle = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Arc.prototype, \"fullPie\", {\n get: function () {\n return number_1.isEqual(angle_1.normalizeAngle360(this.startAngle), angle_1.normalizeAngle360(this.endAngle));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Arc.prototype, \"counterClockwise\", {\n get: function () {\n return this._counterClockwise;\n },\n set: function (value) {\n if (this._counterClockwise !== value) {\n this._counterClockwise = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Arc.prototype, \"type\", {\n get: function () {\n return this._type;\n },\n set: function (value) {\n if (this._type !== value) {\n this._type = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Arc.prototype.updatePath = function () {\n var path = this.path;\n path.clear(); // No need to recreate the Path, can simply clear the existing one.\n // This is much faster than the native Path2D implementation even though this `cubicArc`\n // method is pure TypeScript and actually produces the definition of an elliptical arc,\n // where you can specify two radii and rotation, while Path2D's `arc` method simply produces\n // a circular arc. Maybe it's due to the experimental nature of the Path2D class,\n // maybe it's because we have to create a new instance of it on each render, who knows...\n path.cubicArc(this.centerX, this.centerY, this.radiusX, this.radiusY, 0, this.startAngle, this.endAngle, this.counterClockwise ? 1 : 0);\n if (this.type === ArcType.Chord) {\n path.closePath();\n }\n else if (this.type === ArcType.Round && !this.fullPie) {\n path.lineTo(this.centerX, this.centerY);\n path.closePath();\n }\n };\n Arc.prototype.computeBBox = function () {\n // Only works with full arcs (circles) and untransformed ellipses.\n return new bbox_1.BBox(this.centerX - this.radiusX, this.centerY - this.radiusY, this.radiusX * 2, this.radiusY * 2);\n };\n Arc.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return this.type !== ArcType.Open\n && bbox.containsPoint(point.x, point.y)\n && this.path.isPointInPath(point.x, point.y);\n };\n Arc.className = 'Arc';\n Arc.defaultStyles = object_1.chainObjects(shape_1.Shape.defaultStyles, {\n lineWidth: 1,\n fillStyle: null\n });\n return Arc;\n}(path_1.Path));\nexports.Arc = Arc;\n//# sourceMappingURL=arc.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar intersection_1 = require(\"./intersection\");\nvar Path2D = /** @class */ (function () {\n function Path2D() {\n // The methods of this class will likely be called many times per animation frame,\n // and any allocation can trigger a GC cycle during animation, so we attempt\n // to minimize the number of allocations.\n this.commands = [];\n this.params = [];\n this._closedPath = false;\n }\n Path2D.prototype.moveTo = function (x, y) {\n if (this.xy) {\n this.xy[0] = x;\n this.xy[1] = y;\n }\n else {\n this.xy = [x, y];\n }\n this.commands.push('M');\n this.params.push(x, y);\n };\n Path2D.prototype.lineTo = function (x, y) {\n if (this.xy) {\n this.commands.push('L');\n this.params.push(x, y);\n this.xy[0] = x;\n this.xy[1] = y;\n }\n else {\n this.moveTo(x, y);\n }\n };\n Path2D.prototype.rect = function (x, y, width, height) {\n this.moveTo(x, y);\n this.lineTo(x + width, y);\n this.lineTo(x + width, y + height);\n this.lineTo(x, y + height);\n this.closePath();\n };\n /**\n * Adds an arc segment to the path definition.\n * https://www.w3.org/TR/SVG11/paths.html#PathDataEllipticalArcCommands\n * @param rx The major-axis radius.\n * @param ry The minor-axis radius.\n * @param rotation The x-axis rotation, expressed in radians.\n * @param fA The large arc flag. `1` to use angle > π.\n * @param fS The sweep flag. `1` for the arc that goes to `x`/`y` clockwise.\n * @param x2 The x coordinate to arc to.\n * @param y2 The y coordinate to arc to.\n */\n Path2D.prototype.arcTo = function (rx, ry, rotation, fA, fS, x2, y2) {\n // Convert from endpoint to center parametrization:\n // https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes\n var xy = this.xy;\n if (!xy) {\n return;\n }\n if (rx < 0) {\n rx = -rx;\n }\n if (ry < 0) {\n ry = -ry;\n }\n var x1 = xy[0];\n var y1 = xy[1];\n var hdx = (x1 - x2) / 2;\n var hdy = (y1 - y2) / 2;\n var sinPhi = Math.sin(rotation);\n var cosPhi = Math.cos(rotation);\n var xp = cosPhi * hdx + sinPhi * hdy;\n var yp = -sinPhi * hdx + cosPhi * hdy;\n var ratX = xp / rx;\n var ratY = yp / ry;\n var lambda = ratX * ratX + ratY * ratY;\n var cx = (x1 + x2) / 2;\n var cy = (y1 + y2) / 2;\n var cpx = 0;\n var cpy = 0;\n if (lambda >= 1) {\n lambda = Math.sqrt(lambda);\n rx *= lambda;\n ry *= lambda;\n // me gives lambda == cpx == cpy == 0;\n }\n else {\n lambda = Math.sqrt(1 / lambda - 1);\n if (fA === fS) {\n lambda = -lambda;\n }\n cpx = lambda * rx * ratY;\n cpy = -lambda * ry * ratX;\n cx += cosPhi * cpx - sinPhi * cpy;\n cy += sinPhi * cpx + cosPhi * cpy;\n }\n var theta1 = Math.atan2((yp - cpy) / ry, (xp - cpx) / rx);\n var deltaTheta = Math.atan2((-yp - cpy) / ry, (-xp - cpx) / rx) - theta1;\n // if (fS) {\n // if (deltaTheta <= 0) {\n // deltaTheta += Math.PI * 2;\n // }\n // }\n // else {\n // if (deltaTheta >= 0) {\n // deltaTheta -= Math.PI * 2;\n // }\n // }\n this.cubicArc(cx, cy, rx, ry, rotation, theta1, theta1 + deltaTheta, 1 - fS);\n };\n Path2D.prototype.arcToAlt = function (rx, ry, rotation, fA, fS, x2, y2) {\n // Convert from endpoint to center parametrization. See:\n // https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes\n if (!this.xy) {\n return;\n }\n if (rx < 0) {\n rx = -rx;\n }\n if (ry < 0) {\n ry = -ry;\n }\n var x1 = this.xy[0];\n var y1 = this.xy[1];\n var hdx = (x1 - x2) / 2;\n var hdy = (y1 - y2) / 2;\n var sinPhi = Math.sin(rotation);\n var cosPhi = Math.cos(rotation);\n var x1p = cosPhi * hdx + sinPhi * hdy;\n var y1p = -sinPhi * hdx + cosPhi * hdy;\n var rx_y1p = rx * rx * y1p * y1p;\n var ry_x1p = ry * ry * x1p * x1p;\n var root = Math.sqrt((rx * rx * ry * ry - rx_y1p - ry_x1p) / (rx_y1p + ry_x1p));\n var rootSign = fA === fS ? 0 : 1;\n var cxp = rootSign * root * rx * y1p / ry;\n var cyp = -rootSign * root * ry * x1p / rx;\n var cx = cosPhi * cxp - sinPhi * cyp + (x1 + x2) / 2;\n var cy = sinPhi * cxp + cosPhi * cyp + (y1 + y2) / 2;\n var theta1 = Math.acos((x1p - cxp) / rx / ((x1p - cxp) / rx));\n };\n /**\n * Approximates an elliptical arc with up to four cubic Bézier curves.\n * @param commands The string array to write SVG command letters to.\n * @param params The number array to write SVG command parameters (cubic control points) to.\n * @param cx The x-axis coordinate for the ellipse's center.\n * @param cy The y-axis coordinate for the ellipse's center.\n * @param rx The ellipse's major-axis radius.\n * @param ry The ellipse's minor-axis radius.\n * @param phi The rotation for this ellipse, expressed in radians.\n * @param theta1 The starting angle, measured clockwise from the positive x-axis and expressed in radians.\n * @param theta2 The ending angle, measured clockwise from the positive x-axis and expressed in radians.\n * @param anticlockwise The arc control points are always placed clockwise from `theta1` to `theta2`,\n * even when `theta1 > theta2`, unless this flag is set to `1`.\n */\n Path2D.cubicArc = function (commands, params, cx, cy, rx, ry, phi, theta1, theta2, anticlockwise) {\n if (anticlockwise) {\n var temp = theta1;\n theta1 = theta2;\n theta2 = temp;\n }\n var start = params.length;\n // See https://pomax.github.io/bezierinfo/#circles_cubic\n // Arc of unit circle (start angle = 0, end angle <= π/2) in cubic Bézier coordinates:\n // S = [1, 0]\n // C1 = [1, f]\n // C2 = [cos(θ) + f * sin(θ), sin(θ) - f * cos(θ)]\n // E = [cos(θ), sin(θ)]\n // f = 4/3 * tan(θ/4)\n var f90 = 0.5522847498307935; // f for θ = π/2 is 4/3 * (Math.sqrt(2) - 1)\n var sinTheta1 = Math.sin(theta1);\n var cosTheta1 = Math.cos(theta1);\n var sinPhi = Math.sin(phi);\n var cosPhi = Math.cos(phi);\n var rightAngle = Math.PI / 2;\n // Since we know how to draw an arc of a unit circle with a cubic Bézier,\n // to draw an elliptical arc with arbitrary rotation and radii we:\n // 1) rotate the Bézier coordinates that represent a circular arc by θ\n // 2) scale the circular arc separately along the x/y axes, making it elliptical\n // 3) rotate elliptical arc by φ\n // |cos(φ) -sin(φ)| |sx 0| |cos(θ) -sin(θ)| -> |xx xy|\n // |sin(φ) cos(φ)| | 0 sy| |sin(θ) cos(θ)| -> |yx yy|\n var xx = cosPhi * cosTheta1 * rx - sinPhi * sinTheta1 * ry;\n var yx = sinPhi * cosTheta1 * rx + cosPhi * sinTheta1 * ry;\n var xy = -cosPhi * sinTheta1 * rx - sinPhi * cosTheta1 * ry;\n var yy = -sinPhi * sinTheta1 * rx + cosPhi * cosTheta1 * ry;\n // TODO: what if delta between θ1 and θ2 is greater than 2π?\n // Always draw clockwise from θ1 to θ2.\n theta2 -= theta1;\n if (theta2 < 0) {\n theta2 += Math.PI * 2;\n }\n // Multiplying each point [x, y] by:\n // |xx xy cx| |x|\n // |yx yy cy| |y|\n // | 0 0 1| |1|\n // TODO: This move command may be redundant, if we are already at this point.\n // The coordinates of the point calculated here may differ ever so slightly\n // because of precision error.\n commands.push('M');\n params.push(xx + cx, yx + cy);\n while (theta2 >= rightAngle) {\n theta2 -= rightAngle;\n commands.push('C');\n // Temp workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=993330\n // Revert this commit when fixed ^^.\n var lastX = xy + cx;\n params.push(xx + xy * f90 + cx, yx + yy * f90 + cy, xx * f90 + xy + cx, yx * f90 + yy + cy, Math.abs(lastX) < 1e-8 ? 0 : lastX, yy + cy);\n // Prepend π/2 rotation matrix.\n // |xx xy| | 0 1| -> | xy -xx|\n // |yx yy| |-1 0| -> | yy -yx|\n // [xx, yx, xy, yy] = [xy, yy, -xx, -yx];\n // Compared to swapping with a temp variable, destructuring is:\n // - 10% faster in Chrome 70\n // - 99% slower in Firefox 63\n // Temp variable solution is 45% faster in FF than Chrome.\n // https://jsperf.com/multi-swap\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1165569\n var temp = xx;\n xx = xy;\n xy = -temp;\n temp = yx;\n yx = yy;\n yy = -temp;\n }\n if (theta2) {\n var f = 4 / 3 * Math.tan(theta2 / 4);\n var sinPhi2 = Math.sin(theta2);\n var cosPhi2 = Math.cos(theta2);\n var C2x = cosPhi2 + f * sinPhi2;\n var C2y = sinPhi2 - f * cosPhi2;\n commands.push('C');\n // Temp workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=993330\n // Revert this commit when fixed ^^.\n var lastX = xx * cosPhi2 + xy * sinPhi2 + cx;\n params.push(xx + xy * f + cx, yx + yy * f + cy, xx * C2x + xy * C2y + cx, yx * C2x + yy * C2y + cy, Math.abs(lastX) < 1e-8 ? 0 : lastX, yx * cosPhi2 + yy * sinPhi2 + cy);\n }\n if (anticlockwise) {\n for (var i = start, j = params.length - 2; i < j; i += 2, j -= 2) {\n var temp = params[i];\n params[i] = params[j];\n params[j] = temp;\n temp = params[i + 1];\n params[i + 1] = params[j + 1];\n params[j + 1] = temp;\n }\n }\n };\n Path2D.prototype.cubicArc = function (cx, cy, rx, ry, phi, theta1, theta2, anticlockwise) {\n var commands = this.commands;\n var params = this.params;\n var start = commands.length;\n Path2D.cubicArc(commands, params, cx, cy, rx, ry, phi, theta1, theta2, anticlockwise);\n var x = params[params.length - 2];\n var y = params[params.length - 1];\n if (this.xy) {\n commands[start] = 'L';\n this.xy[0] = x;\n this.xy[1] = y;\n }\n else {\n this.xy = [x, y];\n }\n };\n /**\n * Returns the `[x, y]` coordinates of the curve at `t`.\n * @param points `(n + 1) * 2` control point coordinates for a Bézier curve of n-th order.\n * @param t\n */\n Path2D.prototype.deCasteljau = function (points, t) {\n var n = points.length;\n if (n < 2 || n % 2 === 1) {\n throw new Error('Fewer than two points or not an even count.');\n }\n else if (n === 2 || t === 0) {\n return points.slice(0, 2);\n }\n else if (t === 1) {\n return points.slice(-2);\n }\n else {\n var newPoints = [];\n var last = n - 2;\n for (var i = 0; i < last; i += 2) {\n newPoints.push((1 - t) * points[i] + t * points[i + 2], // x\n (1 - t) * points[i + 1] + t * points[i + 3] // y\n );\n }\n return this.deCasteljau(newPoints, t);\n }\n };\n /**\n * Approximates the given curve using `n` line segments.\n * @param points `(n + 1) * 2` control point coordinates for a Bézier curve of n-th order.\n * @param n\n */\n Path2D.prototype.approximateCurve = function (points, n) {\n var xy = this.deCasteljau(points, 0);\n this.moveTo(xy[0], xy[1]);\n var step = 1 / n;\n for (var t = step; t <= 1; t += step) {\n var xy_1 = this.deCasteljau(points, t);\n this.lineTo(xy_1[0], xy_1[1]);\n }\n };\n /**\n * Adds a quadratic curve segment to the path definition.\n * Note: the given quadratic segment is converted and stored as a cubic one.\n * @param cx x-component of the curve's control point\n * @param cy y-component of the curve's control point\n * @param x x-component of the end point\n * @param y y-component of the end point\n */\n Path2D.prototype.quadraticCurveTo = function (cx, cy, x, y) {\n if (!this.xy) {\n this.moveTo(cx, cy);\n }\n // See https://pomax.github.io/bezierinfo/#reordering\n this.cubicCurveTo((this.xy[0] + 2 * cx) / 3, (this.xy[1] + 2 * cy) / 3, // 1/3 start + 2/3 control\n (2 * cx + x) / 3, (2 * cy + y) / 3, // 2/3 control + 1/3 end\n x, y);\n };\n Path2D.prototype.cubicCurveTo = function (cx1, cy1, cx2, cy2, x, y) {\n if (!this.xy) {\n this.moveTo(cx1, cy1);\n }\n this.commands.push('C');\n this.params.push(cx1, cy1, cx2, cy2, x, y);\n this.xy[0] = x;\n this.xy[1] = y;\n };\n Object.defineProperty(Path2D.prototype, \"closedPath\", {\n get: function () {\n return this._closedPath;\n },\n enumerable: true,\n configurable: true\n });\n Path2D.prototype.closePath = function () {\n if (this.xy) {\n this.xy = undefined;\n this.commands.push('Z');\n this._closedPath = true;\n }\n };\n Path2D.prototype.clear = function () {\n this.commands.length = 0;\n this.params.length = 0;\n this.xy = undefined;\n this._closedPath = false;\n };\n Path2D.prototype.isPointInPath = function (x, y) {\n var commands = this.commands;\n var params = this.params;\n var cn = commands.length;\n // Hit testing using ray casting method, where the ray's origin is some point\n // outside the path. In this case, an offscreen point that is remote enough, so that\n // even if the path itself is large and is partially offscreen, the ray's origin\n // will likely be outside the path anyway. To test if the given point is inside the\n // path or not, we cast a ray from the origin to the given point and check the number\n // of intersections of this segment with the path. If the number of intersections is\n // even, then the ray both entered and exited the path an equal number of times,\n // therefore the point is outside the path, and inside the path, if the number of\n // intersections is odd. Since the path is compound, we check if the ray segment\n // intersects with each of the path's segments, which can be either a line segment\n // (one or no intersection points) or a Bézier curve segment (up to 3 intersection\n // points).\n var ox = -10000;\n var oy = -10000;\n // the starting point of the current path\n var sx = NaN;\n var sy = NaN;\n // the previous point of the current path\n var px = 0;\n var py = 0;\n var intersectionCount = 0;\n for (var ci = 0, pi = 0; ci < cn; ci++) {\n switch (commands[ci]) {\n case 'M':\n if (!isNaN(sx)) {\n if (intersection_1.segmentIntersection(sx, sy, px, py, ox, oy, x, y)) {\n intersectionCount++;\n }\n }\n sx = px = params[pi++];\n sy = py = params[pi++];\n break;\n case 'L':\n if (intersection_1.segmentIntersection(px, py, px = params[pi++], py = params[pi++], ox, oy, x, y)) {\n intersectionCount++;\n }\n break;\n case 'C':\n intersectionCount += intersection_1.cubicSegmentIntersections(px, py, params[pi++], params[pi++], params[pi++], params[pi++], px = params[pi++], py = params[pi++], ox, oy, x, y).length;\n break;\n case 'Z':\n if (!isNaN(sx)) {\n if (intersection_1.segmentIntersection(sx, sy, px, py, ox, oy, x, y)) {\n intersectionCount++;\n }\n }\n break;\n }\n }\n return intersectionCount % 2 === 1;\n };\n Path2D.fromString = function (value) {\n var path = new Path2D();\n path.setFromString(value);\n return path;\n };\n /**\n * Split the SVG path at command letters,\n * then extract the command letter and parameters from each substring.\n * @param value\n */\n Path2D.parseSvgPath = function (value) {\n return value.trim().split(Path2D.splitCommandsRe).map(function (part) {\n var strParams = part.match(Path2D.matchParamsRe);\n return {\n command: part.substr(0, 1),\n params: strParams ? strParams.map(parseFloat) : []\n };\n });\n };\n Path2D.prettifySvgPath = function (value) {\n return Path2D.parseSvgPath(value).map(function (d) { return d.command + d.params.join(','); }).join('\\n');\n };\n /**\n * See https://www.w3.org/TR/SVG11/paths.html\n * @param value\n */\n Path2D.prototype.setFromString = function (value) {\n var _this = this;\n this.clear();\n var parts = Path2D.parseSvgPath(value);\n // Current point.\n var x;\n var y;\n // Last control point. Used to calculate the reflection point\n // for `S`, `s`, `T`, `t` commands.\n var cpx;\n var cpy;\n var lastCommand;\n function checkQuadraticCP() {\n if (!lastCommand.match(Path2D.quadraticCommandRe)) {\n cpx = x;\n cpy = y;\n }\n }\n function checkCubicCP() {\n if (!lastCommand.match(Path2D.cubicCommandRe)) {\n cpx = x;\n cpy = y;\n }\n }\n // But that will make compiler complain about x/y, cpx/cpy\n // being used without being set first.\n parts.forEach(function (part) {\n var p = part.params;\n var n = p.length;\n var i = 0;\n switch (part.command) {\n case 'M':\n _this.moveTo(x = p[i++], y = p[i++]);\n while (i < n) {\n _this.lineTo(x = p[i++], y = p[i++]);\n }\n break;\n case 'm':\n _this.moveTo(x += p[i++], y += p[i++]);\n while (i < n) {\n _this.lineTo(x += p[i++], y += p[i++]);\n }\n break;\n case 'L':\n while (i < n) {\n _this.lineTo(x = p[i++], y = p[i++]);\n }\n break;\n case 'l':\n while (i < n) {\n _this.lineTo(x += p[i++], y += p[i++]);\n }\n break;\n case 'C':\n while (i < n) {\n _this.cubicCurveTo(p[i++], p[i++], cpx = p[i++], cpy = p[i++], x = p[i++], y = p[i++]);\n }\n break;\n case 'c':\n while (i < n) {\n _this.cubicCurveTo(x + p[i++], y + p[i++], cpx = x + p[i++], cpy = y + p[i++], x += p[i++], y += p[i++]);\n }\n break;\n case 'S':\n checkCubicCP();\n while (i < n) {\n _this.cubicCurveTo(x + x - cpx, y + y - cpy, cpx = p[i++], cpy = p[i++], x = p[i++], y = p[i++]);\n }\n break;\n case 's':\n checkCubicCP();\n while (i < n) {\n _this.cubicCurveTo(x + x - cpx, y + y - cpy, cpx = x + p[i++], cpy = y + p[i++], x += p[i++], y += p[i++]);\n }\n break;\n case 'Q':\n while (i < n) {\n _this.quadraticCurveTo(cpx = p[i++], cpy = p[i++], x = p[i++], y = p[i++]);\n }\n break;\n case 'q':\n while (i < n) {\n _this.quadraticCurveTo(cpx = x + p[i++], cpy = y + p[i++], x += p[i++], y += p[i++]);\n }\n break;\n case 'T':\n checkQuadraticCP();\n while (i < n) {\n _this.quadraticCurveTo(cpx = x + x - cpx, cpy = y + y - cpy, x = p[i++], y = p[i++]);\n }\n break;\n case 't':\n checkQuadraticCP();\n while (i < n) {\n _this.quadraticCurveTo(cpx = x + x - cpx, cpy = y + y - cpy, x += p[i++], y += p[i++]);\n }\n break;\n case 'A':\n while (i < n) {\n _this.arcTo(p[i++], p[i++], p[i++] * Math.PI / 180, p[i++], p[i++], x = p[i++], y = p[i++]);\n }\n break;\n case 'a':\n while (i < n) {\n _this.arcTo(p[i++], p[i++], p[i++] * Math.PI / 180, p[i++], p[i++], x += p[i++], y += p[i++]);\n }\n break;\n case 'Z':\n case 'z':\n _this.closePath();\n break;\n case 'H':\n while (i < n) {\n _this.lineTo(x = p[i++], y);\n }\n break;\n case 'h':\n while (i < n) {\n _this.lineTo(x += p[i++], y);\n }\n break;\n case 'V':\n while (i < n) {\n _this.lineTo(x, y = p[i++]);\n }\n break;\n case 'v':\n while (i < n) {\n _this.lineTo(x, y += p[i++]);\n }\n break;\n }\n lastCommand = part.command;\n });\n };\n Path2D.prototype.toString = function () {\n var c = this.commands;\n var p = this.params;\n var cn = c.length;\n var out = [];\n for (var ci = 0, pi = 0; ci < cn; ci++) {\n switch (c[ci]) {\n case 'M':\n out.push('M' + p[pi++] + ',' + p[pi++]);\n break;\n case 'L':\n out.push('L' + p[pi++] + ',' + p[pi++]);\n break;\n case 'C':\n out.push('C' + p[pi++] + ',' + p[pi++] + ' ' +\n p[pi++] + ',' + p[pi++] + ' ' +\n p[pi++] + ',' + p[pi++]);\n break;\n case 'Z':\n out.push('Z');\n break;\n }\n }\n return out.join('');\n };\n Path2D.prototype.toPrettyString = function () {\n return Path2D.prettifySvgPath(this.toString());\n };\n Path2D.prototype.toSvg = function () {\n return Path2D.xmlDeclaration + \"\\n\\n \\n\";\n };\n Path2D.prototype.toDebugSvg = function () {\n var d = Path2D.prettifySvgPath(this.toString());\n return Path2D.xmlDeclaration + \"\\n\\n \\n\";\n };\n /**\n * Returns an array of sub-paths of this Path,\n * where each sub-path is represented exclusively by cubic segments.\n */\n Path2D.prototype.toCubicPaths = function () {\n // Each sub-path is an array of `(n * 3 + 1) * 2` numbers,\n // where `n` is the number of segments.\n var paths = [];\n var params = this.params;\n // current path\n var path;\n // the starting point of the current path\n var sx;\n var sy;\n // the previous point of the current path\n var px;\n var py;\n var i = 0; // current parameter\n this.commands.forEach(function (command) {\n switch (command) {\n case 'M':\n path = [\n sx = px = params[i++],\n sy = py = params[i++]\n ];\n paths.push(path);\n break;\n case 'L':\n var x = params[i++];\n var y = params[i++];\n // Place control points along the line `a + (b - a) * t`\n // at t = 1/3 and 2/3:\n path.push((px + px + x) / 3, (py + py + y) / 3, (px + x + x) / 3, (py + y + y) / 3, px = x, py = y);\n break;\n case 'C':\n path.push(params[i++], params[i++], params[i++], params[i++], px = params[i++], py = params[i++]);\n break;\n case 'Z':\n path.push((px + px + sx) / 3, (py + py + sy) / 3, (px + sx + sx) / 3, (py + sy + sy) / 3, px = sx, py = sy);\n break;\n }\n });\n return paths;\n };\n Path2D.cubicPathToString = function (path) {\n var n = path.length;\n if (!(n % 2 === 0 && (n / 2 - 1) / 2 >= 1)) {\n throw new Error('Invalid path.');\n }\n return 'M' + path.slice(0, 2).join(',') + 'C' + path.slice(2).join(',');\n };\n Path2D.splitCommandsRe = /(?=[AaCcHhLlMmQqSsTtVvZz])/g;\n Path2D.matchParamsRe = /-?[0-9]*\\.?\\d+/g;\n Path2D.quadraticCommandRe = /[QqTt]/;\n Path2D.cubicCommandRe = /[CcSs]/;\n Path2D.xmlDeclaration = '';\n Path2D.xmlns = 'http://www.w3.org/2000/svg';\n return Path2D;\n}());\nexports.Path2D = Path2D;\n//# sourceMappingURL=path2D.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar scatterChartProxy_1 = require(\"../../../chartProxies/cartesian/scatterChartProxy\");\nvar MarkersPanel = /** @class */ (function (_super) {\n __extends(MarkersPanel, _super);\n function MarkersPanel(chartController) {\n var _this = _super.call(this) || this;\n _this.chartController = chartController;\n return _this;\n }\n MarkersPanel.prototype.init = function () {\n this.setTemplate(MarkersPanel.TEMPLATE);\n this.initMarkers();\n };\n MarkersPanel.prototype.initMarkers = function () {\n var _this = this;\n // scatter charts should always show markers\n var shouldHideEnabledCheckbox = this.chartController.getChartProxy() instanceof scatterChartProxy_1.ScatterChartProxy;\n this.seriesMarkersGroup\n .setTitle(this.chartTranslator.translate(\"markers\"))\n .hideEnabledCheckbox(shouldHideEnabledCheckbox)\n .setEnabled(this.chartController.getChartProxy().getSeriesOption(\"marker.enabled\") || false)\n .hideOpenCloseIcons(true)\n .onEnableChange(function (newValue) { return _this.chartController.getChartProxy().setSeriesOption(\"marker.enabled\", newValue); });\n var initInput = function (expression, input, labelKey, maxValue) {\n input.setLabel(_this.chartTranslator.translate(labelKey))\n .setValue(_this.chartController.getChartProxy().getSeriesOption(expression))\n .setMaxValue(maxValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartController.getChartProxy().setSeriesOption(expression, newValue); });\n };\n if (this.chartController.getChartType() === core_1.ChartType.Bubble) {\n initInput(\"marker.minSize\", this.seriesMarkerMinSizeSlider, \"minSize\", 60);\n initInput(\"marker.size\", this.seriesMarkerSizeSlider, \"maxSize\", 60);\n }\n else {\n this.seriesMarkerMinSizeSlider.setDisplayed(false);\n initInput(\"marker.size\", this.seriesMarkerSizeSlider, \"size\", 60);\n }\n initInput(\"marker.strokeWidth\", this.seriesMarkerStrokeWidthSlider, \"strokeWidth\", 10);\n };\n MarkersPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n
\";\n __decorate([\n core_1.RefSelector('seriesMarkersGroup')\n ], MarkersPanel.prototype, \"seriesMarkersGroup\", void 0);\n __decorate([\n core_1.RefSelector('seriesMarkerSizeSlider')\n ], MarkersPanel.prototype, \"seriesMarkerSizeSlider\", void 0);\n __decorate([\n core_1.RefSelector('seriesMarkerMinSizeSlider')\n ], MarkersPanel.prototype, \"seriesMarkerMinSizeSlider\", void 0);\n __decorate([\n core_1.RefSelector('seriesMarkerStrokeWidthSlider')\n ], MarkersPanel.prototype, \"seriesMarkerStrokeWidthSlider\", void 0);\n __decorate([\n core_1.Autowired('chartTranslator')\n ], MarkersPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n core_1.PostConstruct\n ], MarkersPanel.prototype, \"init\", null);\n return MarkersPanel;\n}(core_1.Component));\nexports.MarkersPanel = MarkersPanel;\n//# sourceMappingURL=markersPanel.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar marker_1 = require(\"./marker\");\nvar Square = /** @class */ (function (_super) {\n __extends(Square, _super);\n function Square() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Square.prototype.updatePath = function () {\n var _a = this, path = _a.path, x = _a.x, y = _a.y;\n var hs = this.size / 2;\n path.clear();\n path.moveTo(x - hs, y - hs);\n path.lineTo(x + hs, y - hs);\n path.lineTo(x + hs, y + hs);\n path.lineTo(x - hs, y + hs);\n path.closePath();\n };\n Square.className = 'Square';\n return Square;\n}(marker_1.Marker));\nexports.Square = Square;\n//# sourceMappingURL=square.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar compare_1 = require(\"../util/compare\");\nvar value_1 = require(\"../interpolate/value\");\nvar number_1 = require(\"../interpolate/number\");\nvar bisect_1 = require(\"../util/bisect\");\nexports.constant = function (x) { return function () { return x; }; };\nexports.identity = function (x) { return x; };\nfunction clamper(domain) {\n var _a;\n var a = domain[0];\n var b = domain[domain.length - 1];\n if (a > b) {\n _a = [b, a], a = _a[0], b = _a[1];\n }\n return function (x) { return Math.max(a, Math.min(b, x)); };\n}\nvar ContinuousScale = /** @class */ (function () {\n function ContinuousScale() {\n /**\n * The output value of the scale for `undefined` or `NaN` input values.\n */\n this.unknown = undefined;\n this._clamp = exports.identity;\n this._domain = [0, 1];\n this._range = [0, 1];\n this.transform = exports.identity; // transforms domain value\n this.untransform = exports.identity; // untransforms domain value\n this._interpolate = value_1.default;\n this.rescale();\n }\n Object.defineProperty(ContinuousScale.prototype, \"clamp\", {\n get: function () {\n return this._clamp !== exports.identity;\n },\n set: function (value) {\n this._clamp = value ? clamper(this.domain) : exports.identity;\n },\n enumerable: true,\n configurable: true\n });\n ContinuousScale.prototype.setDomain = function (values) {\n this._domain = Array.prototype.map.call(values, function (v) { return +v; });\n if (this._clamp !== exports.identity) {\n this._clamp = clamper(this.domain);\n }\n this.rescale();\n };\n ContinuousScale.prototype.getDomain = function () {\n return this._domain.slice();\n };\n Object.defineProperty(ContinuousScale.prototype, \"domain\", {\n get: function () {\n return this.getDomain();\n },\n set: function (values) {\n this.setDomain(values);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ContinuousScale.prototype, \"range\", {\n get: function () {\n return this._range.slice();\n },\n set: function (values) {\n this._range = Array.prototype.slice.call(values);\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ContinuousScale.prototype, \"interpolate\", {\n get: function () {\n return this._interpolate;\n },\n set: function (value) {\n this._interpolate = value;\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n ContinuousScale.prototype.rescale = function () {\n if (Math.min(this.domain.length, this.range.length) > 2) {\n this.piecewise = this.polymap;\n }\n else {\n this.piecewise = this.bimap;\n }\n this.output = undefined;\n this.input = undefined;\n };\n /**\n * Returns a function that converts `x` in `[a, b]` to `t` in `[0, 1]`. Non-clamping.\n * @param a\n * @param b\n */\n ContinuousScale.prototype.normalize = function (a, b) {\n return (b -= (a = +a))\n ? function (x) { return (x - a) / b; }\n : exports.constant(isNaN(b) ? NaN : 0.5);\n };\n ContinuousScale.prototype.bimap = function (domain, range, interpolate) {\n var x0 = domain[0];\n var x1 = domain[1];\n var y0 = range[0];\n var y1 = range[1];\n var xt;\n var ty;\n if (x1 < x0) {\n xt = this.normalize(x1, x0);\n ty = interpolate(y1, y0);\n }\n else {\n xt = this.normalize(x0, x1);\n ty = interpolate(y0, y1);\n }\n return function (x) { return ty(xt(x)); }; // domain value x --> t in [0, 1] --> range value y\n };\n ContinuousScale.prototype.polymap = function (domain, range, interpolate) {\n var _this = this;\n // number of segments in the polylinear scale\n var n = Math.min(domain.length, range.length) - 1;\n if (domain[n] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n // deinterpolators from domain segment value to t\n var dt = Array.from({ length: n }, function (_, i) { return _this.normalize(domain[i], domain[i + 1]); });\n // reinterpolators from t to range segment value\n var tr = Array.from({ length: n }, function (_, i) { return interpolate(range[i], range[i + 1]); });\n return function (x) {\n var i = bisect_1.bisectRight(domain, x, compare_1.ascending, 1, n) - 1; // Find the domain segment that `x` belongs to.\n // This also tells us which deinterpolator/reinterpolator pair to use.\n return tr[i](dt[i](x));\n };\n };\n ContinuousScale.prototype.convert = function (x) {\n x = +x;\n if (isNaN(x)) {\n return this.unknown;\n }\n else {\n if (!this.output) {\n this.output = this.piecewise(this.domain.map(this.transform), this.range, this.interpolate);\n }\n return this.output(this.transform(this._clamp(x)));\n }\n };\n ContinuousScale.prototype.invert = function (y) {\n if (!this.input) {\n this.input = this.piecewise(this.range, this.domain.map(this.transform), number_1.default);\n }\n return this._clamp(this.untransform(this.input(y)));\n };\n return ContinuousScale;\n}());\nexports.default = ContinuousScale;\n//# sourceMappingURL=continuousScale.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constant_1 = require(\"./constant\");\nvar number_1 = require(\"./number\");\nvar date_1 = require(\"./date\");\nvar array_1 = require(\"./array\");\nvar object_1 = require(\"./object\");\nfunction default_1(a, b) {\n var t = typeof b;\n // let c;\n return b == null || t === 'boolean' ? constant_1.default(b)\n : (t === 'number' ? number_1.default\n // : t === 'string' ? ((c = color(b)) ? (b = c, rgb) : string)\n // : b instanceof color ? rgb\n : b instanceof Date ? date_1.default\n : Array.isArray(b) ? array_1.default\n : typeof b.valueOf !== 'function' && typeof b.toString !== 'function' || isNaN(b) ? object_1.default\n : number_1.default)(a, b);\n}\nexports.default = default_1;\n//# sourceMappingURL=value.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar timeScale_1 = require(\"../../scale/timeScale\");\nvar chartAxis_1 = require(\"../chartAxis\");\nvar TimeAxis = /** @class */ (function (_super) {\n __extends(TimeAxis, _super);\n function TimeAxis() {\n var _this = _super.call(this, new timeScale_1.TimeScale()) || this;\n _this._nice = true;\n _this.scale.clamp = true;\n return _this;\n }\n Object.defineProperty(TimeAxis.prototype, \"nice\", {\n get: function () {\n return this._nice;\n },\n set: function (value) {\n if (this._nice !== value) {\n this._nice = value;\n if (value && this.scale.nice) {\n this.scale.nice(10);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimeAxis.prototype, \"domain\", {\n get: function () {\n return this.scale.domain;\n },\n set: function (value) {\n this.scale.domain = value;\n if (this.nice && this.scale.nice) {\n this.scale.nice(10);\n }\n },\n enumerable: true,\n configurable: true\n });\n return TimeAxis;\n}(chartAxis_1.ChartAxis));\nexports.TimeAxis = TimeAxis;\n//# sourceMappingURL=timeAxis.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar node_1 = require(\"./node\");\nvar path2D_1 = require(\"./path2D\");\n/**\n * Acts as `Group` node but with specified bounds that form a rectangle.\n * Any parts of the child nodes outside that rectangle will not be visible.\n * Unlike the `Group` node, the `ClipRect` node cannot be transformed.\n */\nvar ClipRect = /** @class */ (function (_super) {\n __extends(ClipRect, _super);\n function ClipRect() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isContainerNode = true;\n _this.path = new path2D_1.Path2D();\n _this._active = true;\n _this._dirtyPath = true;\n _this._x = 0;\n _this._y = 0;\n _this._width = 10;\n _this._height = 10;\n return _this;\n }\n ClipRect.prototype.isPointInNode = function (x, y) {\n var point = this.transformPoint(x, y);\n return point.x >= this.x && point.x <= this.x + this.width\n && point.y >= this.y && point.y <= this.y + this.height;\n };\n Object.defineProperty(ClipRect.prototype, \"active\", {\n get: function () {\n return this._active;\n },\n set: function (value) {\n if (this._active !== value) {\n this._active = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClipRect.prototype, \"dirtyPath\", {\n get: function () {\n return this._dirtyPath;\n },\n set: function (value) {\n if (this._dirtyPath !== value) {\n this._dirtyPath = value;\n if (value) {\n this.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClipRect.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClipRect.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClipRect.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n set: function (value) {\n if (this._width !== value) {\n this._width = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClipRect.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n set: function (value) {\n if (this._height !== value) {\n this._height = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n ClipRect.prototype.updatePath = function () {\n var path = this.path;\n path.clear();\n path.rect(this.x, this.y, this.width, this.height);\n this.dirtyPath = false;\n };\n ClipRect.prototype.render = function (ctx) {\n if (this.active) {\n if (this.dirtyPath) {\n this.updatePath();\n }\n this.scene.appendPath(this.path);\n ctx.clip();\n }\n var children = this.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n ctx.save();\n var child = children[i];\n if (child.visible) {\n child.render(ctx);\n }\n ctx.restore();\n }\n };\n ClipRect.className = 'ClipRect';\n return ClipRect;\n}(node_1.Node));\nexports.ClipRect = ClipRect;\n//# sourceMappingURL=clipRect.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rangeSelectionModule_1 = require(\"./rangeSelectionModule\");\nexports.RangeSelectionModule = rangeSelectionModule_1.RangeSelectionModule;\n//# sourceMappingURL=main.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@ag-grid-community/core\");\nvar MenuItemComponent = /** @class */ (function (_super) {\n __extends(MenuItemComponent, _super);\n function MenuItemComponent(params) {\n var _this = _super.call(this, MenuItemComponent.TEMPLATE) || this;\n _this.params = params;\n return _this;\n }\n MenuItemComponent.prototype.init = function () {\n var _this = this;\n if (this.params.checked) {\n this.eIcon.appendChild(core_1._.createIconNoSpan('check', this.gridOptionsWrapper));\n }\n else if (this.params.icon) {\n if (core_1._.isNodeOrElement(this.params.icon)) {\n this.eIcon.appendChild(this.params.icon);\n }\n else if (typeof this.params.icon === 'string') {\n this.eIcon.innerHTML = this.params.icon;\n }\n else {\n console.warn('ag-Grid: menu item icon must be DOM node or string');\n }\n }\n else {\n // if i didn't put space here, the alignment was messed up, probably\n // fixable with CSS but i was spending to much time trying to figure\n // it out.\n this.eIcon.innerHTML = ' ';\n }\n if (this.params.tooltip) {\n this.tooltip = this.params.tooltip;\n if (this.gridOptionsWrapper.isEnableBrowserTooltips()) {\n this.getGui().setAttribute('title', this.tooltip);\n }\n else {\n this.tooltipManager.registerTooltip(this);\n }\n }\n if (this.params.shortcut) {\n this.eShortcut.innerHTML = this.params.shortcut;\n }\n if (this.params.subMenu) {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, we show arrow going left\n this.ePopupPointer.appendChild(core_1._.createIconNoSpan('smallLeft', this.gridOptionsWrapper));\n }\n else {\n // for normal, we show arrow going right\n this.ePopupPointer.appendChild(core_1._.createIconNoSpan('smallRight', this.gridOptionsWrapper));\n }\n }\n else {\n this.ePopupPointer.innerHTML = ' ';\n }\n this.eName.innerHTML = this.params.name;\n if (this.params.disabled) {\n core_1._.addCssClass(this.getGui(), 'ag-menu-option-disabled');\n }\n else {\n this.addGuiEventListener('click', this.onOptionSelected.bind(this));\n }\n if (this.params.cssClasses) {\n this.params.cssClasses.forEach(function (it) { return core_1._.addCssClass(_this.getGui(), it); });\n }\n };\n MenuItemComponent.prototype.getTooltipText = function () {\n return this.tooltip;\n };\n MenuItemComponent.prototype.getComponentHolder = function () {\n return undefined;\n };\n MenuItemComponent.prototype.onOptionSelected = function (mouseEvent) {\n var event = {\n type: MenuItemComponent.EVENT_ITEM_SELECTED,\n action: this.params.action,\n checked: this.params.checked,\n cssClasses: this.params.cssClasses,\n disabled: this.params.disabled,\n icon: this.params.icon,\n name: this.params.name,\n shortcut: this.params.shortcut,\n subMenu: this.params.subMenu,\n tooltip: this.params.tooltip,\n mouseEvent: mouseEvent\n };\n this.dispatchEvent(event);\n if (this.params.action) {\n this.params.action();\n }\n };\n MenuItemComponent.prototype.destroy = function () {\n // console.log('MenuItemComponent->destroy() ' + this.instance);\n _super.prototype.destroy.call(this);\n };\n // private instance = Math.random();\n MenuItemComponent.TEMPLATE = \"
\\n \\n \\n \\n \\n
\";\n MenuItemComponent.EVENT_ITEM_SELECTED = 'itemSelected';\n __decorate([\n core_1.Autowired('gridOptionsWrapper')\n ], MenuItemComponent.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n core_1.Autowired('tooltipManager')\n ], MenuItemComponent.prototype, \"tooltipManager\", void 0);\n __decorate([\n core_1.RefSelector('eIcon')\n ], MenuItemComponent.prototype, \"eIcon\", void 0);\n __decorate([\n core_1.RefSelector('eName')\n ], MenuItemComponent.prototype, \"eName\", void 0);\n __decorate([\n core_1.RefSelector('eShortcut')\n ], MenuItemComponent.prototype, \"eShortcut\", void 0);\n __decorate([\n core_1.RefSelector('ePopupPointer')\n ], MenuItemComponent.prototype, \"ePopupPointer\", void 0);\n __decorate([\n core_1.PostConstruct\n ], MenuItemComponent.prototype, \"init\", null);\n return MenuItemComponent;\n}(core_1.Component));\nexports.MenuItemComponent = MenuItemComponent;\n//# sourceMappingURL=menuItemComponent.js.map","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar all_modules_1 = require(\"@ag-grid-community/all-modules\");\nvar clipboard_1 = require(\"@ag-grid-enterprise/clipboard\");\nvar column_tool_panel_1 = require(\"@ag-grid-enterprise/column-tool-panel\");\nvar excel_export_1 = require(\"@ag-grid-enterprise/excel-export\");\nvar filter_tool_panel_1 = require(\"@ag-grid-enterprise/filter-tool-panel\");\nvar charts_1 = require(\"@ag-grid-enterprise/charts\");\nvar master_detail_1 = require(\"@ag-grid-enterprise/master-detail\");\nvar menu_1 = require(\"@ag-grid-enterprise/menu\");\nvar range_selection_1 = require(\"@ag-grid-enterprise/range-selection\");\nvar rich_select_1 = require(\"@ag-grid-enterprise/rich-select\");\nvar row_grouping_1 = require(\"@ag-grid-enterprise/row-grouping\");\nvar server_side_row_model_1 = require(\"@ag-grid-enterprise/server-side-row-model\");\nvar set_filter_1 = require(\"@ag-grid-enterprise/set-filter\");\nvar side_bar_1 = require(\"@ag-grid-enterprise/side-bar\");\nvar status_bar_1 = require(\"@ag-grid-enterprise/status-bar\");\nvar viewport_row_model_1 = require(\"@ag-grid-enterprise/viewport-row-model\");\n__export(require(\"@ag-grid-community/all-modules\"));\n__export(require(\"@ag-grid-enterprise/clipboard\"));\n__export(require(\"@ag-grid-enterprise/column-tool-panel\"));\n__export(require(\"@ag-grid-enterprise/excel-export\"));\n__export(require(\"@ag-grid-enterprise/filter-tool-panel\"));\n__export(require(\"@ag-grid-enterprise/charts\"));\n__export(require(\"@ag-grid-enterprise/master-detail\"));\n__export(require(\"@ag-grid-enterprise/menu\"));\n__export(require(\"@ag-grid-enterprise/range-selection\"));\n__export(require(\"@ag-grid-enterprise/rich-select\"));\n__export(require(\"@ag-grid-enterprise/row-grouping\"));\n__export(require(\"@ag-grid-enterprise/server-side-row-model\"));\n__export(require(\"@ag-grid-enterprise/set-filter\"));\n__export(require(\"@ag-grid-enterprise/side-bar\"));\n__export(require(\"@ag-grid-enterprise/status-bar\"));\n__export(require(\"@ag-grid-enterprise/viewport-row-model\"));\n__export(require(\"@ag-grid-enterprise/core\"));\nexports.AllEnterpriseModules = [\n clipboard_1.ClipboardModule,\n column_tool_panel_1.ColumnsToolPanelModule,\n excel_export_1.ExcelExportModule,\n filter_tool_panel_1.FiltersToolPanelModule,\n charts_1.GridChartsModule,\n master_detail_1.MasterDetailModule,\n menu_1.MenuModule,\n range_selection_1.RangeSelectionModule,\n rich_select_1.RichSelectModule,\n row_grouping_1.RowGroupingModule,\n server_side_row_model_1.ServerSideRowModelModule,\n set_filter_1.SetFilterModule,\n side_bar_1.SideBarModule,\n status_bar_1.StatusBarModule,\n viewport_row_model_1.ViewportRowModelModule\n];\nexports.AllModules = all_modules_1.AllCommunityModules.concat(exports.AllEnterpriseModules);\n//# sourceMappingURL=main.js.map"],"sourceRoot":""}