{"version":3,"sources":["../node_modules/react/index.js","../node_modules/@ag-grid-community/core/dist/es6/main.js","../node_modules/@ag-grid-community/core/dist/es6/utils/color.js","../node_modules/@ag-grid-community/core/dist/es6/utils/promise.js","../node_modules/@ag-grid-community/core/dist/es6/utils/general.js","../node_modules/@ag-grid-community/core/dist/es6/utils/timer.js","../node_modules/react-localize-redux/es/utils.js","../node_modules/react-localize-redux/es/localize.js","../node_modules/react-localize-redux/es/LocalizeContext.js","../node_modules/react-localize-redux/es/withLocalize.js","../node_modules/react-localize-redux/es/Translate.js","../node_modules/react-localize-redux/es/LocalizeProvider.js","../node_modules/@ag-grid-community/core/dist/es6/context/context.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@ag-grid-community/core/dist/es6/constants.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/prop-types/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/graphql-tag/src/index.js","../node_modules/@ag-grid-community/core/dist/es6/events.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/componentAnnotations.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/tslib/tslib.es6.js","../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../node_modules/redux/es/redux.js","../node_modules/@material-ui/core/esm/styles/withStyles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../../src/data/OperationData.ts","../../src/data/QueryData.ts","../../src/utils/useBaseQuery.ts","../../src/utils/useDeepMemo.ts","../../src/useQuery.ts","../../src/useLazyQuery.ts","../../src/data/MutationData.ts","../../src/useMutation.ts","../../src/data/SubscriptionData.ts","../../src/useSubscription.ts","../../src/useApolloClient.ts","../../src/ssr/RenderPromises.ts","../node_modules/date-fns/esm/toDate/index.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/index.js","../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../node_modules/date-fns/esm/_lib/format/formatters/index.js","../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/format/index.js","../../src/storeUtils.ts","../../src/directives.ts","../../src/fragments.ts","../../src/util/assign.ts","../../src/getFromAST.ts","../../src/util/filterInPlace.ts","../../src/transform.ts","../../src/util/canUse.ts","../../src/util/cloneDeep.ts","../../src/util/environment.ts","../../src/util/errorHandling.ts","../../src/util/maybeDeepFreeze.ts","../../src/util/mergeDeep.ts","../../src/util/warnOnce.ts","../node_modules/@material-ui/icons/esm/utils/createSvgIcon.js","../node_modules/date-fns/esm/_lib/toInteger/index.js","../node_modules/@material-ui/core/esm/utils/capitalize.js","../node_modules/@material-ui/system/esm/style.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/component.js","../../src/invariant.ts","../../modules/BrowserRouter.js","../../modules/HashRouter.js","../../modules/utils/locationUtils.js","../../modules/Link.js","../../modules/NavLink.js","../node_modules/@material-ui/core/esm/styles/colorManipulator.js","../node_modules/@material-ui/utils/esm/chainPropTypes.js","../node_modules/@material-ui/utils/esm/elementAcceptingRef.js","../node_modules/@material-ui/utils/esm/elementTypeAcceptingRef.js","../node_modules/@material-ui/utils/esm/exactProp.js","../node_modules/@material-ui/utils/esm/getDisplayName.js","../node_modules/@material-ui/utils/esm/HTMLElementType.js","../node_modules/@material-ui/utils/esm/ponyfillGlobal.js","../node_modules/@material-ui/utils/esm/refType.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@material-ui/core/esm/utils/useForkRef.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/react-dom/index.js","../node_modules/@ag-grid-community/core/dist/es6/entities/column.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/simpleFilter.js","../node_modules/@ag-grid-community/core/dist/es6/dragAndDrop/dragAndDropService.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js","../node_modules/@ag-grid-community/core/dist/es6/gridOptionsWrapper.js","../node_modules/@ag-grid-community/core/dist/es6/modules/moduleRegistry.js","../node_modules/@ag-grid-community/core/dist/es6/modules/moduleNames.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../src/context/ApolloContext.ts","../../src/parser/parser.ts","../../src/context/ApolloProvider.tsx","../../src/context/ApolloConsumer.tsx","../node_modules/@ag-grid-enterprise/core/dist/es6/licenseManager.js","../node_modules/@ag-grid-enterprise/core/dist/es6/license/md5.js","../node_modules/@ag-grid-enterprise/core/dist/es6/license/watermark.js","../node_modules/@ag-grid-enterprise/core/dist/es6/agGridEnterpriseModule.js","../node_modules/mini-create-react-context/dist/esm/index.js","../../modules/RouterContext.js","../../modules/Router.js","../../modules/MemoryRouter.js","../../modules/Lifecycle.js","../../modules/Prompt.js","../../modules/generatePath.js","../../modules/Redirect.js","../../modules/matchPath.js","../../modules/Route.js","../../modules/StaticRouter.js","../../modules/Switch.js","../../modules/hooks.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@ag-grid-community/core/dist/es6/entities/rowNode.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/clone-deep/index.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@ag-grid-community/core/dist/es6/context/beanStub.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@ag-grid-community/core/dist/es6/entities/originalColumnGroup.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@material-ui/icons/utils/createSvgIcon.js","../node_modules/@ag-grid-community/core/dist/es6/entities/columnGroup.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../node_modules/@material-ui/core/esm/styles/useTheme.js","../node_modules/@ag-grid-community/core/dist/es6/eventKeys.js","../node_modules/@material-ui/core/esm/utils/ownerDocument.js","../node_modules/@material-ui/core/esm/utils/createSvgIcon.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../../src/equality.ts","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@material-ui/system/esm/compose.js","../node_modules/@ag-grid-community/core/dist/es6/eventService.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/scalerFilter.js","../../src/zenObservable.ts","../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agAbstractField.js","../node_modules/@material-ui/core/esm/utils/setRef.js","../node_modules/immutable/dist/immutable.es.js","../node_modules/@material-ui/core/esm/styles/transitions.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/touchListener.js","../node_modules/@material-ui/core/esm/utils/useEventCallback.js","../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../node_modules/@material-ui/core/esm/FormControl/useFormControl.js","../node_modules/is-in-browser/dist/module.js","../node_modules/@material-ui/core/esm/transitions/utils.js","../node_modules/graphql/language/visitor.mjs","../node_modules/react-is/index.js","../node_modules/debounce/index.js","../node_modules/date-fns/esm/startOfDay/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../src/linkUtils.ts","../../src/link.ts","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/popupComponent.js","../node_modules/@material-ui/core/esm/FormControl/formControlState.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/rowDragComp.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/dndSourceComp.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellComp.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@material-ui/core/esm/utils/debounce.js","../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../node_modules/@ag-grid-community/core/dist/es6/propertyKeys.js","../node_modules/@ag-grid-community/client-side-row-model/dist/es6/clientSideRowModel/clientSideRowModel.js","../node_modules/@ag-grid-community/client-side-row-model/dist/es6/clientSideRowModel/clientSideNodeManager.js","../node_modules/@ag-grid-community/client-side-row-model/dist/es6/clientSideRowModel/filterStage.js","../node_modules/@ag-grid-community/client-side-row-model/dist/es6/clientSideRowModel/sortStage.js","../node_modules/@ag-grid-community/client-side-row-model/dist/es6/clientSideRowModel/flattenStage.js","../node_modules/@ag-grid-community/client-side-row-model/dist/es6/clientSideRowModel/sortService.js","../node_modules/@ag-grid-community/client-side-row-model/dist/es6/clientSideRowModel/filterService.js","../node_modules/@ag-grid-community/client-side-row-model/dist/es6/clientSideRowModel/immutableService.js","../node_modules/@ag-grid-community/client-side-row-model/dist/es6/clientSideRowModelModule.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agAbstractInputField.js","../node_modules/@material-ui/core/esm/Table/Tablelvl2Context.js","../node_modules/@material-ui/core/esm/utils/createChainedFunction.js","../node_modules/@material-ui/core/esm/List/ListContext.js","../node_modules/@material-ui/core/esm/FormControl/FormControlContext.js","../node_modules/@ag-grid-community/core/dist/es6/components/componentUtil.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../node_modules/date-fns/esm/addMonths/index.js","../node_modules/date-fns/esm/addDays/index.js","../node_modules/deep-equal/index.js","../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../node_modules/@material-ui/core/esm/Typography/Typography.js","../node_modules/@material-ui/styles/esm/ServerStyleSheets/ServerStyleSheets.js","../node_modules/@material-ui/styles/esm/withTheme/withTheme.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/providedFilter.js","../node_modules/@material-ui/icons/Check.js","../node_modules/invariant/browser.js","../node_modules/@material-ui/core/esm/SvgIcon/index.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/features/setLeftFeature.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agCheckbox.js","../node_modules/@ag-grid-community/core/dist/es6/logger.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agDialog.js","../node_modules/@material-ui/system/esm/merge.js","../node_modules/@material-ui/core/esm/styles/defaultTheme.js","../node_modules/@material-ui/core/esm/utils/useControlled.js","../node_modules/@ag-grid-community/core/dist/es6/components/framework/userComponentFactory.js","../node_modules/date-fns/esm/differenceInMilliseconds/index.js","../node_modules/date-fns/esm/startOfWeek/index.js","../node_modules/@babel/runtime/helpers/esm/objectSpread.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/@emotion/sheet/dist/sheet.browser.esm.js","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/@emotion/cache/dist/cache.browser.esm.js","../node_modules/@emotion/utils/dist/utils.browser.esm.js","../node_modules/@emotion/hash/dist/hash.browser.esm.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@emotion/memoize/dist/memoize.browser.esm.js","../node_modules/@emotion/serialize/dist/serialize.browser.esm.js","../node_modules/@emotion/css/dist/css.browser.esm.js","../node_modules/@emotion/core/dist/core.browser.esm.js","../node_modules/react-select/dist/chunk-39d3fda8.browser.esm.js","../node_modules/react-select/dist/chunk-80640036.browser.esm.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/react-select/dist/base/dist/react-select-cac0a5ae.browser.esm.js","../node_modules/react-select/dist/chunk-b36baf1a.browser.esm.js","../node_modules/react-select/dist/react-select.browser.esm.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/headerRowComp.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/headerGroup/headerGroupWrapperComp.js","../node_modules/@ag-grid-community/core/dist/es6/filter/floating/provided/readOnlyFloatingFilter.js","../node_modules/@ag-grid-community/core/dist/es6/filter/floating/floatingFilterWrapper.js","../../src/core/networkStatus.ts","../../src/util/Observable.ts","../../src/util/arrays.ts","../../src/errors/ApolloError.ts","../../src/core/types.ts","../../src/core/ObservableQuery.ts","../../src/data/mutations.ts","../../src/data/queries.ts","../../src/core/LocalState.ts","../../src/util/capitalizeFirstLetter.ts","../../src/util/observables.ts","../../src/core/QueryManager.ts","../../src/data/store.ts","../../src/ApolloClient.ts","../../src/version.ts","../node_modules/google-maps-react/dist/index.js","../node_modules/@babel/runtime/helpers/extends.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellEditors/textCellEditor.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellRenderers/groupCellRenderer.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/rowComp.js","../node_modules/@ag-grid-community/core/dist/es6/modules/rowNodeCache/rowNodeBlock.js","../node_modules/@ag-grid-community/core/dist/es6/components/framework/userComponentRegistry.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/header/headerComp.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/headerGroup/headerGroupComp.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellRenderers/loadingCellRenderer.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/overlays/loadingOverlayComponent.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/overlays/noRowsOverlayComponent.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/tooltipComponent.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/date/defaultDateComponent.js","../node_modules/@ag-grid-community/core/dist/es6/filter/floating/provided/simpleFloatingFilter.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/date/dateFloatingFilter.js","../node_modules/@ag-grid-community/core/dist/es6/filter/floating/provided/textInputFloatingFilter.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/number/numberFloatingFilter.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/text/textFloatingFilter.js","../node_modules/@material-ui/styles/node_modules/jss/dist/jss.esm.js","../node_modules/@material-ui/core/esm/InputBase/utils.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../node_modules/@material-ui/core/esm/utils/unstable_useId.js","../node_modules/date-fns/esm/eachDayOfInterval/index.js","../node_modules/@ag-grid-community/csv-export/dist/es6/csvExport/gridSerializer.js","../node_modules/@ag-grid-community/infinite-row-model/dist/es6/infiniteRowModel/infiniteBlock.js","../node_modules/@ag-grid-community/infinite-row-model/dist/es6/infiniteRowModel/infiniteCache.js","../node_modules/@ag-grid-community/infinite-row-model/dist/es6/infiniteRowModel/infiniteRowModel.js","../node_modules/@ag-grid-community/infinite-row-model/dist/es6/infiniteRowModelModule.js","../node_modules/@ag-grid-community/csv-export/dist/es6/csvExport/csvCreator.js","../node_modules/@ag-grid-enterprise/column-tool-panel/dist/es6/columnToolPanel/primaryColsHeaderPanel.js","../node_modules/@ag-grid-community/csv-export/dist/es6/csvExport/downloader.js","../node_modules/@ag-grid-community/csv-export/dist/es6/csvExport/xmlFactory.js","../node_modules/@ag-grid-community/csv-export/dist/es6/csvExport/zipContainer.js","../node_modules/@ag-grid-community/csv-export/dist/es6/csvExportModule.js","../node_modules/@ag-grid-community/all-modules/dist/es6/main.js","../node_modules/@ag-grid-enterprise/clipboard/dist/es6/clipboard/clipboardService.js","../node_modules/@ag-grid-enterprise/clipboard/dist/es6/clipboardModule.js","../node_modules/@ag-grid-enterprise/column-tool-panel/dist/es6/columnToolPanel/toolPanelColumnGroupComp.js","../node_modules/@ag-grid-enterprise/column-tool-panel/dist/es6/columnToolPanel/toolPanelColumnComp.js","../node_modules/@ag-grid-enterprise/column-tool-panel/dist/es6/columnToolPanel/primaryColsListPanel.js","../node_modules/@ag-grid-enterprise/column-tool-panel/dist/es6/columnToolPanel/pivotModePanel.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/aggregationStage.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/groupStage.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/pivotColDefService.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/pivotStage.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/aggFuncService.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/columnDropZones/dropZoneColumnComp.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/stylesheet.js","../node_modules/@ag-grid-enterprise/filter-tool-panel/dist/es6/filterToolPanel/filtersToolPanelHeaderPanel.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/columnDropZones/baseDropZonePanel.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/columnDropZones/rowGroupDropZonePanel.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/columnDropZones/pivotDropZonePanel.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/columnDropZones/gridHeaderDropZones.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGroupingModule.js","../node_modules/@ag-grid-enterprise/row-grouping/dist/es6/rowGrouping/columnDropZones/valueDropZonePanel.js","../node_modules/@ag-grid-enterprise/column-tool-panel/dist/es6/columnToolPanel/columnToolPanel.js","../node_modules/@ag-grid-enterprise/column-tool-panel/dist/es6/columnToolPanel/primaryColsPanel.js","../node_modules/@ag-grid-enterprise/side-bar/dist/es6/sideBar/horizontalResizeComp.js","../node_modules/@ag-grid-enterprise/side-bar/dist/es6/sideBar/sideBarButtonsComp.js","../node_modules/@ag-grid-enterprise/side-bar/dist/es6/sideBar/toolPanelWrapper.js","../node_modules/@ag-grid-enterprise/side-bar/dist/es6/sideBar/sideBarComp.js","../node_modules/@ag-grid-enterprise/side-bar/dist/es6/sideBar/common/toolPanelColDefService.js","../node_modules/@ag-grid-enterprise/side-bar/dist/es6/sideBarModule.js","../node_modules/@ag-grid-enterprise/column-tool-panel/dist/es6/columnsToolPanelModule.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/core.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/contentType.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/contentTypes.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/themes/office/colorScheme.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/themes/office/fontScheme.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/themes/office/formatScheme.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/themes/office/themeElements.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/themes/office.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/sharedStrings.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/numberFormat.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/numberFormats.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/font.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/fonts.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/fill.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/fills.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/border.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/borders.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/alignment.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/protection.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/xf.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/cellStyleXfs.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/cellXfs.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/cellStyle.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/styles/cellStyles.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/sheet.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/sheets.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/workbook.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/column.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/cell.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/row.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/mergeCell.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/worksheet.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/relationship.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/ooxml/relationships.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/excelXlsxFactory.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/workbook.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/excelWorkbook.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/column.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/cell.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/row.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/worksheet.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/documentProperties.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/styles/alignment.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/styles/borders.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/styles/font.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/styles/interior.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/styles/protection.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/styles/numberFormat.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/files/xml/styles/style.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/excelXmlFactory.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/excelXmlSerializingSession.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/excelXlsxSerializingSession.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExport/excelCreator.js","../node_modules/@ag-grid-enterprise/excel-export/dist/es6/excelExportModule.js","../node_modules/@ag-grid-enterprise/filter-tool-panel/dist/es6/filterToolPanel/toolPanelFilterComp.js","../node_modules/@ag-grid-enterprise/filter-tool-panel/dist/es6/filterToolPanel/toolPanelFilterGroupComp.js","../node_modules/@ag-grid-enterprise/filter-tool-panel/dist/es6/filterToolPanel/filtersToolPanelListPanel.js","../node_modules/@ag-grid-enterprise/filter-tool-panel/dist/es6/filterToolPanel/filtersToolPanel.js","../node_modules/@ag-grid-enterprise/filter-tool-panel/dist/es6/filtersToolPanelModule.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/util/array.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/chartDatasource.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scene/node.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/chartModel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/chartController.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/data/chartDataPanel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/format/fontPanel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/format/legend/legendPanel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/format/series/shadowPanel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/format/series/barSeriesPanel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/format/axis/axisTicksPanel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/format/axis/axisPanel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/canvas/hdpiCanvas.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scene/scene.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scene/bbox.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scene/matrix.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scene/group.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/util/padding.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/util/object.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scene/shape/shape.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scene/polyRoots.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scene/intersection.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scene/path2D.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scene/shape/rect.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scene/shape/path.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/legend.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scene/selection.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scene/shape/text.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/markerLabel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/chart.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scale/bandScale.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scene/shape/line.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/util/ticks.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/util/angle.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/util/number.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scene/shape/arc.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/axis.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/axis/categoryAxis.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/layout/tree.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/axis/groupedCategoryAxis.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/cartesianChart.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/polarChart.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/util/compare.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/interpolate/constant.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/interpolate/number.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/interpolate/date.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/interpolate/array.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/interpolate/object.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/interpolate/value.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scale/continuousScale.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/util/bisect.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/palettes.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/util/color.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/series/series.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/marker/marker.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/series/lineSeries.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scale/linearScale.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/series/scatterSeries.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/series/barSeries.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/label.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/axis/numberAxis.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/series/pieSeries.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/series/areaSeries.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scene/shape/sector.js","../node_modules/@ag-grid-enterprise/set-filter/dist/es6/setFilter/setValueModel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scene/dropShadow.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/caption.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/groupedCategoryChart.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chart/marker/circle.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/chartBuilder.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/chartProxies/chartProxy.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/chartProxies/cartesian/cartesianChartProxy.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/chartProxies/cartesian/scatterChartProxy.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/format/series/markersPanel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/format/series/lineSeriesPanel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/format/series/calloutPanel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/format/series/pieSeriesPanel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/format/chart/paddingPanel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/format/chart/chartPanel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/format/series/areaSeriesPanel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/format/series/scatterSeriesPanel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/format/chartFormattingPanel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/settings/miniCharts/miniChart.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/settings/miniCharts/miniChartWithAxes.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/settings/miniCharts/miniColumn.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/settings/miniCharts/miniStackedColumn.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/settings/miniCharts/miniNormalizedColumn.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/settings/miniCharts/miniBar.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/settings/miniCharts/miniStackedBar.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/settings/miniCharts/miniNormalizedBar.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/settings/miniCharts/miniDoughnut.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/settings/miniCharts/miniPie.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/charts/scene/clipRect.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/settings/miniCharts/miniLine.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/settings/miniCharts/miniScatter.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/settings/miniCharts/miniBubble.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/settings/miniCharts/miniArea.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/settings/miniCharts/miniStackedArea.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/settings/miniCharts/miniNormalizedArea.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/settings/miniChartsContainer.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/settings/chartSettingsPanel.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/tabbedChartMenu.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/menu/chartMenu.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/chartProxies/cartesian/barChartProxy.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/chartProxies/cartesian/areaChartProxy.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/chartProxies/cartesian/lineChartProxy.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/chartProxies/polar/polarChartProxy.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/chartProxies/polar/pieChartProxy.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/chartProxies/polar/doughnutChartProxy.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/gridChartComp.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartService.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/chartAdaptor/chartComp/chartTranslator.js","../node_modules/@ag-grid-enterprise/range-selection/dist/es6/rangeSelection/rangeController.js","../node_modules/@ag-grid-enterprise/range-selection/dist/es6/rangeSelection/abstractSelectionHandle.js","../node_modules/@ag-grid-enterprise/range-selection/dist/es6/rangeSelection/fillHandle.js","../node_modules/@ag-grid-enterprise/range-selection/dist/es6/rangeSelection/rangeHandle.js","../node_modules/@ag-grid-enterprise/range-selection/dist/es6/rangeSelectionModule.js","../node_modules/@ag-grid-enterprise/charts/dist/es6/gridChartsModule.js","../node_modules/@ag-grid-enterprise/master-detail/dist/es6/masterDetail/detailCellRenderer.js","../node_modules/@ag-grid-enterprise/master-detail/dist/es6/masterDetailModule.js","../node_modules/@ag-grid-enterprise/menu/dist/es6/menu/menuItemComponent.js","../node_modules/@ag-grid-enterprise/menu/dist/es6/menu/menuList.js","../node_modules/@ag-grid-enterprise/menu/dist/es6/menu/enterpriseMenu.js","../node_modules/@ag-grid-enterprise/menu/dist/es6/menu/contextMenu.js","../node_modules/@ag-grid-enterprise/menu/dist/es6/menu/menuItemMapper.js","../node_modules/@ag-grid-enterprise/menu/dist/es6/menuModule.js","../node_modules/@ag-grid-enterprise/rich-select/dist/es6/richSelect/richSelectRow.js","../node_modules/@ag-grid-enterprise/rich-select/dist/es6/richSelect/richSelectCellEditor.js","../node_modules/@ag-grid-enterprise/rich-select/dist/es6/richSelectModule.js","../node_modules/@ag-grid-enterprise/server-side-row-model/dist/es6/serverSideRowModel/serverSideBlock.js","../node_modules/@ag-grid-enterprise/server-side-row-model/dist/es6/serverSideRowModel/serverSideCache.js","../node_modules/@ag-grid-enterprise/server-side-row-model/dist/es6/serverSideRowModel/serverSideRowModel.js","../node_modules/@ag-grid-enterprise/server-side-row-model/dist/es6/serverSideRowModelModule.js","../node_modules/@ag-grid-enterprise/set-filter/dist/es6/setFilter/setFilter.js","../node_modules/@ag-grid-enterprise/set-filter/dist/es6/setFilter/setFilterListItem.js","../node_modules/@ag-grid-enterprise/set-filter/dist/es6/setFilter/setFloatingFilter.js","../node_modules/@ag-grid-enterprise/set-filter/dist/es6/setFilterModule.js","../node_modules/@ag-grid-enterprise/status-bar/dist/es6/statusBar/statusBarService.js","../node_modules/@ag-grid-enterprise/status-bar/dist/es6/statusBar/statusBar.js","../node_modules/@ag-grid-enterprise/status-bar/dist/es6/statusBar/providedPanels/nameValueComp.js","../node_modules/@ag-grid-enterprise/status-bar/dist/es6/statusBar/providedPanels/totalAndFilteredRowsComp.js","../node_modules/@ag-grid-enterprise/status-bar/dist/es6/statusBar/providedPanels/filteredRowsComp.js","../node_modules/@ag-grid-enterprise/status-bar/dist/es6/statusBar/providedPanels/totalRowsComp.js","../node_modules/@ag-grid-enterprise/status-bar/dist/es6/statusBar/providedPanels/selectedRowsComp.js","../node_modules/@ag-grid-enterprise/status-bar/dist/es6/statusBar/providedPanels/aggregationComp.js","../node_modules/@ag-grid-enterprise/status-bar/dist/es6/statusBarModule.js","../node_modules/@ag-grid-enterprise/viewport-row-model/dist/es6/viewportRowModel/viewportRowModel.js","../node_modules/@ag-grid-enterprise/all-modules/dist/es6/main.js","../node_modules/@ag-grid-enterprise/viewport-row-model/dist/es6/viewportRowModelModule.js","../node_modules/reselect/lib/index.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/date/dateCompWrapper.js","../node_modules/webpack/buildin/global.js","../node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../node_modules/@material-ui/core/esm/FormControl/index.js","../node_modules/@material-ui/system/esm/breakpoints.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/date/dateFilter.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/checkboxSelectionComponent.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellRenderers/animateShowChangeCellRenderer.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellRenderers/animateSlideCellRenderer.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellEditors/selectCellEditor.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/number/numberFilter.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/text/textFilter.js","../node_modules/@ag-grid-community/core/dist/es6/utils/changedPath.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellEditors/popupEditorWrapper.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/cssClassApplier.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agRadioButton.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agPanel.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agInputTextField.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/overlays/overlayWrapperComponent.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/columnHoverService.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/columnAnimationService.js","../node_modules/@ag-grid-community/core/dist/es6/columnController/autoGroupColService.js","../node_modules/@ag-grid-community/core/dist/es6/pagination/paginationAutoPageSizeService.js","../node_modules/@ag-grid-community/core/dist/es6/valueService/changeDetectionService.js","../node_modules/@ag-grid-community/core/dist/es6/components/framework/agComponentUtils.js","../node_modules/@ag-grid-community/core/dist/es6/components/framework/componentMetadataProvider.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/beans.js","../node_modules/@ag-grid-community/core/dist/es6/misc/animationFrameService.js","../node_modules/@ag-grid-community/core/dist/es6/gridPanel/navigationService.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/maxDivHeightScaler.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/autoHeightCalculator.js","../node_modules/@ag-grid-community/core/dist/es6/pagination/paginationComp.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/detailRowCompCache.js","../node_modules/@ag-grid-community/core/dist/es6/grid.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@material-ui/styles/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/@material-ui/core/esm/utils/useIsFocusVisible.js","../node_modules/@material-ui/core/esm/utils/ownerWindow.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/headerContainer.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agAbstractLabel.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/hoverFeature.js","../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../node_modules/@material-ui/core/esm/internal/SwitchBase.js","../node_modules/date-fns/esm/differenceInCalendarDays/index.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/@material-ui/core/esm/SvgIcon/SvgIcon.js","../node_modules/@material-ui/core/esm/utils/isMuiElement.js","../node_modules/@material-ui/icons/Edit.js","../node_modules/date-fns/esm/addYears/index.js","../node_modules/@material-ui/icons/Help.js","../node_modules/date-fns/esm/endOfDay/index.js","../node_modules/date-fns/esm/isBefore/index.js","../node_modules/google-maps-react/dist/lib/String.js","../node_modules/@material-ui/core/esm/InputBase/index.js","../node_modules/@material-ui/styles/esm/StylesProvider/index.js","../node_modules/@ag-grid-community/core/dist/es6/components/colDefUtil.js","../node_modules/symbol-observable/es/index.js","../node_modules/graphql/jsutils/nodejsCustomInspectSymbol.mjs","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/inheritsLoose.js","../node_modules/@ag-grid-community/react/main.js","../node_modules/@material-ui/core/esm/internal/svg-icons/KeyboardArrowRight.js","../node_modules/@material-ui/core/esm/internal/svg-icons/KeyboardArrowLeft.js","../node_modules/date-fns/esm/isSameDay/index.js","../node_modules/sift/src/index.js","../node_modules/@casl/ability/dist/es5m/index.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/@material-ui/core/esm/Paper/Paper.js","../node_modules/@material-ui/styles/esm/StylesProvider/StylesProvider.js","../node_modules/@material-ui/system/esm/borders.js","../node_modules/@material-ui/system/esm/flexbox.js","../node_modules/@material-ui/system/esm/grid.js","../node_modules/@material-ui/system/esm/positions.js","../node_modules/@material-ui/system/esm/palette.js","../node_modules/@material-ui/system/esm/sizing.js","../node_modules/@material-ui/system/esm/typography.js","../node_modules/@material-ui/core/esm/Input/index.js","../node_modules/@material-ui/core/esm/OutlinedInput/index.js","../node_modules/@material-ui/system/esm/spacing.js","../node_modules/@material-ui/system/esm/memoize.js","../node_modules/@ag-grid-community/core/dist/es6/columnController/columnKeyCreator.js","../node_modules/@ag-grid-community/core/dist/es6/columnController/columnController.js","../node_modules/@ag-grid-community/core/dist/es6/columnController/groupInstanceIdCreator.js","../node_modules/@ag-grid-community/core/dist/es6/columnController/columnUtils.js","../node_modules/@ag-grid-community/core/dist/es6/columnController/displayedGroupCreator.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellEditors/popupTextCellEditor.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellEditors/popupSelectCellEditor.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellEditors/largeTextCellEditor.js","../node_modules/@ag-grid-community/core/dist/es6/selectionController.js","../node_modules/@ag-grid-community/core/dist/es6/columnController/columnApi.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/rowRenderer.js","../node_modules/@ag-grid-community/core/dist/es6/interfaces/iRangeController.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/headerRootComp.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/bodyDropTarget.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/moveColumnController.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/bodyDropPivotTarget.js","../node_modules/@ag-grid-community/core/dist/es6/filter/filterManager.js","../node_modules/@ag-grid-community/core/dist/es6/valueService/valueService.js","../node_modules/@ag-grid-community/core/dist/es6/gridApi.js","../node_modules/@ag-grid-community/core/dist/es6/valueService/expressionService.js","../node_modules/@ag-grid-community/core/dist/es6/templateService.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/popupService.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/autoWidthCalculator.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/horizontalResizeService.js","../node_modules/@ag-grid-community/core/dist/es6/gridCore.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/standardMenu.js","../node_modules/@ag-grid-community/core/dist/es6/dragAndDrop/dragService.js","../node_modules/@ag-grid-community/core/dist/es6/sortController.js","../node_modules/@ag-grid-community/core/dist/es6/focusedCellController.js","../node_modules/@ag-grid-community/core/dist/es6/gridPanel/mouseEventService.js","../node_modules/@ag-grid-community/core/dist/es6/cellNavigationService.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/cellRendererFactory.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/valueFormatterService.js","../node_modules/@ag-grid-community/core/dist/es6/vanillaFrameworkOverrides.js","../node_modules/@ag-grid-community/core/dist/es6/gridPanel/scrollVisibleService.js","../node_modules/@ag-grid-community/core/dist/es6/styling/stylingService.js","../node_modules/@ag-grid-community/core/dist/es6/pagination/paginationProxy.js","../node_modules/@ag-grid-community/core/dist/es6/valueService/valueCache.js","../node_modules/@ag-grid-community/core/dist/es6/alignedGridsService.js","../node_modules/@ag-grid-community/core/dist/es6/environment.js","../node_modules/@ag-grid-community/core/dist/es6/rowNodes/selectableService.js","../node_modules/@ag-grid-community/core/dist/es6/misc/resizeObserverService.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/tooltipManager.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agGroupComponent.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agInputTextArea.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agSlider.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agInputNumberField.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agInputRange.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agSelect.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agAngleSelect.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agToggleButton.js","../node_modules/@ag-grid-community/core/dist/es6/entities/rowPosition.js","../node_modules/@ag-grid-community/core/dist/es6/entities/cellPosition.js","../node_modules/@ag-grid-community/core/dist/es6/pinnedRowModel/pinnedRowModel.js","../node_modules/@ag-grid-community/core/dist/es6/rendering/rowContainerComponent.js","../node_modules/@ag-grid-community/core/dist/es6/gridPanel/rowDragFeature.js","../node_modules/@ag-grid-community/core/dist/es6/gridPanel/gridPanel.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agColorPanel.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agPickerField.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/agColorPicker.js","../node_modules/@ag-grid-community/core/dist/es6/entities/defaultColumnTypes.js","../node_modules/@ag-grid-community/core/dist/es6/columnController/columnFactory.js","../node_modules/@material-ui/utils/esm/formatMuiErrorMessage.js","../node_modules/@material-ui/utils/esm/deepmerge.js","../node_modules/@material-ui/core/esm/styles/zIndex.js","../node_modules/react-dom/server.browser.js","../node_modules/graphql/jsutils/inspect.mjs","../node_modules/graphql/language/blockString.mjs","../node_modules/@material-ui/styles/esm/useTheme/ThemeContext.js","../node_modules/@material-ui/styles/esm/ThemeProvider/nested.js","../node_modules/@material-ui/core/esm/utils/getScrollbarSize.js","../node_modules/@material-ui/icons/Menu.js","../node_modules/@ag-grid-community/core/dist/es6/entities/sideBar.js","../node_modules/@ag-grid-community/core/dist/es6/filter/provided/optionsFactory.js","../node_modules/@material-ui/lab/esm/internal/svg-icons/Close.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../node_modules/date-fns/esm/subMilliseconds/index.js","../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@material-ui/core/esm/RadioGroup/RadioGroupContext.js","../node_modules/@material-ui/core/esm/Table/TableContext.js","../node_modules/@material-ui/icons/Sync.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/date-fns/esm/getDaysInMonth/index.js","../node_modules/@material-ui/icons/Warning.js","../node_modules/@material-ui/icons/HighlightOff.js","../node_modules/@material-ui/icons/ErrorOutline.js","../node_modules/@material-ui/icons/CheckCircleOutline.js","../node_modules/date-fns/esm/addWeeks/index.js","../node_modules/date-fns/esm/differenceInDays/index.js","../node_modules/@material-ui/core/esm/TextareaAutosize/TextareaAutosize.js","../node_modules/@material-ui/core/esm/InputBase/InputBase.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/header/selectAllFeature.js","../node_modules/@ag-grid-community/core/dist/es6/headerRendering/header/headerWrapperComp.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/flat/index.js","../node_modules/@material-ui/styles/esm/useTheme/useTheme.js","../node_modules/@material-ui/core/esm/ButtonBase/Ripple.js","../node_modules/@material-ui/core/esm/ButtonBase/TouchRipple.js","../node_modules/@material-ui/core/esm/ButtonBase/ButtonBase.js","../node_modules/object-assign/index.js","../node_modules/define-properties/index.js","../node_modules/@material-ui/system/esm/index.js","../node_modules/@material-ui/core/esm/Chip/index.js","../node_modules/gud/index.js","../node_modules/@material-ui/core/esm/Input/Input.js","../node_modules/@material-ui/core/esm/FormControl/FormControl.js","../node_modules/@material-ui/core/esm/FormHelperText/FormHelperText.js","../node_modules/react-input-autosize/lib/AutosizeInput.js","../node_modules/@material-ui/core/esm/OutlinedInput/NotchedOutline.js","../node_modules/@material-ui/core/esm/OutlinedInput/OutlinedInput.js","../node_modules/@material-ui/core/esm/FormLabel/FormLabel.js","../node_modules/@material-ui/core/esm/InputLabel/InputLabel.js","../node_modules/react-router/node_modules/path-to-regexp/index.js","../node_modules/date-fns/esm/endOfMonth/index.js","../node_modules/date-fns/esm/startOfMonth/index.js","../node_modules/@material-ui/icons/Clear.js","../node_modules/date-fns/esm/startOfISOWeek/index.js","../node_modules/date-fns/esm/subMinutes/index.js","../node_modules/date-fns/esm/endOfWeek/index.js","../node_modules/date-fns/esm/endOfYear/index.js","../node_modules/date-fns/esm/isAfter/index.js","../node_modules/date-fns/esm/_lib/assign/index.js","../node_modules/date-fns/esm/_lib/setUTCDay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/index.js","../node_modules/date-fns/esm/_lib/setUTCWeek/index.js","../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../node_modules/date-fns/esm/parse/index.js","../node_modules/date-fns/esm/startOfYear/index.js","../node_modules/@date-io/date-fns/build/index.esm.js","../node_modules/date-fns/esm/getHours/index.js","../node_modules/date-fns/esm/setHours/index.js","../node_modules/date-fns/esm/setMinutes/index.js","../node_modules/date-fns/esm/getSeconds/index.js","../node_modules/date-fns/esm/setSeconds/index.js","../node_modules/date-fns/esm/setYear/index.js","../node_modules/date-fns/esm/isEqual/index.js","../node_modules/date-fns/esm/setMonth/index.js","../../src/utils.ts","../../src/types/Cache.ts","../../src/cache.ts","../../src/slot.ts","../../src/context.ts","../../src/entry.ts","../../src/key-trie.ts","../../src/index.ts","../../src/fragmentMatcher.ts","../../src/depTrackingCache.ts","../../src/readFromStore.ts","../../src/objectCache.ts","../../src/writeToStore.ts","../../src/inMemoryCache.ts","../node_modules/@material-ui/styles/esm/makeStyles/multiKeyStore.js","../node_modules/@material-ui/styles/esm/makeStyles/indexCounter.js","../node_modules/@material-ui/styles/esm/getStylesCreator/getStylesCreator.js","../node_modules/@material-ui/styles/esm/getStylesCreator/noopTheme.js","../node_modules/@material-ui/styles/esm/makeStyles/makeStyles.js","../node_modules/process/browser.js","../node_modules/@material-ui/system/esm/css.js","../node_modules/@material-ui/system/esm/display.js","../node_modules/@material-ui/system/esm/shadows.js","../node_modules/@ag-grid-community/core/dist/es6/components/agGridNg1.js","../node_modules/@ag-grid-community/core/dist/es6/components/agGridWebComponent.js","../node_modules/@ag-grid-community/core/dist/es6/layout/tabbedLayout.js","../node_modules/@ag-grid-community/core/dist/es6/misc/simpleHttpRequest.js","../node_modules/@ag-grid-community/core/dist/es6/modules/rowNodeCache/rowNodeBlockLoader.js","../node_modules/@ag-grid-community/core/dist/es6/modules/rowNodeCache/rowNodeCache.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/messageBox.js","../node_modules/@ag-grid-community/core/dist/es6/widgets/virtualList.js","../node_modules/@ag-grid-community/core/dist/es6/functions.js","../node_modules/@ag-grid-community/core/dist/es6/components/framework/frameworkComponentWrapper.js","../node_modules/@ag-grid-community/core/dist/es6/interfaces/iChartOptions.js","../node_modules/@ag-grid-community/react/lib/agGridColumn.js","../node_modules/object-keys/index.js","../node_modules/object-keys/isArguments.js","../node_modules/regexp.prototype.flags/implementation.js","../node_modules/regexp.prototype.flags/polyfill.js","../node_modules/google-maps-react/dist/lib/arePathsEqual.js","../node_modules/@material-ui/core/styles/withStyles.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@material-ui/core/colors/blue.js","../node_modules/@material-ui/core/esm/InputLabel/index.js","../node_modules/@material-ui/core/esm/FormHelperText/index.js","../node_modules/@material-ui/core/esm/internal/svg-icons/Cancel.js","../node_modules/@material-ui/core/esm/Chip/Chip.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/create-react-context/lib/index.js","../node_modules/zen-observable/index.js","../node_modules/fast-json-stable-stringify/index.js","../node_modules/@casl/react/dist/es5m/index.js","../node_modules/redux-thunk/es/index.js","../node_modules/@material-ui/icons/ArrowBack.js","../node_modules/@material-ui/icons/Add.js","../node_modules/@material-ui/icons/Settings.js","../node_modules/@material-ui/icons/Save.js","../node_modules/@material-ui/icons/ExpandMore.js","../../../src/utils/isBrowser.js","../../../src/utils/debounce.js","../../../src/utils/isFunction.js","../../../src/utils/getStyleComputedProperty.js","../../../src/utils/getParentNode.js","../../../src/utils/getScrollParent.js","../../../src/utils/getReferenceNode.js","../../../src/utils/isIE.js","../../../src/utils/getOffsetParent.js","../../../src/utils/getRoot.js","../../../src/utils/findCommonOffsetParent.js","../../../src/utils/isOffsetContainer.js","../../../src/utils/getScroll.js","../../../src/utils/includeScroll.js","../../../src/utils/getBordersSize.js","../../../src/utils/getWindowSizes.js","../../../src/utils/getClientRect.js","../../../src/utils/getBoundingClientRect.js","../../../src/utils/getOffsetRectRelativeToArbitraryNode.js","../../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../../src/utils/isFixed.js","../../../src/utils/getFixedPositionOffsetParent.js","../../../src/utils/getBoundaries.js","../../../src/utils/computeAutoPlacement.js","../../../src/utils/getReferenceOffsets.js","../../../src/utils/getOuterSizes.js","../../../src/utils/getOppositePlacement.js","../../../src/utils/getPopperOffsets.js","../../../src/utils/find.js","../../../src/utils/runModifiers.js","../../../src/utils/findIndex.js","../../../src/methods/update.js","../../../src/utils/isModifierEnabled.js","../../../src/utils/getSupportedPropertyName.js","../../../src/methods/destroy.js","../../../src/utils/getWindow.js","../../../src/utils/setupEventListeners.js","../../../src/methods/enableEventListeners.js","../../../src/methods/disableEventListeners.js","../../../src/utils/removeEventListeners.js","../../../src/utils/isNumeric.js","../../../src/utils/setStyles.js","../../../src/modifiers/computeStyle.js","../../../src/utils/isModifierRequired.js","../../../src/methods/placements.js","../../../src/utils/clockwise.js","../../../src/modifiers/flip.js","../../../src/modifiers/offset.js","../../../src/modifiers/index.js","../../../src/methods/defaults.js","../../../src/modifiers/shift.js","../../../src/modifiers/preventOverflow.js","../../../src/modifiers/keepTogether.js","../../../src/modifiers/arrow.js","../../../src/utils/getOppositeVariation.js","../../../src/modifiers/inner.js","../../../src/modifiers/hide.js","../../../src/utils/getRoundedOffsets.js","../../../src/modifiers/applyStyle.js","../../../src/utils/setAttributes.js","../../../src/index.js","../node_modules/attr-accept/dist/index.js","../node_modules/@material-ui/icons/CloudUpload.js","../node_modules/@material-ui/icons/Code.js","../node_modules/react-month-picker/lib/month-picker.js","../node_modules/@material-ui/icons/ArrowDropDown.js","../node_modules/date-fns/esm/getYear/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@material-ui/icons/Close.js","../node_modules/@material-ui/icons/Replay.js","../node_modules/@material-ui/icons/Restore.js","../node_modules/@material-ui/pickers/esm/MuiPickersUtilsProvider.js","../node_modules/classnames/index.js","../node_modules/date-fns/esm/eachWeekOfInterval/index.js","../node_modules/date-fns/esm/eachMonthOfInterval/index.js","../node_modules/date-fns/esm/addMinutes/index.js","../node_modules/date-fns/esm/subDays/index.js","../node_modules/date-fns/esm/subMonths/index.js","../node_modules/@material-ui/icons/Cancel.js","../node_modules/material-ui-chip-input/lib/ChipInput.js","../node_modules/classnames/bind.js","../node_modules/@material-ui/core/esm/styles/createBreakpoints.js","../node_modules/@material-ui/core/esm/styles/createMixins.js","../node_modules/@material-ui/core/esm/colors/common.js","../node_modules/@material-ui/core/esm/colors/grey.js","../node_modules/@material-ui/core/esm/colors/indigo.js","../node_modules/@material-ui/core/esm/colors/pink.js","../node_modules/@material-ui/core/esm/colors/red.js","../node_modules/@material-ui/core/esm/colors/orange.js","../node_modules/@material-ui/core/esm/colors/blue.js","../node_modules/@material-ui/core/esm/colors/green.js","../node_modules/@material-ui/core/esm/styles/createPalette.js","../node_modules/@material-ui/core/esm/styles/createTypography.js","../node_modules/@material-ui/core/esm/styles/shadows.js","../node_modules/@material-ui/core/esm/styles/shape.js","../node_modules/@material-ui/core/esm/styles/createSpacing.js","../node_modules/@material-ui/core/esm/styles/createMuiTheme.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../../../src/file.ts","../../../src/file-selector.ts","../node_modules/react-dropzone/dist/es/utils/index.js","../node_modules/react-dropzone/dist/es/index.js","../node_modules/graphql/language/printer.mjs","../../src/httpLink.ts","../node_modules/@material-ui/core/esm/MenuList/MenuList.js","../node_modules/@material-ui/core/esm/Menu/Menu.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@material-ui/core/esm/Grow/Grow.js","../node_modules/@material-ui/core/esm/Fade/Fade.js","../node_modules/jss-plugin-rule-value-function/node_modules/jss/dist/jss.esm.js","../node_modules/jss-plugin-rule-value-function/dist/jss-plugin-rule-value-function.esm.js","../node_modules/jss-plugin-global/node_modules/jss/dist/jss.esm.js","../node_modules/jss-plugin-global/dist/jss-plugin-global.esm.js","../node_modules/jss-plugin-nested/dist/jss-plugin-nested.esm.js","../node_modules/hyphenate-style-name/index.js","../node_modules/jss-plugin-camel-case/dist/jss-plugin-camel-case.esm.js","../node_modules/jss-plugin-default-unit/node_modules/jss/dist/jss.esm.js","../node_modules/jss-plugin-default-unit/dist/jss-plugin-default-unit.esm.js","../node_modules/css-vendor/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/css-vendor/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/css-vendor/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/css-vendor/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/css-vendor/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/css-vendor/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/css-vendor/dist/css-vendor.esm.js","../node_modules/jss-plugin-vendor-prefixer/node_modules/jss/dist/jss.esm.js","../node_modules/jss-plugin-vendor-prefixer/dist/jss-plugin-vendor-prefixer.esm.js","../node_modules/jss-plugin-props-sort/dist/jss-plugin-props-sort.esm.js","../node_modules/@material-ui/styles/esm/jssPreset/jssPreset.js","../node_modules/@material-ui/core/esm/Modal/ModalManager.js","../node_modules/@material-ui/core/esm/Unstable_TrapFocus/Unstable_TrapFocus.js","../node_modules/@material-ui/core/esm/Modal/SimpleBackdrop.js","../node_modules/@material-ui/core/esm/Modal/Modal.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/webpack/buildin/harmony-module.js","../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../node_modules/is-buffer/index.js","../node_modules/create-react-context/lib/implementation.js","../node_modules/fbjs/lib/warning.js","../node_modules/fbjs/lib/emptyFunction.js","../node_modules/zen-observable/lib/Observable.js","../node_modules/babel-preset-react-app/node_modules/regenerator-runtime/runtime.js","../node_modules/react-router/node_modules/isarray/index.js","../node_modules/shallow-clone/index.js","../node_modules/buffer/index.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/isarray/index.js","../node_modules/shallow-clone/node_modules/kind-of/index.js","../node_modules/clone-deep/node_modules/kind-of/index.js","../node_modules/is-plain-object/index.js","../node_modules/isobject/index.js","../node_modules/@ag-grid-community/react/lib/agGridReact.js","../node_modules/@ag-grid-community/react/lib/reactComponent.js","../node_modules/@ag-grid-community/react/lib/baseReactComponent.js","../node_modules/@ag-grid-community/react/lib/utils.js","../node_modules/@ag-grid-community/react/lib/keyGenerator.js","../node_modules/@ag-grid-community/react/lib/changeDetectionService.js","../node_modules/object-keys/implementation.js","../node_modules/is-arguments/index.js","../node_modules/object-is/index.js","../node_modules/is-regex/index.js","../node_modules/has/src/index.js","../node_modules/function-bind/index.js","../node_modules/function-bind/implementation.js","../node_modules/regexp.prototype.flags/index.js","../node_modules/regexp.prototype.flags/shim.js","../node_modules/is-date-object/index.js","../node_modules/google-maps-react/dist/GoogleApiComponent.js","../node_modules/google-maps-react/dist/lib/ScriptCache.js","../node_modules/google-maps-react/dist/lib/windowOrGlobal.js","../node_modules/google-maps-react/dist/lib/GoogleApi.js","../node_modules/google-maps-react/dist/components/Marker.js","../node_modules/google-maps-react/dist/components/InfoWindow.js","../node_modules/google-maps-react/dist/components/HeatMap.js","../node_modules/google-maps-react/dist/components/Polygon.js","../node_modules/google-maps-react/dist/components/Polyline.js","../node_modules/google-maps-react/dist/lib/cancelablePromise.js","../node_modules/react-tapper/lib/tappable.js","../node_modules/react-tapper/lib/touch-support.js","../node_modules/react-tapper/lib/event-support.js","../node_modules/react-tapper/lib/touch-styles.js","../node_modules/@material-ui/core/FilledInput/FilledInput.js","../node_modules/@babel/runtime/helpers/interopRequireWildcard.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/@material-ui/core/styles/defaultTheme.js","../node_modules/@material-ui/core/styles/createMuiTheme.js","../node_modules/@material-ui/core/styles/createBreakpoints.js","../node_modules/@material-ui/core/styles/createMixins.js","../node_modules/@material-ui/core/styles/createPalette.js","../node_modules/@material-ui/core/colors/common.js","../node_modules/@material-ui/core/colors/grey.js","../node_modules/@material-ui/core/colors/indigo.js","../node_modules/@material-ui/core/colors/pink.js","../node_modules/@material-ui/core/colors/red.js","../node_modules/@material-ui/core/colors/orange.js","../node_modules/@material-ui/core/colors/green.js","../node_modules/@material-ui/core/styles/colorManipulator.js","../node_modules/@material-ui/core/styles/createTypography.js","../node_modules/@material-ui/core/styles/shadows.js","../node_modules/@material-ui/core/styles/shape.js","../node_modules/@material-ui/core/styles/createSpacing.js","../node_modules/@material-ui/core/styles/transitions.js","../node_modules/@material-ui/core/styles/zIndex.js","../node_modules/graphql/jsutils/devAssert.mjs","../node_modules/graphql/jsutils/defineToJSON.mjs","../node_modules/graphql/jsutils/isObjectLike.mjs","../node_modules/graphql/language/location.mjs","../node_modules/graphql/language/printLocation.mjs","../node_modules/graphql/error/GraphQLError.mjs","../node_modules/graphql/error/syntaxError.mjs","../node_modules/graphql/language/kinds.mjs","../node_modules/graphql/language/source.mjs","../node_modules/graphql/jsutils/defineToStringTag.mjs","../node_modules/graphql/language/tokenKind.mjs","../node_modules/graphql/language/lexer.mjs","../node_modules/graphql/language/directiveLocation.mjs","../node_modules/graphql/language/parser.mjs","../node_modules/@material-ui/styles/esm/withStyles/withStyles.js","../node_modules/@material-ui/styles/esm/createGenerateClassName/createGenerateClassName.js","../node_modules/@material-ui/styles/esm/getThemeProps/getThemeProps.js","../node_modules/@material-ui/core/esm/IconButton/IconButton.js","../node_modules/@material-ui/core/esm/Portal/Portal.js","../node_modules/@material-ui/core/esm/ListItem/ListItem.js","../node_modules/@material-ui/core/esm/Backdrop/Backdrop.js","../node_modules/@material-ui/core/esm/FilledInput/FilledInput.js","../node_modules/@material-ui/styles/esm/createStyles/createStyles.js","../node_modules/@material-ui/core/esm/Popper/Popper.js","../node_modules/@material-ui/core/esm/FormGroup/FormGroup.js","../node_modules/@material-ui/core/esm/Select/SelectInput.js","../node_modules/@material-ui/core/esm/internal/svg-icons/ArrowDropDown.js","../node_modules/@material-ui/core/esm/NativeSelect/NativeSelectInput.js","../node_modules/@material-ui/core/esm/NativeSelect/NativeSelect.js","../node_modules/@material-ui/core/esm/Select/Select.js","../node_modules/@material-ui/core/esm/CircularProgress/CircularProgress.js","../node_modules/@material-ui/styles/esm/mergeClasses/mergeClasses.js","../node_modules/@material-ui/icons/esm/AccountCircle.js","../node_modules/@material-ui/core/esm/Popover/Popover.js","../node_modules/@material-ui/core/esm/List/List.js","../node_modules/@material-ui/core/esm/MenuItem/MenuItem.js","../node_modules/@material-ui/core/esm/styles/makeStyles.js","../node_modules/@material-ui/core/esm/ListItemIcon/ListItemIcon.js","../node_modules/@material-ui/core/esm/ListItemText/ListItemText.js","../node_modules/@material-ui/icons/esm/Home.js","../node_modules/@material-ui/icons/esm/PeopleAlt.js","../node_modules/@material-ui/icons/esm/HomeWork.js","../node_modules/@material-ui/icons/esm/Flare.js","../node_modules/@material-ui/icons/esm/Receipt.js","../node_modules/@material-ui/icons/esm/Add.js","../node_modules/@material-ui/icons/esm/Create.js","../node_modules/@material-ui/icons/esm/LocalDrink.js","../node_modules/@material-ui/icons/esm/ImportExport.js","../node_modules/@material-ui/icons/esm/QuestionAnswer.js","../node_modules/@material-ui/icons/esm/SentimentVerySatisfied.js","../node_modules/@material-ui/icons/esm/Shop.js","../node_modules/@material-ui/icons/esm/Build.js","../node_modules/@material-ui/icons/esm/Email.js","../node_modules/@material-ui/icons/esm/Settings.js","../node_modules/@material-ui/icons/esm/Bookmarks.js","../node_modules/@material-ui/icons/esm/LocalOffer.js","../node_modules/@material-ui/core/esm/Icon/Icon.js","../node_modules/@material-ui/core/esm/SnackbarContent/SnackbarContent.js","../node_modules/@material-ui/styles/esm/styled/styled.js","../node_modules/@material-ui/core/esm/Button/Button.js","../node_modules/@material-ui/core/esm/Dialog/Dialog.js","../node_modules/@material-ui/core/esm/DialogTitle/DialogTitle.js","../node_modules/@material-ui/core/esm/DialogContent/DialogContent.js","../node_modules/@material-ui/core/esm/DialogContentText/DialogContentText.js","../node_modules/@material-ui/core/esm/DialogActions/DialogActions.js","../node_modules/@material-ui/core/esm/TextField/TextField.js","../node_modules/@material-ui/core/esm/styles/createStyles.js","../node_modules/@material-ui/lab/esm/AlertTitle/AlertTitle.js","../node_modules/@material-ui/lab/esm/ToggleButton/ToggleButton.js","../node_modules/@material-ui/core/esm/Grid/Grid.js","../node_modules/@material-ui/core/esm/CssBaseline/CssBaseline.js","../node_modules/@material-ui/core/esm/AppBar/AppBar.js","../node_modules/@material-ui/core/esm/Toolbar/Toolbar.js","../node_modules/@material-ui/core/esm/Card/Card.js","../node_modules/use-debounce/esm/useDebouncedCallback.js","../node_modules/@material-ui/icons/esm/Check.js","../node_modules/@material-ui/icons/esm/Close.js","../node_modules/@material-ui/icons/esm/Cancel.js","../node_modules/@material-ui/icons/esm/Delete.js","../node_modules/@material-ui/icons/esm/History.js","../node_modules/@material-ui/core/esm/Link/Link.js","../node_modules/@material-ui/core/esm/RadioGroup/RadioGroup.js","../node_modules/@material-ui/core/esm/FormControlLabel/FormControlLabel.js","../node_modules/@material-ui/core/esm/InputAdornment/InputAdornment.js","../node_modules/@material-ui/core/esm/Tooltip/Tooltip.js","../node_modules/@material-ui/icons/esm/Remove.js","../node_modules/@material-ui/icons/esm/LastPage.js","../node_modules/@material-ui/icons/esm/FirstPage.js","../node_modules/@material-ui/icons/esm/KeyboardArrowRight.js","../node_modules/@material-ui/icons/esm/KeyboardArrowLeft.js","../node_modules/@material-ui/core/esm/TableRow/TableRow.js","../node_modules/@material-ui/core/esm/TableCell/TableCell.js","../node_modules/@material-ui/core/esm/Collapse/Collapse.js","../node_modules/@material-ui/core/esm/TableHead/TableHead.js","../node_modules/@material-ui/core/esm/TableContainer/TableContainer.js","../node_modules/@material-ui/core/esm/Table/Table.js","../node_modules/@material-ui/core/esm/TableBody/TableBody.js","../node_modules/@material-ui/core/esm/TableFooter/TableFooter.js","../node_modules/date-fns/esm/getMonth/index.js","../node_modules/@material-ui/icons/esm/Clear.js","../node_modules/@material-ui/icons/esm/Done.js","../node_modules/@material-ui/icons/esm/FlashOn.js","../node_modules/@material-ui/icons/esm/DeleteForever.js","../node_modules/@material-ui/icons/esm/ErrorRounded.js","../node_modules/@material-ui/icons/esm/RotateLeft.js","../node_modules/@material-ui/core/esm/ClickAwayListener/ClickAwayListener.js","../node_modules/@material-ui/icons/esm/CloudDownload.js","../node_modules/@material-ui/icons/esm/HighlightOff.js","../node_modules/@material-ui/icons/esm/ErrorOutline.js","../node_modules/@material-ui/icons/esm/CheckCircleOutlineRounded.js","../node_modules/date-fns/esm/isWithinInterval/index.js","../node_modules/date-fns/esm/parseISO/index.js","../node_modules/@material-ui/icons/esm/ArrowBackIosRounded.js","../node_modules/@material-ui/icons/esm/ArrowForwardIosRounded.js","../node_modules/@material-ui/core/esm/RootRef/RootRef.js","../node_modules/@material-ui/core/esm/Switch/Switch.js","../node_modules/date-fns/esm/subWeeks/index.js","../node_modules/@material-ui/styles/esm/ThemeProvider/ThemeProvider.js","../node_modules/@material-ui/icons/esm/KeyboardArrowDown.js","../node_modules/@material-ui/icons/esm/KeyboardArrowUp.js","../node_modules/@material-ui/pickers/esm/_shared/hooks/useUtils.js","../node_modules/@material-ui/pickers/esm/_shared/ToolbarText.js","../node_modules/@material-ui/pickers/esm/_shared/PickerToolbar.js","../node_modules/@material-ui/pickers/esm/_shared/ToolbarButton.js","../node_modules/@material-ui/core/esm/utils/scrollLeft.js","../node_modules/@material-ui/core/esm/Tab/Tab.js","../node_modules/@material-ui/core/esm/internal/animate.js","../node_modules/@material-ui/core/esm/Tabs/ScrollbarSize.js","../node_modules/@material-ui/core/esm/Tabs/TabIndicator.js","../node_modules/@material-ui/core/esm/TabScrollButton/TabScrollButton.js","../node_modules/@material-ui/core/esm/Tabs/Tabs.js","../node_modules/@material-ui/pickers/esm/DateTimePicker/DateTimePickerTabs.js","../node_modules/@material-ui/pickers/esm/_shared/icons/DateRangeIcon.js","../node_modules/@material-ui/pickers/esm/_shared/icons/TimeIcon.js","../node_modules/@material-ui/pickers/esm/constants/ClockType.js","../node_modules/@material-ui/pickers/esm/_helpers/utils.js","../node_modules/@material-ui/pickers/esm/_helpers/time-utils.js","../node_modules/@material-ui/pickers/esm/TimePicker/TimePickerToolbar.js","../node_modules/@material-ui/pickers/esm/DateTimePicker/DateTimePickerToolbar.js","../node_modules/@material-ui/pickers/esm/_helpers/text-field-helper.js","../node_modules/@material-ui/pickers/esm/constants/prop-types.js","../node_modules/@material-ui/pickers/esm/views/Calendar/Day.js","../node_modules/@material-ui/pickers/esm/views/Calendar/DayWrapper.js","../node_modules/@material-ui/pickers/esm/views/Calendar/SlideTransition.js","../node_modules/@material-ui/pickers/esm/views/Calendar/CalendarHeader.js","../node_modules/@material-ui/pickers/esm/_shared/icons/ArrowLeftIcon.js","../node_modules/@material-ui/pickers/esm/_shared/icons/ArrowRightIcon.js","../node_modules/@material-ui/pickers/esm/_shared/hooks/useKeyDown.js","../node_modules/@material-ui/pickers/esm/_helpers/date-utils.js","../node_modules/@material-ui/pickers/esm/views/Calendar/Calendar.js","../node_modules/@material-ui/pickers/esm/_shared/WithUtils.js","../node_modules/@material-ui/pickers/esm/views/Clock/ClockPointer.js","../node_modules/@material-ui/pickers/esm/views/Clock/Clock.js","../node_modules/@material-ui/pickers/esm/views/Clock/ClockNumber.js","../node_modules/@material-ui/pickers/esm/views/Clock/ClockNumbers.js","../node_modules/@material-ui/pickers/esm/views/Clock/ClockView.js","../node_modules/@material-ui/pickers/esm/views/Year/Year.js","../node_modules/@material-ui/pickers/esm/wrappers/StaticWrapper.js","../node_modules/@material-ui/pickers/esm/constants/dimensions.js","../node_modules/@material-ui/pickers/esm/_shared/ModalDialog.js","../node_modules/@material-ui/pickers/esm/wrappers/ModalWrapper.js","../node_modules/@material-ui/pickers/esm/wrappers/InlineWrapper.js","../node_modules/@material-ui/pickers/esm/wrappers/Wrapper.js","../node_modules/@material-ui/pickers/esm/views/Year/YearView.js","../node_modules/@material-ui/pickers/esm/views/Month/Month.js","../node_modules/@material-ui/pickers/esm/views/Month/MonthView.js","../node_modules/@material-ui/pickers/esm/_shared/hooks/useIsLandscape.js","../node_modules/@material-ui/pickers/esm/Picker/Picker.js","../node_modules/@material-ui/pickers/esm/_shared/hooks/useViews.js","../node_modules/@material-ui/pickers/esm/_shared/hooks/usePickerState.js","../node_modules/@material-ui/pickers/esm/_shared/hooks/useOpenState.js","../node_modules/@material-ui/pickers/esm/_shared/PureDateInput.js","../node_modules/rifm/dist/rifm.esm.js","../node_modules/@material-ui/pickers/esm/_shared/KeyboardDateInput.js","../node_modules/@material-ui/pickers/esm/_shared/icons/KeyboardIcon.js","../node_modules/@material-ui/pickers/esm/DateTimePicker/DateTimePicker.js","../node_modules/@material-ui/pickers/esm/Picker/WrappedPurePicker.js","../node_modules/@material-ui/pickers/esm/Picker/WrappedKeyboardPicker.js","../node_modules/@material-ui/pickers/esm/_shared/hooks/useKeyboardPickerState.js","../node_modules/date-fns/esm/compareAsc/index.js","../node_modules/date-fns/esm/differenceInCalendarYears/index.js","../node_modules/date-fns/esm/differenceInYears/index.js","../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","../node_modules/date-fns/esm/differenceInMonths/index.js","../node_modules/date-fns/esm/differenceInHours/index.js","../node_modules/date-fns/esm/differenceInMinutes/index.js","../node_modules/date-fns/esm/differenceInSeconds/index.js","../node_modules/date-fns/esm/sub/index.js","../node_modules/date-fns/esm/intervalToDuration/index.js","../node_modules/date-fns/esm/locale/de/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/de/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/de/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/de/_lib/localize/index.js","../node_modules/date-fns/esm/locale/de/index.js","../node_modules/date-fns/esm/locale/de/_lib/match/index.js","../node_modules/date-fns/esm/locale/fr/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/fr/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/fr/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/fr/_lib/localize/index.js","../node_modules/date-fns/esm/locale/fr/index.js","../node_modules/date-fns/esm/locale/fr/_lib/match/index.js","../node_modules/@material-ui/lab/esm/internal/svg-icons/SuccessOutlined.js","../node_modules/@material-ui/lab/esm/internal/svg-icons/ReportProblemOutlined.js","../node_modules/@material-ui/lab/esm/internal/svg-icons/ErrorOutline.js","../node_modules/@material-ui/lab/esm/internal/svg-icons/InfoOutlined.js","../node_modules/@material-ui/lab/esm/Alert/Alert.js","../node_modules/@material-ui/core/esm/internal/svg-icons/RadioButtonUnchecked.js","../node_modules/@material-ui/core/esm/internal/svg-icons/RadioButtonChecked.js","../node_modules/@material-ui/core/esm/Radio/RadioButtonIcon.js","../node_modules/@material-ui/core/esm/Radio/Radio.js","../node_modules/@material-ui/core/esm/RadioGroup/useRadioGroup.js","../node_modules/@material-ui/core/esm/ListSubheader/ListSubheader.js","../node_modules/@material-ui/lab/esm/internal/svg-icons/ArrowDropDown.js","../node_modules/@material-ui/lab/esm/useAutocomplete/useAutocomplete.js","../node_modules/@material-ui/lab/esm/Autocomplete/Autocomplete.js","../node_modules/@material-ui/core/esm/internal/svg-icons/CheckBoxOutlineBlank.js","../node_modules/@material-ui/core/esm/internal/svg-icons/CheckBox.js","../node_modules/@material-ui/core/esm/internal/svg-icons/IndeterminateCheckBox.js","../node_modules/@material-ui/core/esm/Checkbox/Checkbox.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-transition-group/esm/CSSTransition.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","../../src/Query.tsx","../../src/Mutation.tsx","../../src/Subscription.tsx","../../src/hoc-utils.tsx","../../src/withApollo.tsx","../node_modules/@material-ui/core/esm/styles/styled.js","../node_modules/@material-ui/core/esm/Box/Box.js","../node_modules/date-fns/esm/addHours/index.js","../node_modules/date-fns/esm/subHours/index.js","../node_modules/@material-ui/lab/esm/ToggleButtonGroup/isValueSelected.js","../node_modules/@material-ui/lab/esm/ToggleButtonGroup/ToggleButtonGroup.js","../node_modules/@material-ui/core/esm/Slide/Slide.js","../node_modules/@material-ui/core/esm/Drawer/Drawer.js","../node_modules/@material-ui/core/esm/TablePagination/TablePaginationActions.js","../node_modules/@material-ui/core/esm/TablePagination/TablePagination.js","../node_modules/date-fns/esm/locale/en-GB/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/en-GB/index.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js"],"names":["module","exports","require","globalObj","global","HTMLElement","HTMLButtonElement","HTMLSelectElement","HTMLInputElement","Node","MouseEvent","PromiseStatus","Color","r","g","b","a","this","Math","min","max","fromString","str","indexOf","fromHexString","hex","nameToHex","fromRgbaString","Error","values","match","hexRe","parseInt","undefined","shortHexRe","rgbRe","rgbaRe","fromArray","arr","length","fromHSB","h","s","alpha","rgb","HSBtoRGB","padHex","prototype","toHexString","round","toString","toRgbaString","fractionDigits","components","k","pow","push","join","toHSB","RGBtoHSB","H","NaN","delta","rc","gc","bc","S","B","isNaN","floor","f","p","q","t","derive","hueShift","saturationFactor","brightnessFactor","opacityFactor","hsb","rgba","brighter","darker","Object","freeze","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","FUNCTION_STRIP_COMMENTS","FUNCTION_ARGUMENT_NAMES","HTML_ESCAPES","reUnescapedHtml","Utils","doOnce","func","key","doOnceFlags","isLeftClick","mouseEvent","buttons","which","button","areEventsNear","e1","e2","pixelCount","diffX","abs","clientX","diffY","clientY","jsonEquals","val1","val2","JSON","stringify","shallowCompare","arr1","arr2","missing","i","getNameOfClass","theClass","funcAsString","results","exec","getValueUsingField","data","field","fieldContainsDots","fields","split","currentObject","getElementSize","el","_a","window","getComputedStyle","height","width","paddingTop","paddingRight","paddingBottom","paddingLeft","marginTop","marginRight","marginBottom","marginLeft","boxSizing","parseFloat","getInnerHeight","size","getInnerWidth","getAbsoluteHeight","ceil","offsetHeight","getAbsoluteWidth","marginWidth","offsetWidth","getScrollLeft","element","rtl","scrollLeft","isBrowserChrome","scrollWidth","clientWidth","cleanNumber","value","setScrollLeft","isBrowserSafari","isBrowserFirefox","iterateNamedNodeMap","map","callback","attr","name","iterateObject","object","Array","isArray","forEach","index","keys","cloneObject","copy","copyPropertiesIfPresent","source","target","_this","properties","_i","arguments","copyPropertyIfPresent","property","transform","getProperty","setProperty","getAllKeysInObjects","objects","allValues","obj","mergeDeep","dest","exists","newValue","oldValue","assign","sources","flatten","arrayOfArrays","concat","apply","parseYyyyMmDdToDate","yyyyMmDd","separator","Date","Number","e","serializeDateToYyyyMmDd","date","getFullYear","padStart","getMonth","getDate","num","totalStringSize","asString","pushAll","createArrayOfNumbers","first","last","result","getFunctionParameters","fnStr","replace","slice","find","collection","predicate","objToArray","collectionAsArray","firstMatchingItem","item","toStrings","array","findIndex","isNode","o","nodeType","nodeName","isElement","isNodeOrElement","copyNodeList","nodeList","childCount","res","isEventFromPrintableCharacter","event","pressedChar","String","fromCharCode","charCode","isKeyPressed","Constants","KEY_NEW_LINE","altKey","ctrlKey","_","printableCharacter","numpadDelWithNumlockOnForEdgeOrIe","isNumpadDelWithNumlockOnForEdgeOrIe","PRINTABLE_CHARACTERS","isUserSuppressingKeyboardEvent","gridOptionsWrapper","keyboardEvent","rowNode","column","editing","gridOptionsFunc","getSuppressKeyboardEventFunc","colDefFunc","getColDef","suppressKeyboardEvent","params","api","getApi","node","colDef","context","getContext","columnApi","getColumnApi","getCellCompForEvent","sourceElement","getTarget","renderedCell","getDomData","parentElement","addChangeListener","listener","addEventListener","makeNull","missingOrEmpty","missingOrEmptyObject","allowEmptyString","firstExistingValue","anyExists","existsAndNotEmpty","clearElement","firstChild","removeChild","removeElement","parent","cssSelector","removeFromParent","querySelector","parentNode","isVisible","offsetParent","callIfPresent","loadTemplate","template","tempDiv","document","createElement","innerHTML","appendHtml","eContainer","htmlTemplate","lastChild","insertAdjacentHTML","addOrRemoveCssClass","className","addOrRemove","addCssClass","removeCssClass","radioCssClass","inverted","sibling","nextSibling","classList","contains","add","cssClasses","setAttribute","remove","splice","containsClass","onlyClass","startsWithClass","endsWithClass","lastIndexOf","getElementAttribute","attributeName","attributes","clientHeight","sortNumberArray","numberArray","sort","removeRepeatsFromArray","thisOneMatches","nextOneMatches","removeFromArray","removeAllFromArray","toRemove","insertIntoArray","toIndex","insertArrayIntoArray","src","moveInArray","objectsToMove","reverse","defaultComparator","valueA","valueB","accentedCompare","valueAMissing","valueBMissing","toNumber","doQuickCompare","localeCompare","compareArrays","array1","array2","ensureDomOrder","eChild","eChildBefore","insertBefore","appendChild","insertAdjacentElement","setDomChildOrder","orderedChildren","correctCellAtIndex","actualCellAtIndex","children","insertTemplateWithDomOrder","every","items","toStringOrNull","formatSize","formatNumberTwoDecimalPlacesAndCommas","findLineByLeastSquares","len","sum_x","sum_y","sum_xy","sum_xx","y","x","m","formatNumberCommas","prependDC","documentFragment","createIcon","iconName","iconContents","createIconNoSpan","eResult","forceCreate","userProvidedIcon","icons","optionsIcons","getIcons","span","cssClass","iconNameClassMap","console","warn","rendererResult","addStylesToElement","eElement","styles","keyCamelCase","hyphenToCamelCase","style","isHorizontalScrollShowing","isVerticalScrollShowing","scrollHeight","getMaxDivHeight","body","testUpTo","navigator","userAgent","toLowerCase","div","test","getScrollbarWidth","opacity","overflow","msOverflowStyle","position","hasOverflowScrolling","prefixes","found","getElementsByTagName","prefix","computedStyle","overflowScrolling","prefixes_1","keyToCheck","keyCode","isCharacterKey","metaKey","setDisplayed","displayed","setVisible","visible","setElementWidth","minWidth","maxWidth","flex","setFixedWidth","setElementHeight","minHeight","maxHeight","setFixedHeight","isBrowserIE","isIE","documentMode","isBrowserEdge","isEdge","StyleMedia","isSafari","anyWindow","call","safari","pushNotification","isChrome","win","chrome","webstore","runtime","vendor","isFirefox","InstallTrigger","isIOSUserAgent","isIOS","platform","maxTouchPoints","MSStream","eventNoType","srcElement","isElementChildOfClass","cls","maxNest","counter","isElementInEventPath","getEventPath","isFunction","val","constructor","createEventPath","pointer","addAgGridEventPath","__agGridEventPath","deepPath","path","composedPath","forEachSnapshotFirst","list","getBodyWidth","innerHeight","innerWidth","documentElement","getBodyHeight","setCheckboxState","eCheckbox","state","checked","indeterminate","traverseNodesWithKey","nodes","keyParts","recursiveSearchNodes","currentNodes","group","hasChildren","childrenAfterGroup","pop","camelCaseToHyphen","toUpperCase","capitalise","substr","cssStyleObjectToMarkup","stylesToUse","resParts","styleKey","styleValue","styleKeyDashed","isNumeric","isFinite","escape","toEscape","chr","normalizeWheel","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","debounce","wait","immediate","timeout","args","callNow","clearTimeout","setTimeout","stopPropagationForAgGrid","isStopPropagationForAgGrid","executeInAWhile","funcs","executeAfter","executeNextVMTurn","millis","referenceCompare","left","right","get","expression","defaultValue","objectToRead","shift","set","objectToUpdate","addSafePassiveEventListener","frameworkOverrides","options","PASSIVE_EVENTS","passive","OUTSIDE_ANGULAR_EVENTS","addEventListenerOutsideAngular","camelCaseToHumanText","camelCase","word","substring","message","msg","eMessage","eBox","sortRowNodesByOrder","rowNodes","rowNodeOrder","comparator","nodeA","nodeB","positionA","id","positionB","aHasIndex","bHasIndex","__objectId","atLeastOneOutOfOrder","fuzzyCheckStrings","inputValues","validValues","allSuggestions","fuzzyMatches","invalidInputs","filter","inputValue","some","validValue","invalidInput","fuzzySuggestions","hideIrrelevant","weighted","search","string_weighted_distances","string_distances","thisSuggestions","text","relevance","toLocaleLowerCase","suggestion","get_bigrams","from","j","ref","v","str1","str2","pairs1","pairs2","union","hit_count","len1","weight","lastIndex","idx","NUMPAD_DEL_NUMLOCK_ON_KEY","NUMPAD_DEL_NUMLOCK_ON_CHARCODE","bindCellRendererToHtmlElement","cellRendererPromise","eTarget","then","cellRenderer","gui","getGui","supports","isEventSupported","tags","select","change","submit","reset","error","load","abort","eventName","isSupported","areEqual","includes","compose","fns","arg","reduce","composed","decToHex","number","bytes","utf8_encode","stringFromCharCode","createByte","codePoint","encodeCodePoint","symbol","checkScalarValue","codePoints","string","extra","output","charCodeAt","ucs2decode","byteString","deepCloneObject","parse","columnGroupOpened","columnGroupClosed","columnSelectClosed","columnSelectOpen","columnSelectIndeterminate","columnMovePin","columnMoveAdd","columnMoveHide","columnMoveMove","columnMoveLeft","columnMoveRight","columnMoveGroup","columnMoveValue","columnMovePivot","dropNotAllowed","groupContracted","groupExpanded","chart","close","cancel","check","checkboxChecked","checkboxUnchecked","checkboxIndeterminate","checkboxCheckedReadOnly","checkboxUncheckedReadOnly","checkboxIndeterminateReadOnly","previous","next","linked","unlinked","colorPicker","radioButtonOn","radioButtonOff","groupLoading","menu","columns","maximize","minimize","menuPin","menuValue","menuAddRowGroup","menuRemoveRowGroup","clipboardCopy","clipboardCut","clipboardPaste","pivotPanel","rowGroupPanel","valuePanel","columnDrag","rowDrag","save","smallLeft","smallRight","smallUp","smallDown","sortAscending","sortDescending","sortUnSort","NumberSequence","initValue","step","nextValue","valToReturn","peek","skip","count","Promise","status","IN_PROGRESS","resolution","listOfWaiters","onDone","bind","onReject","all","toCombine","resolve","combinedValues","remainingToResolve","sourceResolved","external","capture","promise","firstOneOnly","adapter","unmapped","resolveNow","ifNotResolvedValue","ifResolved","RESOLVED","waiter","Timer","timestamp","getTime","print","duration","info","getLocalizedElement","translation","renderInnerHtml","translatedValueOrArray","templater","hasHtmlTags","React","dangerouslySetInnerHTML","__html","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","done","portion","warning","err","return","_toConsumableArray","strings","genericPlaceholderPattern","splitStrings","RegExp","templatePortion","matched","prop","isValidElement","translated","objectValuesToString","validateOptions","onMissingTranslation","renderToStaticMarkup","getTranslationsForLanguage","language","languages","translations","languageIndex","code","getIndexForLanguageCode","totalKeys","translationsForLanguage","getSingleToMultilanguageTranslation","languageCodes","flattenedTranslations","existingTranslations","singleLanguageTranslations","_loop","translationValues","existingValues","pathArr","Boolean","ret","_typeof","_extends","hasOwnProperty","_defineProperty","defineProperty","enumerable","configurable","writable","_objectWithoutProperties","INITIALIZE","action","type","_options","payload","isActive","defaultLanguage","active","languageCode","translationWithTransform","safe","_options2","firstLanguage","_defaultLanguage","isMultiLanguageTranslation","newTranslation","translationOptions","translationTransform","defaultTranslateOptions","_options3","_defaultLanguage2","ignoreTranslateChildren","_ref","translationId","initialState","localizeReducer","languagesState","initialize","getTranslations","getLanguages","getOptions","getActiveLanguage","translationsEqualSelector","createSelectorCreator","defaultMemoize","prev","cur","prevKeys","curKeys","prevValues","curValues","getTranslationsForActiveLanguage","getTranslationsForSpecificLanguage","getTranslate","createSelector","translationsForActiveLanguage","activeLanguage","initializeOptions","translateOptions","defaultOptions","overrideLanguage","defaultTranslations","mergedOptions","getTranslation","hasValidTranslation","defaultTranslation","dispatchInitialize","dispatch","dispatchAddTranslation","addTranslation","dispatchAddTranslationForLanguage","addTranslationForLanguage","dispatchSetActiveLanguage","setActiveLanguage","getContextPropsFromState","translate","defaultLocalizeState","defaultContext","LocalizeContext","createReactContext","_createClass","defineProperties","props","descriptor","Constructor","protoProps","staticProps","_classCallCheck","instance","TypeError","_possibleConstructorReturn","self","ReferenceError","withLocalize","WrappedComponent","LocalizedComponent","_Component","__proto__","getPrototypeOf","subClass","superClass","create","setPrototypeOf","_inherits","_this2","Consumer","Component","hoistNonReactStatic","WrappedTranslate","_React$Component","addDefaultTranslation","prevProps","idChanged","noDefaultLanguage","incomingLanguage","_props","_props$options","hasId","hasDefaultLanguage","hasFunctionAsChild","_props2","_props2$id","renderChildren","Translate","LocalizeProvider","store","getContextPropsSelector","localize","initExternalStore","subscribeToExternalStore","unsubscribeFromStore","initializeAC","onChange","currentState","handleChange","nextState","getState","unsubscribe","subscribe","storeDidChange","onStateDidChange","prevState","prevLocalizeState","curLocalizeState","prevActiveLanguage","curActiveLanguage","prevOptions","curOptions","prevTranslations","curTranslations","setState","contextProps","Provider","Context","logger","beanWrappers","componentsMappedByName","destroyed","beanClasses","contextParams","log","setupComponents","createBeans","beanInstances","getBeanInstances","wireBeans","beanEntry","beanInstance","componentMeta","addComponent","classUpperCase","componentName","componentClass","createComponentFromElement","afterPreCreateCallback","createComponent","newComponent","wireBean","bean","autoWireBeans","methodWireBeans","callLifeCycleMethods","createBeanWrapper","constructorParamsMeta","__agBeanMetaData","autowireMethods","agConstructor","constructorParams","getBeansForParameters","newInstance","argArray","applyToConstructor","createdBeanNames","Bean","metaData","beanName","forEachMetaDataInHierarchy","agClassAttributes","attribute","otherBean","lookupBeanInstance","optional","methodName","wireParams","initParams","getBeanName","constructorString","parameters","beansList","paramIndex","otherBeanName","wiringBean","providedBeanInstances","lifeCycleMethod","methods","getBean","destroy","PreConstruct","getOrCreateProps","postConstructMethods","preConstructMethods","PostConstruct","PreDestroy","preDestroyMethods","classConstructor","Autowired","propertyKey","autowiredFunc","Optional","classPrototype","methodOrAttributeName","Qualifier","_slicedToArray","_arr","_n","_d","_e","_s","unsupportedIterableToArray","STEP_EVERYTHING","STEP_FILTER","STEP_SORT","STEP_MAP","STEP_AGGREGATE","STEP_PIVOT","ROW_BUFFER_SIZE","LAYOUT_INTERVAL","BATCH_WAIT_MILLIS","EXPORT_TYPE_DRAG_COPY","EXPORT_TYPE_CLIPBOARD","EXPORT_TYPE_EXCEL","EXPORT_TYPE_CSV","KEY_BACKSPACE","KEY_TAB","KEY_ENTER","KEY_SHIFT","KEY_ESCAPE","KEY_SPACE","KEY_LEFT","KEY_UP","KEY_RIGHT","KEY_DOWN","KEY_DELETE","KEY_A","KEY_C","KEY_V","KEY_D","KEY_F2","KEY_PAGE_UP","KEY_PAGE_DOWN","KEY_PAGE_HOME","KEY_PAGE_END","ROW_MODEL_TYPE_INFINITE","ROW_MODEL_TYPE_VIEWPORT","ROW_MODEL_TYPE_CLIENT_SIDE","ROW_MODEL_TYPE_SERVER_SIDE","DEPRECATED_ROW_MODEL_TYPE_NORMAL","ALWAYS","ONLY_WHEN_GROUPING","PINNED_TOP","PINNED_BOTTOM","DOM_LAYOUT_NORMAL","DOM_LAYOUT_PRINT","DOM_LAYOUT_AUTO_HEIGHT","GROUP_AUTO_COLUMN_ID","SOURCE_PASTE","PINNED_RIGHT","PINNED_LEFT","SORT_ASC","SORT_DESC","excluded","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","toVal","mix","_taggedTemplateLiteral","raw","normalize","trim","docCache","fragmentSourceMap","printFragmentWarnings","experimentalFragmentVariables","parseDocument","doc","cacheKey","parsed","kind","stripLoc","removeLocAtThisLevel","docType","d","loc","startToken","endToken","valueType","ast","astFragmentMap","definitions","fragmentDefinition","fragmentName","sourceKey","start","end","processFragments","gql","literals","default","resetCaches","disableFragmentWarnings","enableExperimentalFragmentVariables","disableExperimentalFragmentVariables","_assertThisInitialized","QuerySelector","selector","querySelectorFunc","RefSelector","addToObjectProps","Listener","listenerFunc","instanceName","__agComponentMetaData","extendStatics","__extends","__","__assign","n","__rest","__awaiter","thisArg","_arguments","P","generator","reject","fulfilled","rejected","__generator","label","sent","trys","ops","verb","op","__read","ar","__spread","requiredArgs","required","randomString","random","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","proto","createStore","reducer","preloadedState","enhancer","_ref2","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","isSubscribed","listeners","replaceReducer","nextReducer","observable","outerSubscribe","observer","observeState","$$observable","getUndefinedStateErrorMessage","actionType","combineReducers","reducers","reducerKeys","finalReducers","process","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","_key","previousStateForKey","nextStateForKey","errorMessage","bindActionCreator","actionCreator","bindActionCreators","actionCreators","boundActionCreators","ownKeys","enumerableOnly","sym","getOwnPropertyDescriptor","_objectSpread2","getOwnPropertyDescriptors","_len","applyMiddleware","middlewares","_dispatch","middlewareAPI","chain","middleware","withStyles","stylesOrCreator","withStylesWithoutDefault","defaultTheme","symbols","isMounted","previousOptions","setOptions","newOptions","storePrevious","isEqual","unmount","refreshClient","client","isNew","cleanup","verifyDocumentType","operation","forceUpdate","previousData","currentObservable","runLazy","runLazyQuery","lazyOptions","getExecuteResult","getQueryResult","startQuerySubscription","obsRefetch","variables","query","refetch","obsFetchMore","fetchMoreOptions","fetchMore","obsUpdateQuery","mapFn","updateQuery","obsStartPolling","pollInterval","startPolling","obsStopPolling","stopPolling","obsSubscribeToMore","subscribeToMore","execute","removeQuerySubscription","updateObservableQuery","getExecuteSsrResult","executeLazy","loading","networkStatus","ready","called","fetchData","ssr","obs","getCurrentResult","afterExecute","lazy","handleErrorOrCompleted","resetQueryStoreErrors","treeRenderingInitiated","renderPromises","ssrDisabled","fetchDisabled","disableNetworkFetches","ssrLoading","addQueryPromise","prepareObservableQueryOptions","Query","displayName","fetchPolicy","metadata","reactComponent","initializeObservableQuery","getSSRObservable","observableQueryOptions","watchQuery","registerSSRObservable","newObservableQueryOptions","catch","subscription","obsQuery","previousResult","resubscribeToQuery","lastError","getLastError","lastResult","getLastResult","resetLastResults","observableQueryFields","currentResult","partial","errors","graphQLErrors","partialRefetch","onCompleted","onError","OperationData","useBaseQuery","tick","updatedOptions","queryDataRef","current","QueryData","queryData","memoFn","useDeepMemo","queryResult","useQuery","useLazyQuery","setResult","runMutation","mutationFunctionOptions","onMutationStart","mutationId","generateNewMutationId","mutate","response","onMutationCompleted","onMutationError","mutation","Mutation","mostRecentMutationId","optimisticResponse","update","awaitRefetchQueries","mutateOptions","mutateVariables","refetchQueries","mutationContext","ignoreResults","updateResult","isMostRecentMutation","useMutation","mutationDataRef","mutationData","MutationData","getLoadingResult","shouldResubscribe","startSubscription","endSubscription","updateCurrentData","updateError","complete","completeSubscription","onSubscriptionData","subscriptionData","onSubscriptionComplete","useSubscription","subscriptionDataRef","SubscriptionData","useApolloClient","queryPromises","Map","queryInfoTrie","lookupQueryInfo","queryInstance","finish","seen","hasPromises","consumeAndAwaitPromises","promises","clear","varMap","has","variablesString","toDate","argument","argStr","stack","ReactReduxContext","createContext","batch","nullListeners","notify","createListenerCollection","Subscription","parentSub","handleChangeWrapper","_proto","addNestedSub","trySubscribe","notifyNestedSubs","onStateChange","tryUnsubscribe","contextValue","useMemo","previousState","useEffect","propTypes","PropTypes","shape","isRequired","any","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","updateCount","initStateUpdates","useIsomorphicLayoutEffect","useLayoutEffect","connectAdvanced","selectorFactory","_ref2$getDisplayName","getDisplayName","_ref2$methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","shouldHandleStateChanges","_ref2$storeKey","storeKey","_ref2$withRef","withRef","_ref2$forwardRef","forwardRef","_ref2$context","connectOptions","_objectWithoutPropertiesLoose","invariant","wrappedComponentName","selectorFactoryOptions","pure","usePureOnlyMemo","ConnectFunction","_useMemo","forwardedRef","wrapperProps","propsContext","ContextToUse","isContextConsumer","useContext","didStoreComeFromProps","didStoreComeFromContext","childPropsSelector","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","useReducer","previousStateUpdateResult","forceComponentUpdateDispatch","lastChildProps","useRef","lastWrapperProps","childPropsFromStoreUpdate","renderIsScheduled","actualChildProps","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","renderedWrappedComponent","Connect","memo","forwarded","hoistStatics","hasOwn","is","shallowEqual","objA","objB","keysA","keysB","wrapMapToPropsConstant","getConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextOwnProps","propsChanged","stateChanged","nextStateProps","statePropsChanged","handleNewState","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","factories","strictEqual","createConnect","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","defaultMapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","defaultMapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","defaultMergePropsFactories","_ref$selectorFactory","defaultSelectorFactory","_ref3","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","useReduxContext","createStoreHook","useDefaultReduxContext","useStore","useDefaultStore","createDispatchHook","refEquality","createSelectorHook","newBatch","addLeadingZeros","targetLength","sign","formatters","token","signedYear","getUTCFullYear","year","M","month","getUTCMonth","getUTCDate","dayPeriodEnumValue","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","dayPeriodEnum","formatTimezoneShort","offset","dirtyDelimiter","absOffset","hours","minutes","delimiter","formatTimezoneWithOptionalMinutes","formatTimezone","G","era","ordinalNumber","unit","lightFormatters","Y","signedWeekYear","getUTCWeekYear","weekYear","R","getUTCISOWeekYear","u","Q","quarter","L","w","week","getUTCWeek","I","isoWeek","getUTCISOWeek","D","dayOfYear","dirtyDate","setUTCMonth","setUTCHours","startOfYearTimestamp","difference","getUTCDayOfYear","E","dayOfWeek","getUTCDay","day","localDayOfWeek","weekStartsOn","c","isoDayOfWeek","dayPeriod","K","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","O","z","originalDate","T","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","format","dirtyFormatStr","dirtyOptions","formatStr","locale","defaultLocale","localeFirstWeekContainsDate","firstWeekContainsDate","defaultFirstWeekContainsDate","toInteger","RangeError","localeWeekStartsOn","defaultWeekStartsOn","formatLong","isValid","getTimezoneOffsetInMilliseconds","utcDate","subMilliseconds","formatterOptions","firstCharacter","longFormatter","longFormatters","cleanEscapedString","formatter","useAdditionalWeekYearTokens","isProtectedWeekYearToken","throwProtectedError","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","input","valueToObjectRepresentation","argObj","isIntValue","isFloatValue","isBooleanValue","isStringValue","isObjectValue","isVariable","variableValue","isListValue","listValue","nestedArgArrayObj","isEnumValue","isNullValue","storeKeyNameFromField","directivesObj","directives","directive","getStoreKeyName","KNOWN_DIRECTIVES","fieldName","filterKeys","completeFieldName","stringifiedArgs","argumentsObjectFromField","resultKeyNameFromField","alias","isField","selection","isInlineFragment","isIdValue","idObject","generated","toIdValue","idConfig","typename","isJsonValue","jsonObject","getDirectiveInfoFromField","shouldInclude","isInclusionDirective","directiveArguments","ifArgument","ifValue","evaledValue","hasDirectives","names","Directive","getDirectiveNames","hasClientExports","getFragmentQueryDocument","actualFragmentName","fragments","definition","selectionSet","selections","checkDocument","operations","getOperationDefinition","getOperationName","getFragmentDefinitions","getQueryDefinition","queryDef","getMainDefinition","queryDoc","createFragmentMap","symTable","fragment","getDefaultValues","variableDefinitions","defaultValues","variable","defaultValueObj","filterInPlace","elem","TYPENAME_FIELD","nullIfDocIsEmpty","isEmpty","fragmentDef","getFragmentDefinition","getDirectiveMatcher","dir","removeDirectivesFromDocument","variablesInUse","variablesToRemove","fragmentSpreadsInUse","fragmentSpreadsToRemove","modifiedDoc","Variable","enter","Field","getAllFragmentSpreadsFromSelectionSet","allFragments","frag","FragmentSpread","config","argMatcher","aConfig","getArgumentMatcher","OperationDefinition","varDef","argConfig","Argument","removeArgumentsFromDocument","fs","def","FragmentDefinition","removeFragmentSpreadFromDocument","addTypenameToDocument","SelectionSet","connectionRemoveConfig","willRemove","removeConnectionDirectiveFromDocument","buildQueryFromSelectionSet","removeClientSetsFromDocument","canUseWeakMap","WeakMap","product","cloneDeep","cloneDeepHelper","child","isEnv","env","isProduction","isTest","tryFunctionOrLogError","graphQLResultHasError","maybeDeepFreeze","deepFreeze","getOwnPropertyNames","isFrozen","mergeDeepArray","pastCopies","shallowCopyForMerge","mergeHelper","isObject","isExtensible","sourceValue","targetValue","createSvgIcon","SvgIcon","muiName","dirtyNumber","capitalize","_formatMuiErrorMessage","charAt","getPath","acc","_options$cssProperty","cssProperty","themeKey","fn","propValue","themeMapping","theme","handleBreakpoints","propValueFinal","filterProps","__decorate","decorators","desc","Reflect","decorate","compIdSequence","_super","childComponents","annotatedEventListeners","compId","setTemplate","getCompId","createChildComponentsFromTags","childNodes","childNode","childComp","copyAttributesFromNode","addItems","swapComponentForNode","eComponent","replaceChild","createComment","swapInComponentForQuerySelectors","thisProto","thisNoType","currentProtoName","querySelectors","eGui","setTemplateFromElement","__agComponent","addAnnotatedEventListeners","wireQuerySelectors","createChildComponentsPreConstruct","_loop_1","thisNoType_1","this_1","resultOfQuery","backingComponent","removeAnnotatedEventListeners","listenerMethods","getAgComponentMetaData","eventListener","removeEventListener","setParentComponent","component","parentComponent","getParentComponent","setGui","queryForHtmlElement","queryForHtmlInputElement","newChild","childComponent","addFeature","feature","wireDependentBean","isDisplayed","event_1","EVENT_DISPLAYED_CHANGED","dispatchEvent","addGuiEventListener","addDestroyFunc","getAttribute","getRefElement","refName","BeanStub","genericMessage","framesToPop","InvariantError","condition","wrapConsoleMethod","method","processStub","Function","atLeastWeTried","BrowserRouter","history","createHistory","render","resolveToLocation","to","currentLocation","normalizeToLocation","createLocation","forwardRefShim","C","LinkAnchor","innerRef","navigate","onClick","rest","ex","isModifiedEvent","Link","RouterContext","location","href","NavLink","ariaCurrent","activeClassName","activeStyle","classNameProp","exact","isActiveProp","locationProp","strict","styleProp","toLocation","escapedPath","matchPath","classnames","joinClassnames","clamp","decomposeColor","color","re","colors","hexToRgb","marker","recomposeColor","getContrastRatio","foreground","background","lumA","getLuminance","lumB","l","hslToRgb","toFixed","emphasize","coefficient","darken","lighten","fade","chainPropTypes","propType1","propType2","elementAcceptingRef","exactProp","fnNameMatchRegex","getFunctionName","getFunctionComponentName","fallback","getWrappedName","outerType","innerType","wrapperName","functionName","$$typeof","ForwardRef","Memo","HTMLElementType","propName","propFullName","refType","oneOfType","_defineProperties","useForkRef","refA","refB","refValue","setRef","arrayLikeToArray","iter","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","Column","userProvidedColDef","colId","primary","moving","menuVisible","filterActive","eventService","EventService","rowGroupActive","pivotActive","aggregationActive","hide","sortedAt","setColDef","getUserProvidedColDef","setParent","getParent","setOriginalParent","originalParent","getOriginalParent","initialise","setPinned","pinned","minColWidth","getMinColWidth","maxColWidth","getMaxColWidth","actualWidth","columnUtils","calculateColInitialWidth","suppressDotNotation","isSuppressFieldDotNotation","tooltipFieldContainsDots","tooltipField","validate","isEmptyGroup","isRowGroupDisplayed","showRowGroup","showingAllGroups","showingThisGroup","getUniqueId","getId","isPrimary","isFilterAllowed","filterDefined","filterFramework","isFieldContainsDots","isTooltipFieldContainsDots","colDefAny","warnOnce","ModuleRegistry","isRegistered","ModuleNames","RowGroupingModule","RichSelectModule","cellEditor","isTreeData","floatingCellRenderer","pinnedRowCellRenderer","floatingRendererFramework","pinnedRowCellRendererFramework","floatingRendererParams","pinnedRowCellRendererParams","floatingValueFormatter","pinnedRowValueFormatter","cellFormatter","valueFormatter","headerCellTemplate","headerCellRenderer","volatile","suppressSorting","sortable","suppressFilter","suppressResize","resizable","tooltip","tooltipValueGetter","suppressToolPanel","suppressColumnsToolPanel","eventType","createIsColumnFuncParams","isSuppressNavigable","suppressNavigable","userFunc","isCellEditable","isEnableGroupEdit","isColumnFunc","editable","isRowDrag","isDndSource","dndSource","isCellCheckboxSelection","checkboxSelection","isSuppressPaste","suppressPaste","isResizable","setMoving","createColumnEvent","EVENT_MOVING_CHANGED","gridApi","isMoving","getSort","setSort","EVENT_SORT_CHANGED","setMenuVisible","EVENT_MENU_VISIBLE_CHANGED","isMenuVisible","isSortAscending","isSortDescending","isSortNone","isSorting","getSortedAt","setSortedAt","setAggFunc","aggFunc","getAggFunc","getLeft","getOldLeft","oldLeft","getRight","setLeft","EVENT_LEFT_CHANGED","isFilterActive","setFilterActive","additionalEventAttributes","EVENT_FILTER_ACTIVE_CHANGED","filterChangedEvent","EVENT_FILTER_CHANGED","setFirstRightPinned","firstRightPinned","EVENT_FIRST_RIGHT_PINNED_CHANGED","setLastLeftPinned","lastLeftPinned","EVENT_LAST_LEFT_PINNED_CHANGED","isFirstRightPinned","isLastLeftPinned","isPinned","isPinnedLeft","isPinnedRight","getPinned","EVENT_VISIBLE_CHANGED","getColumnGroupShow","columnGroupShow","getColId","getDefinition","getActualWidth","createBaseColDefParams","getColSpan","colSpan","getRowSpan","rowSpan","setActualWidth","EVENT_WIDTH_CHANGED","isGreaterThanMax","getMinWidth","getMaxWidth","setMinimum","setRowGroupActive","rowGroup","EVENT_ROW_GROUP_CHANGED","isRowGroupActive","setPivotActive","pivot","EVENT_PIVOT_CHANGED","isPivotActive","isAnyFunctionActive","isValueActive","isAnyFunctionAllowed","isAllowPivot","isAllowRowGroup","isAllowValue","setValueActive","EVENT_VALUE_CHANGED","enablePivot","enableValue","enableRowGroup","getMenuTabs","menuTabs","isLockPosition","lockPosition","isLockVisible","lockVisible","isLockPinned","lockPinned","ConditionPosition","DEFAULT_TRANSLATIONS","loadingOoo","empty","equals","notEqual","lessThan","greaterThan","inRange","lessThanOrEqual","greaterThanOrEqual","filterOoo","notContains","startsWith","endsWith","searchOoo","selectAll","applyFilter","clearFilter","andCondition","orCondition","SimpleFilter","showValueFrom","doesFilterHaveHiddenInput","EMPTY","showValueTo","IN_RANGE","onFloatingFilterChanged","setValueFromFloatingFilter","setTypeFromFloatingFilter","onUiChanged","eType1","eType2","eJoinOperatorAnd","getModelFromUi","isConditionUiComplete","One","isAllowTwoConditions","Two","filterType","getFilterType","operator","getJoinOperator","condition1","createCondition","condition2","getCondition1Type","getCondition2Type","eJoinOperatorOr","areModelsEqual","aIsSimple","bIsSimple","aSimple","bSimple","areSimpleModelsEqual","aCombined","bCombined","setModelIntoUi","model","combinedModel","orChecked","setConditionIntoUi","simpleModel","optionsFactory","getDefaultOption","doesFilterPass","getModel","firstResult","individualConditionPasses","secondResult","setParams","simpleFilterParams","OptionsFactory","init","getDefaultFilterOptions","allowTwoConditions","suppressAndOrCondition","putOptionsIntoDropdown","addChangedListeners","filterOptions","getFilterOptions","option","createOption","displayKey","localName","eOption","readOnly","disabled","createBodyTemplate","valueTemplate1","createValueTemplate","valueTemplate2","uniqueGroupId","getLocaleTextFunc","optionsTemplate1","updateUiVisibility","firstConditionComplete","showSecondFilter","eCondition2Body","eJoinOperatorPanel","resetUiToDefaults","defaultOption","toTranslate","getCustomOption","addDestroyableEventListener","customFilterOption","hideFilterInput","EQUALS","NOT_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","GREATER_THAN","GREATER_THAN_OR_EQUAL","CONTAINS","NOT_CONTAINS","STARTS_WITH","ENDS_WITH","ProvidedFilter","DragSourceType","VDirection","HDirection","__param","decorator","DragAndDropService","dragSourceAndParamsList","dropTargets","DragAndDropService_1","ePinnedIcon","ePlusIcon","eHiddenIcon","eMoveIcon","eLeftIcon","eRightIcon","eGroupIcon","eAggregateIcon","ePivotIcon","eDropNotAllowedIcon","setBeans","loggerFactory","addDragSource","dragSource","allowTouch","dragStartPixels","onDragStart","onDragStop","onDragging","dragService","removeDragSource","sourceAndParams","nudge","dragging","eventLastTime","dragItem","dragItemCallback","lastDropTarget","dragSourceDropTarget","dragStarted","createGhost","dragStopped","draggingEvent","createDropTargetEvent","removeGhost","fromNudge","hDirection","workOutHDirection","vDirection","workOutVDirection","positionGhost","dropTarget","isMouseOnDropTarget","leaveLastTargetIfExists","enterDragTargetIfExists","dragEnterEvent","onDragEnter","setGhostIcon","getIconName","dragLeaveEvent","onDragLeave","getAllContainersFromDropTarget","containers","getContainer","secondaryContainers","getSecondaryContainers","allContainers","mouseOverTarget","rect","getBoundingClientRect","horizontalFit","verticalFit","top","bottom","isInterestedIn","addDropTarget","Left","Right","Up","Down","ghostHeight","eGhost","browserWidth","browserHeight","pageY","pageX","usrDocument","getDocument","windowScrollY","pageYOffset","scrollTop","windowScrollX","pageXOffset","eGhostParent","GHOST_TEMPLATE","environment","getTheme","eGhostIcon","dragItemName","shake","eIcon","ICON_ADD","ICON_PINNED","ICON_MOVE","ICON_LEFT","ICON_RIGHT","ICON_GROUP","ICON_AGGREGATE","ICON_PIVOT","ICON_NOT_ALLOWED","__spreadArrays","il","jl","isTrue","GridOptionsWrapper","propertyEventService","domDataKey","layoutElements","GridOptionsWrapper_1","agWire","gridOptions","checkForDeprecated","checkForViolations","suppressPropertyNamesCheck","checkGridOptionsProperties","checkColumnDefProperties","async","useAsyncEvents","addGlobalListener","globalEventHandler","isGroupSelectsChildren","isSuppressParentsInRowNodes","isRowSelectionMulti","isRowModelServerSide","isGroupRemoveSingleChildren","isGroupHideOpenParents","isEnableRangeSelection","assertRegistered","RangeSelectionModule","isEnableRangeHandle","isEnableFillHandle","PROP_DOM_LAYOUT","updateLayoutClasses","columnDefs","userProperties","validProperties","ColDefUtil","ALL_PROPERTIES","FRAMEWORK_PROPERTIES","checkProperties","PropertyKeys","Events","ComponentUtil","getCallbackForEvent","validPropertiesAndExceptions","containerName","docsUrl","invalidProperties","domData","setDomData","isRowSelection","rowSelection","isRowDeselection","rowDeselection","isRowMultiSelectWithClick","rowMultiSelectWithClick","isPivotMode","pivotMode","isPivotTotals","pivotTotals","getPivotColumnGroupTotals","pivotColumnGroupTotals","getPivotRowTotals","pivotRowTotals","isRowModelInfinite","rowModelType","isRowModelViewport","isRowModelDefault","isFullRowEdit","editType","isSuppressFocusAfterRefresh","suppressFocusAfterRefresh","isSuppressBrowserResizeObserver","suppressBrowserResizeObserver","isSuppressMaintainUnsortedOrder","suppressMaintainUnsortedOrder","isSuppressClearOnFillReduction","suppressClearOnFillReduction","isShowToolPanel","sideBar","getSideBar","toolPanels","isSuppressTouch","suppressTouch","isSuppressRowTransform","suppressRowTransform","isSuppressSetColumnStateEvents","suppressSetColumnStateEvents","isAllowDragFromColumnsToolPanel","allowDragFromColumnsToolPanel","suppressAsyncEvents","isEnableCellChangeFlash","enableCellChangeFlash","groupSelectsChildren","isSuppressRowHoverHighlight","suppressRowHoverHighlight","isGroupSelectsFiltered","groupSelectsFiltered","groupHideOpenParents","isGroupMultiAutoColumn","groupMultiAutoColumn","groupRemoveSingleChildren","isGroupRemoveLowestSingleChildren","groupRemoveLowestSingleChildren","isGroupIncludeFooter","groupIncludeFooter","isGroupIncludeTotalFooter","groupIncludeTotalFooter","isGroupSuppressBlankHeader","groupSuppressBlankHeader","isSuppressRowClickSelection","suppressRowClickSelection","isSuppressCellSelection","suppressCellSelection","isSuppressMultiSort","suppressMultiSort","isMultiSortKeyCtrl","multiSortKey","isGroupSuppressAutoColumn","groupSuppressAutoColumn","isSuppressDragLeaveHidesColumns","suppressDragLeaveHidesColumns","isSuppressScrollOnNewData","suppressScrollOnNewData","isRowDragManaged","rowDragManaged","isSuppressRowDrag","suppressRowDrag","getDomLayout","domLayout","isSuppressHorizontalScroll","suppressHorizontalScroll","isSuppressMaxRenderedRowRestriction","suppressMaxRenderedRowRestriction","isExcludeChildrenWhenTreeDataFiltering","excludeChildrenWhenTreeDataFiltering","isAlwaysShowVerticalScroll","alwaysShowVerticalScroll","isSuppressLoadingOverlay","suppressLoadingOverlay","isSuppressNoRowsOverlay","suppressNoRowsOverlay","suppressFieldDotNotation","getPinnedTopRowData","pinnedTopRowData","getPinnedBottomRowData","pinnedBottomRowData","isFunctionsPassive","functionsPassive","isSuppressTabbing","suppressTabbing","isSuppressChangeDetection","suppressChangeDetection","isSuppressAnimationFrame","suppressAnimationFrame","getQuickFilterText","quickFilterText","isCacheQuickFilter","cacheQuickFilter","isUnSortIcon","unSortIcon","isSuppressMenuHide","suppressMenuHide","isEnterMovesDownAfterEdit","enterMovesDownAfterEdit","isEnterMovesDown","enterMovesDown","getRowStyle","rowStyle","getRowClass","rowClass","getRowStyleFunc","getRowClassFunc","rowClassRules","getCreateChartContainerFunc","createChartContainer","getPopupParent","popupParent","getBlockLoadDebounceMillis","blockLoadDebounceMillis","getPostProcessPopupFunc","postProcessPopup","getDoesDataFlowerFunc","doesDataFlower","getPaginationNumberFormatterFunc","paginationNumberFormatter","getChildCountFunc","getChildCount","getDefaultGroupSortComparator","defaultGroupSortComparator","getIsFullWidthCellFunc","isFullWidthCell","getFullWidthCellRendererParams","fullWidthCellRendererParams","isEmbedFullWidthRows","embedFullWidthRows","deprecatedEmbedFullWidthRows","getBusinessKeyForNodeFunc","getBusinessKeyForNode","isDeltaRowDataMode","deltaRowDataMode","isDeltaColumnMode","deltaColumnMode","isEnsureDomOrder","isEnableCharts","enableCharts","GridChartsModule","getColResizeDefault","colResizeDefault","isSingleClickEdit","singleClickEdit","isSuppressClickEdit","suppressClickEdit","isStopEditingWhenGridLosesFocus","stopEditingWhenGridLosesFocus","getGroupDefaultExpanded","groupDefaultExpanded","getMaxConcurrentDatasourceRequests","maxConcurrentDatasourceRequests","getMaxBlocksInCache","maxBlocksInCache","getCacheOverflowSize","cacheOverflowSize","getPaginationPageSize","paginationPageSize","isPaginateChildRows","isGroupSuppressRow","paginateChildRows","getCacheBlockSize","cacheBlockSize","getInfiniteInitialRowCount","infiniteInitialRowCount","isPurgeClosedRowNodes","purgeClosedRowNodes","isSuppressPaginationPanel","suppressPaginationPanel","getRowData","rowData","isGroupUseEntireRow","groupUseEntireRow","isEnableRtl","enableRtl","getAutoGroupColumnDef","autoGroupColumnDef","groupSuppressRow","getRowGroupPanelShow","rowGroupPanelShow","getPivotPanelShow","pivotPanelShow","isAngularCompileRows","angularCompileRows","isAngularCompileFilters","angularCompileFilters","isAngularCompileHeaders","angularCompileHeaders","isDebug","debug","getColumnDefs","getColumnTypes","columnTypes","getDatasource","datasource","getViewportDatasource","viewportDatasource","getServerSideDatasource","serverSideDatasource","isAccentedSort","accentedSort","isEnableBrowserTooltips","enableBrowserTooltips","isEnableCellExpressions","enableCellExpressions","enableGroupEdit","isSuppressMiddleClickScrolls","suppressMiddleClickScrolls","isPreventDefaultOnContextMenu","preventDefaultOnContextMenu","isSuppressPreventDefaultOnMouseWheel","suppressPreventDefaultOnMouseWheel","isSuppressColumnVirtualisation","suppressColumnVirtualisation","isSuppressContextMenu","suppressContextMenu","isAllowContextMenuWithControlKey","allowContextMenuWithControlKey","isSuppressCopyRowsToClipboard","suppressCopyRowsToClipboard","isCopyHeadersToClipboard","copyHeadersToClipboard","isSuppressClipboardPaste","suppressClipboardPaste","isPagination","pagination","isSuppressEnterpriseResetOnNewColumns","suppressEnterpriseResetOnNewColumns","getProcessDataFromClipboardFunc","processDataFromClipboard","getBatchUpdateWaitMillis","batchUpdateWaitMillis","isSuppressMovableColumns","suppressMovableColumns","isAnimateRows","animateRows","isSuppressColumnMoveAnimation","suppressColumnMoveAnimation","isSuppressAggFuncInHeader","suppressAggFuncInHeader","isSuppressAggAtRootLevel","suppressAggAtRootLevel","enableRangeSelection","enableRangeHandle","enableFillHandle","getFillOperation","fillOperation","isSuppressMultiRangeSelection","suppressMultiRangeSelection","isPaginationAutoPageSize","paginationAutoPageSize","isRememberGroupStateWhenNewData","rememberGroupStateWhenNewData","getAggFuncs","aggFuncs","getSortingOrder","sortingOrder","getAlignedGrids","alignedGrids","isMasterDetail","masterDetail","MasterDetailModule","isKeepDetailRows","keepDetailRows","getKeepDetailRowsCount","keepDetailRowsCount","getIsRowMasterFunc","isRowMaster","getIsRowSelectableFunc","isRowSelectable","getGroupRowRendererParams","groupRowRendererParams","getOverlayLoadingTemplate","overlayLoadingTemplate","getOverlayNoRowsTemplate","overlayNoRowsTemplate","isSuppressAutoSize","suppressAutoSize","isEnableCellTextSelection","enableCellTextSelection","suppressParentsInRowNodes","isFunctionsReadOnly","functionsReadOnly","isFloatingFilter","floatingFilter","isEnableCellTextSelect","isEnableOldSetFilterModel","enableOldSetFilterModel","getDefaultColDef","defaultColDef","getDefaultColGroupDef","defaultColGroupDef","getDefaultExportParams","defaultExportParams","isSuppressCsvExport","suppressCsvExport","isAllowShowChangeAfterFilter","allowShowChangeAfterFilter","isSuppressExcelExport","suppressExcelExport","isSuppressMakeColumnVisibleAfterUnGroup","suppressMakeColumnVisibleAfterUnGroup","getNodeChildDetailsFunc","getNodeChildDetails","getDataPathFunc","getDataPath","getIsServerSideGroupFunc","isServerSideGroup","getServerSideGroupKeyFunc","getServerSideGroupKey","getGroupRowAggNodesFunc","groupRowAggNodes","getContextMenuItemsFunc","getContextMenuItems","getMainMenuItemsFunc","getMainMenuItems","getChartToolbarItemsFunc","getChartToolbarItems","getRowNodeIdFunc","getRowNodeId","getNavigateToNextCellFunc","navigateToNextCell","getTabToNextCellFunc","tabToNextCell","treeData","isValueCache","valueCache","isValueCacheNeverExpires","valueCacheNeverExpires","isDeltaSort","deltaSort","isAggregateOnlyChangedColumns","aggregateOnlyChangedColumns","getProcessSecondaryColDefFunc","processSecondaryColDef","getProcessSecondaryColGroupDefFunc","processSecondaryColGroupDef","getSendToClipboardFunc","sendToClipboard","getProcessRowPostCreateFunc","processRowPostCreate","getProcessCellForClipboardFunc","processCellForClipboard","getProcessHeaderForClipboardFunc","processHeaderForClipboard","getProcessCellFromClipboardFunc","processCellFromClipboard","getViewportRowModelPageSize","viewportRowModelPageSize","getViewportRowModelBufferSize","viewportRowModelBufferSize","isServerSideSortingAlwaysResets","serverSideSortingAlwaysResets","getPostSortFunc","postSort","getProcessChartOptionsFunc","processChartOptions","getClipboardDeliminator","clipboardDeliminator","gridOptionsNoType","previousValue","currentValue","addLayoutElement","domLayoutAutoHeight","domLayoutPrint","domLayoutNormal","checkEventDeprecation","getAutoSizePadding","autoSizePadding","getHeaderHeight","headerHeight","specialForNewMaterial","getFloatingFiltersHeight","floatingFiltersHeight","getGroupHeaderHeight","groupHeaderHeight","getPivotHeaderHeight","pivotHeaderHeight","getPivotGroupHeaderHeight","pivotGroupHeaderHeight","isExternalFilterPresent","doesExternalFilterPass","MIN_COL_WIDTH","getColWidth","colWidth","getRowBuffer","rowBuffer","getRowBufferInPixels","getRowHeightAsNumber","useGridOptions","scrollbarWidth","suppressUnSort","suppressDescSort","groupAggFields","groupHidePivotColumns","groupKeys","onRowDeselected","rowDeselected","rowsAlreadyGrouped","groupAggFunction","paginationInitialRowCount","infinitePageSize","infiniteBlockSize","maxPagesInCache","paginationOverflowSize","suppressMenuFilterPanel","suppressMenuMainPanel","suppressMenuColumnPanel","suppressUseColIdForGroups","groupColumnDef","slaveGrids","floatingTopRowData","floatingBottomRowData","paginationStartPage","getHeaderCellTemplate","layoutInterval","gridAutoHeight","showToolPanel","oldToolPanelProperties","toolPanelSuppressRowGroups","toolPanelSuppressValues","toolPanelSuppressPivots","toolPanelSuppressPivotMode","toolPanelSuppressColumnFilter","toolPanelSuppressColumnSelectAll","toolPanelSuppressSideButtons","toolPanelSuppressColumnExpandAll","contractColumnSelection","toolPanelColumnsCompProps","SideBarDefParser","sideBarDef","columnsDef","it","componentParams","enableStatusBar","statusBar","alwaysShowStatusBar","enableServerSideSorting","enableSorting","enableFilter","enableServerSideFilter","enableColResize","treeDataViolations","localeTextFunc","that","localeText","callbackMethodName","rowHeight","getDefaultRowHeight","getRowHeightForNode","allowEstimate","getRowHeight","estimated","detailRowHeight","defaultRowHeight","minRowHeight","columnController","isAutoRowHeightActive","autoHeight","autoHeightCalculator","getPreferredHeightForRow","isDynamicRowHeight","getVirtualItemHeight","sassVariableName","getSassVariable","PROP_HEADER_HEIGHT","PROP_GROUP_REMOVE_SINGLE_CHILDREN","PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN","PROP_PIVOT_HEADER_HEIGHT","PROP_SUPPRESS_CLIPBOARD_PASTE","PROP_GROUP_HEADER_HEIGHT","PROP_PIVOT_GROUP_HEADER_HEIGHT","PROP_FLOATING_FILTERS_HEIGHT","PROP_SUPPRESS_ROW_DRAG","PROP_POPUP_PARENT","register","modulesMap","moduleName","reason","warningKey","warningMessage","getRegisteredModules","apolloContext","getApolloContext","DocumentType","ApolloProvider","ApolloContext","ApolloConsumer","cache","operationName","parser","cached","queries","mutations","subscriptions","LicenseManager","watermarkMessage","LicenseManager_1","validateLicense","licenseKey","outputMissingLicenseKey","extractLicenseComponents","md5","license","version","isTrial","validateLicenseKeyForVersion","validateLegacyKey","outputInvalidLicenseKey","extractExpiry","restrictionHashed","decode","hashStart","extractBracketedInformation","getLicenseDetails","valid","expiry","formatDate","isDisplayWatermark","getWatermarkMessage","monthIndex","getGridReleaseDate","RELEASE_INFORMATION","keystr","utf8_decode","setLicenseKey","matches","validateForTrial","gridReleaseDate","formattedExpiryDate","formattedReleaseDate","outputIncompatibleVersion","now","outputExpiredTrialKey","MD5","ieCompatibility","md5cycle","ff","gg","hh","ii","add32","cmn","md51","md5blk","tail","md5blks","rhex","hex_chr","add32Compat","add32Std","lsw","WatermarkComp","postConstruct","show","shouldDisplayWatermark","eLicenseTextRef","innerText","licenseManager","isWhiteListURL","hostname","EnterpriseCoreModule","beans","agStackComponents","createEventEmitter","handlers","on","handler","off","changedBits","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","gud","emitter","_inheritsLoose","getChildContext","componentWillReceiveProps","nextProps","childContextTypes","_Component2","getValue","onUpdate","observedBits","_proto2","componentDidMount","componentWillUnmount","contextTypes","createNamedContext","Router","computeRootMatch","url","isExact","pathname","_pendingLocation","unlisten","staticContext","Lifecycle","onMount","componentDidUpdate","onUnmount","Prompt","when","cacheCount","generatePath","pathToRegexp","compilePath","pretty","Redirect","computedMatch","prevLocation","locationsAreEqual","sensitive","pathCache","regexp","Route","addLeadingSlash","stripBasename","basename","base","createURL","createPath","staticHandler","noop","Switch","useHistory","useParams","RowNode","childrenMapped","selectable","OBJECT_ID_SEQUENCE","alreadyRendered","selected","setData","oldData","onDataChanged","updateDataOnDetailNode","checkRowSelectable","createDataChangedEvent","dispatchLocalEvent","detailNode","newData","EVENT_DATA_CHANGED","createLocalRowEvent","updateData","getRowIndexString","rowPinned","rowIndex","createDaemonNode","oldNode","daemon","level","setDataAndId","setId","selectionController","syncInRowNode","isRowSelectableFunc","shouldInvokeIsRowSelectable","setRowSelectable","newVal","EVENT_SELECTABLE_CHANGED","isPixelInRange","pixel","rowTop","clearRowTop","oldRowTop","setRowTop","setFirstChild","EVENT_FIRST_CHILD_CHANGED","setLastChild","EVENT_LAST_CHILD_CHANGED","setChildIndex","childIndex","EVENT_CHILD_INDEX_CHANGED","EVENT_TOP_CHANGED","setDragging","EVENT_DRAGGING_CHANGED","setAllChildrenCount","allChildrenCount","EVENT_ALL_CHILDREN_COUNT_CHANGED","setRowHeight","rowHeightEstimated","EVENT_HEIGHT_CHANGED","setRowIndex","EVENT_ROW_INDEX_CHANGED","setUiLevel","uiLevel","EVENT_UI_LEVEL_CHANGED","setExpanded","expanded","EVENT_EXPANDED_CHANGED","createGlobalRowEvent","EVENT_ROW_GROUP_OPENED","mainEventService","redrawRows","setDataValue","colKey","getPrimaryColumn","valueService","setValue","dispatchCellChangedEvent","setGroupValue","getGridColumn","groupData","setAggData","newAggData","colIds","aggData","isEmptyRowGroupNode","cellChangedEvent","EVENT_CELL_CHANGED","resetQuickFilterAggregateText","quickFilterAggregateText","isExpandable","master","isSelected","footer","depthFirstSearch","calculateSelectedFromChildren","newSelectedValue","atLeastOneSelected","atLeastOneDeSelected","atLeastOneMixed","selectThisNode","setSelectedInitialValue","setSelected","clearSelection","suppressFinishActions","setSelectedParams","rangeSelect","isRowPinned","newRowClicked","getLastSelectedNode","allowMultiSelect","doRowRangeSelection","updatedCount","selectChildNodes","clearOtherNodes","updateGroupsFromChildrenSelections","EVENT_SELECTION_CHANGED","setLastSelectedNode","groupsSelectChildren","lastSelectedNode","rowModel","getNodesInRangeForSelection","isParentOfNode","potentialParent","EVENT_ROW_SELECTED","childrenAfterFilter","onMouseEnter","EVENT_MOUSE_ENTER","onMouseLeave","EVENT_MOUSE_LEAVE","getFirstChildOfFirstChild","rowGroupColumn","nodeToSwapIn","currentRowNode","isCandidate","foundFirstChildPath","parentRowNode","isFullWidthCellFunc","__esModule","sourceKeys","arrayWithHoles","nonIterableRest","clone","typeOf","instanceClone","cloneObjectDeep","cloneArrayDeep","destroyFunctions","isAlive","getFrameworkOverrides","EVENT_DESTROYED","localEventService","dispatchEventAsync","Window","destroyFunc","_getPrototypeOf","OriginalColumnGroup","colGroupDef","groupId","padding","expandable","openByDefault","getLevel","isPadding","isExpanded","getGroupId","setChildren","getChildren","getColGroupDef","getLeafColumns","addLeafColumns","leafColumns","ColumnGroup","HEADER_GROUP_PADDING","setupExpandable","setExpandable","col","onColumnVisibilityChanged","atLeastOneShowingWhenOpen","atLeastOneShowingWhenClosed","atLeastOneChangeable","findChildren","abstractColumn","headerGroupShow","HEADER_GROUP_SHOW_OPEN","HEADER_GROUP_SHOW_CLOSED","EVENT_EXPANDABLE_CHANGED","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","_setPrototypeOf","_interopRequireDefault","_react","_SvgIcon","_extends2","originalColumnGroup","instanceId","displayedChildren","createUniqueId","allLeafColumns","getOriginalColumnGroup","allMoving","checkLeft","lastChildLeft","firstChildLeft","createAgEvent","getInstanceId","isChildInThisGroupDeepSearch","wantedChild","foundChild","groupActualWidth","groupChild","addChild","getDisplayedChildren","getDisplayedLeafColumns","addDisplayedLeafColumns","calculateDisplayedColumns","topLevelGroup","EVENT_DISPLAYED_CHILDREN_CHANGED","useTheme","useThemeWithoutDefault","EVENT_COLUMN_EVERYTHING_CHANGED","EVENT_NEW_COLUMNS_LOADED","EVENT_COLUMN_PIVOT_MODE_CHANGED","EVENT_COLUMN_ROW_GROUP_CHANGED","EVENT_EXPAND_COLLAPSE_ALL","EVENT_COLUMN_PIVOT_CHANGED","EVENT_GRID_COLUMNS_CHANGED","EVENT_COLUMN_VALUE_CHANGED","EVENT_COLUMN_MOVED","EVENT_COLUMN_VISIBLE","EVENT_COLUMN_PINNED","EVENT_COLUMN_GROUP_OPENED","EVENT_COLUMN_RESIZED","EVENT_DISPLAYED_COLUMNS_CHANGED","EVENT_VIRTUAL_COLUMNS_CHANGED","EVENT_ROW_DATA_CHANGED","EVENT_ROW_DATA_UPDATED","EVENT_PINNED_ROW_DATA_CHANGED","EVENT_RANGE_SELECTION_CHANGED","EVENT_CHART_RANGE_SELECTION_CHANGED","EVENT_CHART_OPTIONS_CHANGED","EVENT_TOOL_PANEL_VISIBLE_CHANGED","EVENT_MODEL_UPDATED","EVENT_PASTE_START","EVENT_PASTE_END","EVENT_CELL_CLICKED","EVENT_CELL_DOUBLE_CLICKED","EVENT_CELL_MOUSE_DOWN","EVENT_CELL_CONTEXT_MENU","EVENT_CELL_VALUE_CHANGED","EVENT_ROW_VALUE_CHANGED","EVENT_CELL_FOCUSED","EVENT_CELL_KEY_DOWN","EVENT_CELL_KEY_PRESS","EVENT_CELL_MOUSE_OVER","EVENT_CELL_MOUSE_OUT","EVENT_FILTER_MODIFIED","EVENT_FILTER_OPENED","EVENT_VIRTUAL_ROW_REMOVED","EVENT_ROW_CLICKED","EVENT_ROW_DOUBLE_CLICKED","EVENT_GRID_READY","EVENT_GRID_SIZE_CHANGED","EVENT_VIEWPORT_CHANGED","EVENT_FIRST_DATA_RENDERED","EVENT_DRAG_STARTED","EVENT_DRAG_STOPPED","EVENT_ROW_EDITING_STARTED","EVENT_ROW_EDITING_STOPPED","EVENT_CELL_EDITING_STARTED","EVENT_CELL_EDITING_STOPPED","EVENT_BODY_SCROLL","EVENT_ANIMATION_QUEUE_EMPTY","EVENT_HEIGHT_SCALE_CHANGED","EVENT_PAGINATION_CHANGED","EVENT_COMPONENT_STATE_CHANGED","EVENT_BODY_HEIGHT_CHANGED","EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED","EVENT_SCROLL_VISIBILITY_CHANGED","EVENT_COLUMN_HOVER_CHANGED","EVENT_FLASH_CELLS","EVENT_ROW_DRAG_ENTER","EVENT_ROW_DRAG_MOVE","EVENT_ROW_DRAG_LEAVE","EVENT_ROW_DRAG_END","EVENT_POPUP_TO_FRONT","EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST","EVENT_COLUMN_PIVOT_CHANGE_REQUEST","EVENT_COLUMN_VALUE_CHANGE_REQUEST","EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST","ownerDocument","_createForOfIteratorHelper","F","normalCompletion","didErr","_e2","previousComparisons","equal","aTag","bTag","previouslyCompared","aKeys","bKeys","keyCount","aIterator","entries","isMap","aKey","aValue","bSet","Set","_typeof2","merge","allSyncListeners","allAsyncListeners","globalSyncListeners","globalAsyncListeners","asyncFunctionsQueue","scheduled","firedEvents","EventService_1","globalEventListener","getListenerList","listenerMap","listenerList","addModalPriorityEventListener","PRIORITY","removeGlobalListener","dispatchToListeners","dispatchEventOnce","globalListeners","p1ListenerList","dispatchAsync","flushAsyncQueue","queueCopy","ScalerFilter","scalarFilterParams","checkDeprecatedParams","nullComparator","includeBlanksInEquals","includeBlanksInLessThan","includeBlanksInGreaterThan","selectedOption","filterValue","gridValue","nullValue","canNullsPassFilter","actualComparator","filterModel","cellValue","valueGetter","range","mapRangeFromModel","filterValueTo","compareResult","compareToResult","inRangeInclusive","DEFAULT_NULL_COMPARATOR","Observable","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultWidth","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","buildMatchFn","dirtyString","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","pattern","findKey","valueCallback","AgAbstractField","onValueChange","callbackFn","EVENT_CHANGED","getWidth","setWidth","silent","AgAbstractLabel","NOT_SET","SetRef","OwnerID","ensureSize","__iterate","returnTrue","wrapIndex","uint32Index","wholeSlice","begin","isNeg","resolveBegin","resolveIndex","resolveEnd","defaultIndex","Infinity","isCollection","maybeCollection","isKeyed","maybeKeyed","isIndexed","maybeIndexed","isAssociative","maybeAssociative","Collection","Seq","KeyedCollection","KeyedSeq","IndexedCollection","IndexedSeq","SetCollection","SetSeq","Keyed","Indexed","isSeq","maybeSeq","isRecord","maybeRecord","isImmutable","maybeImmutable","IS_ORDERED_SYMBOL","isOrdered","maybeOrdered","REAL_ITERATOR_SYMBOL","ITERATOR_SYMBOL","Iterator","iteratorValue","iteratorResult","iteratorDone","hasIterator","maybeIterable","getIteratorFn","isIterator","maybeIterator","getIterator","iterable","iteratorFn","KEYS","VALUES","ENTRIES","inspect","toSource","isArrayLike","isInteger","Collection$$1","emptySequence","toSeq","seq","maybeIndexedSeqFromValue","ObjectSeq","seqFromValue","__toString","cacheResult","_cache","__iterateUncached","entrySeq","toArray","entry","__iterator","__iteratorUncached","toKeyedSeq","fromEntrySeq","keyedSeqFromValue","toIndexedSeq","indexedSeqFromValue","of","toSetSeq","ArraySeq","_array","notSetValue","_object","_keys","EMPTY_SEQ","CollectionSeq","_collection","iterations","maybeMap","isOrderedMap","maybeOrderedMap","isValueObject","maybeValue","hashCode","valueOf","imul","smi","i32","defaultValueOf","hash","hashNumber","STRING_HASH_CACHE_MIN_STRLEN","hashed","stringHashCache","hashString","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","cachedHashString","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","uniqueID","getIENodeHash","objHashUID","hashJSObj","ToKeyedSequence","KeyedSeq$$1","indexed","useKeys","_iter","_useKeys","valueSeq","this$1","reversedSequence","reverseFactory","mapper","mappedSequence","mapFactory","ToIndexedSequence","IndexedSeq$$1","ToSetSequence","SetSeq$$1","FromEntriesSequence","validateEntry","indexedCollection","flipFactory","flipSequence","makeSequence","flip","cacheResultThrough","filterFactory","filterSequence","sliceFactory","originalSize","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","skipped","isSkipping","skipWhileFactory","skipSequence","skipping","concatFactory","isKeyedCollection","iters","singleton","concatSeq","sum","flattenFactory","depth","flatSequence","stopped","flatDeep","currentDepth","sortFactory","maxFactory","maxCompare","comp","zipWithFactory","keyIter","zipper","zipAll","zipSequence","sizes","iterators","isDone","steps","reify","collectionClass","arrCopy","newArr","assertNotInfinite","coerceKeyPath","keyPath","isPlainObj","isDataStructure","quoteString","_ignoreError","shallowCopy","collectionCopy","updateIn","updater","updatedValue","updateInDeeply","inImmutable","existing","wasNotSet","existingValue","nextExisting","nextUpdated","emptyMap","setIn","setIn$1","removeIn","deleteIn","update$1","updateIn$1","mergeIntoKeyedWith","mergeWith","merger","collections","collection$1","__ownerID","withMutations","mergeIntoCollection","oldVal","mergeDeepWithSources","mergeWithSources","deepMerger","deepMergerWith","merged","mergeItem","hasVal","nextVal","mergeDeep$1","mergeDeepWith$1","mergeIn","mergeDeepIn","mutable","asMutable","wasAltered","__ensureOwner","asImmutable","__altered","KeyedCollection$$1","keyValues","_root","updateMap","deleteAll","__hash","OrderedMap","sortBy","MapIterator","iterate","ownerID","makeMap","MapPrototype","removeAll","mergeDeepWith","ArrayMapNode","keyHash","didChangeSize","didAlter","removed","MAX_ARRAY_MAP_SIZE","ValueNode","createNodes","isEditable","newEntries","BitmapIndexedNode","bitmap","bit","SIZE","popCount","keyHashFrag","newNode","updateNode","MAX_BITMAP_INDEXED_SIZE","including","expandedNodes","HashArrayMapNode","expandNodes","isLeafNode","newBitmap","newNodes","setAt","canEdit","newLen","newArray","after","spliceOut","spliceIn","newCount","MIN_HASH_ARRAY_MAP_SIZE","excluding","packedII","packedNodes","packNodes","HashCollisionNode","mergeIntoNode","keyMatch","maxIndex","EMPTY_MAP","Iterator$$1","_type","_reverse","_stack","mapIteratorFrame","mapIteratorValue","subNode","__prev","root","hash$$1","newRoot","newSize","idx1","idx2","isList","maybeList","List","IndexedCollection$$1","emptyList","makeList","VNode","setSize","listNodeFor","_origin","setListBounds","newTail","_tail","getTailOffset","_capacity","updateVNode","_level","updateList","insert","oldSize","unshift","arguments$1","seqs","iterateList","DONE","ListPrototype","removeBefore","originIndex","removingFirst","oldChild","editableVNode","removeAfter","sizeIndex","EMPTY_LIST","tailPos","iterateNodeOrLeaf","iterateLeaf","iterateNode","origin","capacity","nodeHas","lowerNode","newLowerNode","rawIndex","owner","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","EMPTY_ORDERED_MAP","Map$$1","emptyOrderedMap","_map","_list","updateOrderedMap","newMap","newList","makeOrderedMap","omap","toMap","isStack","maybeStack","Stack","emptyStack","head","_head","makeStack","EMPTY_STACK","StackPrototype","unshiftAll","isSet","maybeSet","isOrderedSet","maybeOrderedSet","deepEqual","notAssociative","flipped","allEqual","bSize","mixin","ctor","keyCopier","toJS","result$1","SetCollection$$1","emptySet","fromKeys","keySeq","intersect","sets","SetPrototype","updateSet","removes","adds","mapped","subtract","OrderedSet","__make","__empty","EMPTY_SET","makeSet","EMPTY_RANGE","Range","_start","_end","searchValue","possibleIndex","offsetValue","other","getIn","searchKeyPath","getIn$1","hasIn","toObject","isIterable","useTuples","toOrderedMap","toOrderedSet","toSet","toStack","toList","__toStringMapper","returnValue","findEntry","sideEffect","joined","isFirst","initialReduction","reduceRight","not","butLast","countBy","grouper","groups","countByFactory","entriesSequence","entryMapper","filterNot","findLast","findLastEntry","findLastKey","flatMap","coerce","flatMapFactory","searchKey","groupBy","isKeyedIter","groupByFactory","isSubset","isSuperset","keyOf","keyMapper","lastKeyOf","maxBy","neg","defaultNegComparator","minBy","amount","skipLast","skipWhile","skipUntil","take","takeLast","takeWhile","takeSequence","iterating","takeWhileFactory","takeUntil","ordered","keyed","murmurHashOfSize","hashMerge","hashCollection","CollectionPrototype","toJSON","mapEntries","mapKeys","KeyedCollectionPrototype","removeNum","numArgs","spliced","findLastIndex","interpose","interposedSequence","interposeFactory","interleave","zipped","interleaved","zip","defaultZipper","zipWith","IndexedCollectionPrototype","reduction","useFirst","Set$$1","emptyOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","Record","hasInitialized","RecordType","indices","RecordTypePrototype","_indices","_name","_defaultValues","recordName","setProp","_values","RecordPrototype","recordSeq","newValues","makeRecord","getDescriptiveName","likeRecord","record","fromJS","converter","fromJSWith","parentValue","converted","defaultConverter","easing","easeInOut","easeOut","easeIn","sharp","shortest","shorter","short","standard","complex","enteringScreen","leavingScreen","formatMs","_options$duration","durationOption","_options$easing","easingOption","_options$delay","delay","animatedProp","getAutoHeightDuration","TouchListener","preventMouseClick","destroyFuncs","touching","startListener","onTouchStart","moveListener","onTouchMove","endListener","onTouchEnd","getActiveTouch","touchList","identifier","touchStart","touchEvent","touches","moved","touchStartCopy","touchesMatch","EVENT_LONG_TAP","touch","event_2","EVENT_TAP","checkForDoubleTap","preventDefault","lastTapTime","DOUBLE_TAP_MILLIS","event_3","EVENT_DOUBLE_TAP","useEnhancedEffect","useEventCallback","buildFormatLongFn","formats","useFormControl","FormControlContext","isBrowser","reflow","getTransitionProps","_props$style","transitionDuration","mode","transitionDelay","QueryDocumentKeys","Name","Document","VariableDefinition","InlineFragment","IntValue","FloatValue","StringValue","BooleanValue","NullValue","EnumValue","ListValue","ObjectValue","ObjectField","NamedType","ListType","NonNullType","SchemaDefinition","OperationTypeDefinition","ScalarTypeDefinition","ObjectTypeDefinition","FieldDefinition","InputValueDefinition","InterfaceTypeDefinition","UnionTypeDefinition","EnumTypeDefinition","EnumValueDefinition","InputObjectTypeDefinition","DirectiveDefinition","SchemaExtension","ScalarTypeExtension","ObjectTypeExtension","InterfaceTypeExtension","UnionTypeExtension","EnumTypeExtension","InputObjectTypeExtension","BREAK","visit","visitor","visitorKeys","inArray","edits","ancestors","isLeaving","isEdited","_i2","_Object$keys2","editOffset","editKey","editValue","visitFn","getVisitFn","maybeNode","kindVisitor","kindSpecificVisitor","leave","specificVisitor","specificKindVisitor","later","debounced","flush","startOfDay","setHours","link","isTerminating","request","fromError","errorValue","createOperation","starting","getKey","passthrough","forward","toLink","ApolloLink","links","leftLink","rightLink","second","firstLink","nextLink","transformedOperation","extensions","transformOperation","OPERATION_FIELDS","validateOperation","PopupComponent","isPopup","container","parentComp","formControlState","states","muiFormControl","ReactIs","REACT_STATICS","contextType","defaultProps","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","isMemo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","isAbsolute","spliceOne","resolvePathname","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","part","valueEqual","bValue","stripLeadingSlash","hasBasename","stripTrailingSlash","hashIndex","searchIndex","parsePath","decodeURI","URIError","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","notifyListeners","canUseDOM","getConfirmation","confirm","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","ua","supportsHistory","needsHashChangeListener","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","allKeys","fromIndex","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","allPaths","baseTag","pushHashPath","nextPaths","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextIndex","nextEntries","canGo","RowDragComp","checkCompatibility","ManagedVisibilityStrategy","NonManagedVisibilityStrategy","managed","RowDrag","dragAndDropService","VisibilityStrategy","setDisplayedOrVisible","neverDisplayed","shown","onSuppressRowDrag","workOutVisibility","onSortChanged","onFilterChanged","onRowGroupChanged","updateSortActive","updateFilterActive","updateRowGroupActive","rowGroups","getRowGroupColumns","sortModel","sortController","getSortModel","sortActive","filterManager","isAnyFilterPresent","sortOrFilterOrGroupActive","DndSourceComp","eCell","checkVisibility","dragEvent","providedOnRowDrag","dndSourceOnRowDrag","dataTransfer","setDragImage","jsonData","defaultOnRowDrag","CellComp","scope","rowComp","autoHeightCell","printLayout","editingCell","suppressRefreshCell","cellEditorVersion","cellRendererVersion","createGridCellVo","rangeSelectionEnabled","rangeController","cellFocused","focusedCellController","isCellFocused","cellPosition","rangeCount","getCellRangeCount","hasChartRange","getCellRanges","getValueAndFormat","setUsingWrapper","chooseCellRenderer","setupColSpan","getCreateTemplate","unselectable","templateParts","getCellWidth","modifyLeftForPrintLayout","getCellLeft","valueToRender","getInitialValueToRender","valueSanitised","getToolTip","tooltipSanitised","colIdSanitised","wrapperStartTemplate","wrapperEndTemplate","stylesFromColDef","preProcessStylesFromColDef","getInitialCssClasses","stylesForRowSpanning","getStylesForRowSpanning","usingWrapper","afterAttached","eParentRow","addDomData","populateTemplate","createCellRendererInstance","angular1Compile","shouldHaveSelectionHandle","addSelectionHandle","tooltipManager","registerTooltip","onColumnHover","isHovered","columnHoverService","onCellChanged","refreshCell","colsSpanning","onFlashCells","cellId","cellPositionUtils","createId","cells","animateCell","getComponentHolder","onDisplayColumnsChanged","onWidthChanged","getColSpanningList","getDisplayedColAfter","onLeftChanged","preProcessClassesFromColDef","preProcessCellClassRules","getInitialRangeClasses","usingCellRenderer","cellRendererGui","templateUrl","templateService","getTemplate","getValueToUse","getRenderedRow","getCellRenderer","getCellEditor","suppressFlash","suppressCellFlash","valuesDifferent","valuesAreEqual","attemptCellRendererRefresh","replaceContentsAfterRefresh","processingFilterChange","isSuppressFlashingCellsBecauseFiltering","flashCell","postProcessStylesFromColDef","postProcessClassesFromColDef","updateAngular1ScopeAndCompile","refreshToolTip","postProcessCellClassRules","cssName","fullName","animationFullName","eParentOfValue","putDataIntoCellAfterRefresh","childElementCount","compiledElement_1","$compile","processStylesFromColDef","cellStyle","cssToUse","cellStyleParams","$scope","cellStyleFunc","processClassesFromColDef","onApplicableClass","stylingService","processStaticCellClasses","valueToUse","refresh","createCellRendererParams","finalParams","userComponentFactory","createFinalParams","cellRendererType","newTooltip","hasNewTooltip","hadTooltip","removeAttribute","unregisterTooltip","equalsMethod","getColumn","valueFormatted","getTooltipText","processCellClassRules","onNotApplicableClass","processClassRules","cellClassRules","includeSelectionComponent","includeRowDraggingComponent","includeDndSourceComponent","cbSelectionIsFunc","rowDraggableIsFunc","dndSourceIsFunc","lookupComponentClassDef","CELL_RENDERER_TYPE_PINNED","CELL_RENDERER_TYPE_NORMAL","useTaskService","afterCellRendererCreated","cellRendererTypeNormal","task","componentPromise","newCellRenderer","newPinnedRowCellRenderer","taskQueue","createTask","formatValue","eGridCell","addRowCompListener","addRenderedRowListener","valueFormatterService","lockedClosedGroup","leafGroup","isOpenGroup","groupFootersEnabled","groupAlwaysShowAggData","ignoreAggData","onMouseEvent","onCellClicked","onMouseDown","onCellDoubleClicked","onMouseOut","onMouseOver","dispatchCellContextMenuEvent","cellContextMenuEvent","createEvent","onCellContextMenu","domEvent","cellMouseOutEvent","clearMouseOver","cellMouseOverEvent","setMouseOver","cellDoubleClickedEvent","startRowOrCellEdit","keyPress","charPress","startRowEditing","startEditingIfEnabled","cellStartedEdit","afterCellEditorCreated","createCellEditorParams","createCellEditor","focusCell","newCellEditor","popupEditorWrapper","PopupEditorWrapper","isCancelBeforeStart","cellEditorInPopup","setInlineEditingClass","addPopupCellEditor","addInCellEditor","afterGuiAttached","ePopupGui","useModelPopup","hideEditorPopup","popupService","addPopup","onPopupEditorClosed","positionPopupOverComponent","eventSource","ePopup","keepWithinBounds","stopRowOrCellEdit","editingInline","popupEditorShowing","onKeyDown","stopEditing","stopEditingAndFocus","parseValue","suppressNavigateAfterEdit","navigateAfterEdit","valueParser","expressionService","evaluate","forceBrowserFocus","setFocusedCell","refreshHandle","setFocusInOnEditor","focusIn","isEditing","onEnterKeyDown","onF2KeyDown","onEscapeKeyDown","onTabKeyDown","onBackspaceOrDeleteKeyPressed","onNavigationKeyPressed","setFocusOutOnEditor","focusOut","shiftKey","onShiftRangeSelect","rowRenderer","endCell","extendLatestRangeInDirection","ensureCellVisible","onKeyPress","onSpaceKeyPressed","isCellInAnyRange","getCellPosition","thisCell","extendLatestRangeToCell","ctrlKeyPressed","setRangeToCell","cellMouseDownEvent","isDoubleClickOnIPad","nowMillis","lastIPadMouseClickEvent","cellClickedEvent","getParentRow","setParentRow","detach","selectionHandle","leftPosition","getPinnedLeftContainerWidth","getBodyContainerWidth","getRangeBorders","leftCol","rightCol","isRtl","thisCol","getDisplayedColBefore","ranges","isCellInSpecificRange","startRow","getRangeStartRow","endRow","getRangeEndRow","rowPositionUtils","sameRow","isMoreThanOneCell","borders","onRowIndexChanged","onCellFocused","onRangeSelectionChanged","newRangeCount","updateRangeBorders","isSingleCell","cellRanges","rangesLen","lastRange","isFirstRangeCategory","CellRangeType","DIMENSION","handlesAllowed","isCategory","isContiguousRange","cellRangeType","getType","updateRangeBordersIfRangeCount","rangeBorders","isTop","isRight","isBottom","isLeft","onFirstRightPinnedChanged","onLastLeftPinnedChanged","eCellWrapper","addRowDragging","addDndSource","addSelectionCheckbox","clientSideRowModelActive","rowDraggingComp","dndSourceComp","cbSelectionComponent","CheckboxSelectionComponent","visibleFunc","DOM_DATA_KEY_CELL_COMP","focus","activeElement","fullRowEdit","stopRowEditing","newValueExists","isCancelAfterEnd","iterableToArray","startOfUTCWeek","diff","setUTCDate","STRING_PROPERTIES","OBJECT_PROPERTIES","ARRAY_PROPERTIES","NUMBER_PROPERTIES","BOOLEAN_PROPERTIES","FUNCTION_PROPERTIES","RecursionType","ClientSideNodeManager","rootNode","nextId","allNodesMap","ROOT_NODE_ID","allLeafChildren","childrenAfterSort","isRowMasterFunc","doingLegacyTreeData","doingMasterDetail","getCopyOfNodesMap","getRowNode","setRowData","recursiveFunction","TOP_LEVEL","setLeafChildren","updateRowData","rowDataTran","isLegacyTreeData","addIndex","rowNodeTransaction","executeAdd","executeRemove","executeUpdate","newRowNode","addRowNode","rowIdsRemoved","anyNodesSelected","lookupRowNode","createNode","rowNodeIdFunc","dataItem","doingTreeData","nodeChildDetails","canFlower","rowGroupColumns","masterRowLevel","expandByDefault","childAfterGroup","leafChild","ClientSideRowModel","refreshEverythingFunc","refreshModel","refreshEverythingAfterColsChangedFunc","afterColumnsChanged","onValueChanged","onRowGroupOpened","refreshMapFunc","keepRenderedRows","animate","nodeManager","ensureRowHeightsValid","startPixel","endPixel","startLimitIndex","endLimitIndex","atLeastOneChange","rowAtStartPixel","getRowIndexAtPixel","rowAtEndPixel","firstRow","lastRow","getRow","setRowTops","nextRowTop","rowsToDisplay","resetRowTops","changedPath","ensureRowAtPixel","indexAtPixelNow","keepEditingRows","isLastRowFound","getRowCount","getTopLevelRowCount","getTopLevelRowDisplayedIndex","topLevelIndex","getRowBounds","createChangePath","rowNodeTransactions","noTransactions","ChangedPath","setInactive","constants","doRowGrouping","groupState","doFilter","doPivot","doAggregate","doSort","doRowsToDisplay","newPage","$apply","rowsMissing","isReady","isRowsToRender","firstInRange","lastInRange","firstRowHit","lastRowHit","forEachNodeAfterFilterAndSort","lookingForLastRow","childOfLastRow","setDatasource","getTopLevelNodes","getRootNode","isRowPresent","pixelToMatch","bottomPointer","topPointer","midPointer","isRowInPixel","topPixel","bottomPixel","getCurrentPageHeight","forEachLeafNode","forEachNode","recursivelyWalkNodesAndCallback","Normal","forEachNodeAfterFilter","AfterFilter","AfterFilterAndSort","forEachPivotNode","PivotNodes","recursionType","nodeChildren","aggregationStage","expandOrCollapseAll","expand","usingTreeData","recursiveExpandOrCollapse","sortStage","groupStage","tran","removeGroupsFromSelection","restoreGroupState","filterStage","pivotStage","getGroupState","rowDataChangedEvent","batchUpdateRowData","rowDataTransaction","rowDataTransactionBatch","waitMillis","executeBatchUpdateRowData","callbackFuncsBound","rowNodeTrans","tranItem","rowNodeTran","commonUpdateRowData","flattenStage","onRowHeightChanged","resetRowHeights","FilterStage","filterService","selectableService","updateSelectableAfterFiltering","SortStage","sortOptions","getSortForRowController","dirtyLeafNodes","calculateDirtyNodes","valueColumns","getValueColumns","noAggregations","sortService","dirtyNodes","addNodesFunc","FlattenStage","skipLeafNodes","showRootNode","topList","recursivelyAddToRowsToDisplay","ensureFooterNodeExists","addRowNodeToRowsToDisplay","rowsToFlatten","hideOpenParents","isParent","isGroupSuppressedNode","isSkippedLeafNode","isRemovedSingleChildrenGroup","isRemovedLowestSingleChildrenGroup","neverAllowToExpand","isHiddenOpenParent","excludedParent","uiLevelForChildren","createDetailNode","groupNode","footerNode","masterNode","flower","childFlower","SortService","postSortFunc","forEachChangedNodeDepthFirst","pullDownGroupDataForHideOpenParents","sortedRowNodes","doDeltaSort","doFullSort","sorted","updateChildIndexes","updateGroupDataForHiddenOpenParents","mapNodeToSortedNode","compareRowNodes","pos","currentPos","cleanNodes","passesDirtyNodesCheck","passesChangedPathCheck","canSkip","cleanNodesMapped","sortedRowNode","changedNodes","mergeSortedArrays","sortedNodeA","sortedNodeB","sortOption","isInverted","inverter","comparatorResult","listToSort","executeFromRootNode","clearOperation","childRowNode","getGroupDisplayColumns","groupDisplayCol","displayingGroupKey","parentToStealFrom","FilterService","filterNodes","filterCallback","includeChildNodes","passBecauseChildren","passBecauseDataPasses","doesRowPassFilter","doingTreeDataFiltering","treeDataDepthFirstFilter_1","alreadyFoundInParent","foundInParent","setAllChildrenCountTreeData","setAllChildrenCountGridGrouping","ImmutableService","clientSideRowModel","createTransactionForRowData","transaction","existingNodesMap","orderMap","existingNode","ClientSideRowModelModule","rowModels","clientSide","AgAbstractInputField","TEMPLATE","setInputType","addInputListeners","eInput","inputType","getInputElement","setInputWidth","eWrapper","setInputName","Tablelvl2Context","createChainedFunction","_len2","_key2","ListContext","getEventCallbacks","EVENT_CALLBACKS","EVENTS","copyAttributesToGridOptions","skipEventDeprecationCheck","pGridOptions","keyExists","toBoolean","processOnChange","changes","setEnableCellTextSelection","setQuickFilter","setPinnedTopRowData","setPinnedBottomRowData","setColumnDefs","setHeaderHeight","paginationSetPageSize","setPivotMode","setGroupRemoveSingleChildren","setSuppressRowDrag","setGridAutoHeight","setSuppressClipboardPaste","setSideBar","startOfUTCISOWeek","addMonths","dirtyAmount","desiredMonth","dateWithDesiredMonth","setFullYear","daysInMonth","getDaysInMonth","setMonth","addDays","setDate","objectKeys","isArguments","isRegex","flags","isDate","actual","expected","opts","isUndefinedOrNull","aIsRegex","bIsRegex","aIsBuffer","isBuffer","bIsBuffer","ka","kb","objEquiv","protectedDayOfYearTokens","protectedWeekYearTokens","defaultVariantMapping","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","Typography","_props$align","align","classes","_props$color","_props$display","display","_props$gutterBottom","gutterBottom","_props$noWrap","noWrap","_props$paragraph","paragraph","_props$variant","variant","_props$variantMapping","variantMapping","clsx","margin","typography","caption","overline","srOnly","alignLeft","textAlign","alignCenter","alignRight","alignJustify","textOverflow","whiteSpace","colorInherit","colorPrimary","palette","main","colorSecondary","secondary","colorTextPrimary","colorTextSecondary","colorError","displayInline","displayBlock","ServerStyleSheets","sheetsManager","sheetsRegistry","SheetsRegistry","generateClassName","createGenerateClassName","StylesProvider","serverGenerateClassName","withThemeCreator","withTheme","WithTheme","providedFilterParams","filterChangedCallback","appliedModel","templateString","createTemplate","setupOnBtApplyDebounce","clearActive","clearButton","applyActive","isUseApplyButton","newRowsAction","NEW_ROWS_ACTION_KEEP","newRowsActionKeep","NEW_ROWS_ACTION_CLEAR","modelsForKeep","eApplyButton","onBtApply","eClearButton","onBtClear","anyButtonVisible","eButtonsPanel","getDefaultDebounceMs","debounceMs","getDebounceMs","onBtApplyDebounce","setModel","applyModel","oldAppliedModel","afterFloatingFilter","onNewRowsLoaded","isNewRowsActionKeep","filterModifiedCallback","debounceDefault","applyButton","_default","argIndex","SetLeftFeature","columnOrGroup","setColsSpanning","getColumnOrGroup","setLeftFirstTime","suppressMoveAnimation","oldLeftExists","columnAnimationService","animateInLeft","actualLeft","colOrGroup","AgCheckbox","displayTag","labelAlignment","iconMap","unselected","addIconsPlaceholder","updateIcons","iconDiv","eIconEl","toggle","getNextValue","setPassive","setReadOnly","isReadOnly","readOnlyStr","LoggerFactory","logging","Logger","isLogging","isLoggingFunc","AgDialog","RESIZE_TEMPLATE","MAXIMIZE_BTN_TEMPLATE","movable","isMaximizable","isMaximized","maximizeListeners","resizeListenerDestroy","isResizing","lastPosition","maximizable","moveElement","eTitleBar","relatedTarget","bringPopupToFront","setMovable","setMaximizable","addResizers","setResizable","renderComponent","alwaysOnTop","modal","resizers","DOMParser","parseFromString","createMap","resizerMap","topLeft","topRight","bottomRight","bottomLeft","getResizerElement","side","onResizeStart","updateDragStartPosition","onResize","isHorizontal","isVertical","calculateMouseMovement","movementX","movementY","offsetLeft","offsetTop","direction","oldWidth","newWidth","skipWidth","oldHeight","getHeight","newHeight","skipHeight","setHeight","offsetElement","onResizeEnd","onMoveStart","onMove","_b","anywhereWithin","topBuffer","onMoveEnd","toggleMaximize","refreshMaximizeIcon","maximizeIcon","minimizeIcon","clearMaximizebleListeners","destroyListener","maximizeButtonComp","pointerEvents","moveElementDragListener","addTitleBarButton","AgPanel","deepmerge","createMuiTheme","useControlled","controlled","defaultProp","isControlled","_React$useState","valueState","ComponentSource","UserComponentFactory","newDateComponent","createAndInitUserComponent","newHeaderComponent","newHeaderGroupComponent","columnGroup","newFullWidthGroupRowInnerCellRenderer","newFullWidthCellRenderer","cellRendererName","newInnerCellRenderer","newLoadingOverlayComponent","newNoRowsOverlayComponent","newTooltipComponent","newFilterComponent","defaultFilter","modifyParamsCallback","newFloatingFilterComponent","defaultFloatingFilter","newToolPanelComponent","toolPanelDef","newStatusPanelComponent","definitionObject","paramsFromGrid","propertyName","defaultComponentName","componentAndParams","createComponentInstance","componentInstance","paramsFromSelector","addReactHacks","paramsAfterCallback","deferredInit","initComponent","notRelevant","agGridReact","frameworkComponentWrapper","createUserComponentFromConcreteClass","clazz","agGridParams","internalComponent","componentSelectorFunc","hardcodedNameComponent","HardcodedJsComponent","hardcodedJsFunction","HardcodedFwComponent","componentPropertyValue","agComponentUtils","doesImplementIComponent","componentFromFramework","HARDCODED","adaptFunction","componentNameToUse","selectorResult","registeredCompClassDef","lookupFromRegisteredComponents","componentNameOpt","registeredComponent","userComponentRegistry","retrieve","REGISTERED_BY_NAME","RegisteredComponentSource","REGISTERED","DEFAULT","userParams","holder","paramsForSelector","componentToUse","overrideName","nameToReport","FrameworkComponentRaw","thisComponentConfig","componentMetadataProvider","wrap","mandatoryMethodList","optionalMethodList","differenceInMilliseconds","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","startOfWeek","getDay","_objectSpread","areInputsEqual","newInputs","lastInputs","memoizeOne","resultFn","lastThis","lastArgs","calledOnce","newArgs","StyleSheet","isSpeedy","speedy","ctr","nonce","before","rule","_tag","tag","createTextNode","createStyleElement","sheet","styleSheets","ownerNode","sheetForTag","isImportRule","insertRule","cssRules","stylis_min","W","ia","Z","ja","aa","ba","la","ma","na","ea","oa","A","U","J","N","ca","da","fa","ha","use","toSheet","Sheet","ruleSheet","content","selectors","parents","line","ns","at","createCache","stylisOptions","stylis","Stylis","inserted","_insert","querySelectorAll","stylisPlugins","serialized","shouldCache","registered","getRegisteredStyles","registeredStyles","classNames","rawClassName","insertStyles","isStringTag","murmurhash2_32_gc","unitlessKeys","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","order","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","memoize","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","p1","p2","cursor","unitless","handleInterpolation","interpolation","couldBeSelectorInterpolation","__emotion_styles","anim","interpolated","createStringFromObject","previousCursor","labelPattern","serializeStyles","stringMode","identifierName","css","EmotionCacheContext","ThemeContext","CacheProvider","withEmotionCache","typePropName","cssProp","newProps","Emotion","jsx","argsLength","createElementArgArray","toAdd","ClassNames","cx","ele","applyPrefixToName","cleanValue","isDocumentElement","getScrollTop","scrollTo","easeOutCubic","animatedScrollTo","increment","currentTime","animateScroll","requestAnimationFrame","isTouchCapable","getMenuPlacement","menuEl","placement","shouldScroll","isFixedPosition","spacing","scrollParent","excludeStaticParent","overflowRx","docEl","overflowY","overflowX","getScrollParent","defaultState","_menuEl$getBoundingCl","menuBottom","menuHeight","menuTop","containerTop","viewHeight","viewSpaceAbove","viewSpaceBelow","scrollSpaceAbove","scrollSpaceBelow","scrollDown","scrollUp","_constrainedHeight","spaceAbove","controlHeight","_constrainedHeight2","coercePlacement","MenuPlacer","_getPrototypeOf2","maxMenuHeight","_this$props","minMenuHeight","menuPlacement","menuPosition","menuShouldScrollIntoView","getPortalPlacement","getPlacement","placerProps","getUpdatedProps","noticeCSS","_ref5","_ref5$theme","baseUnit","neutral40","noOptionsMessageCSS","loadingMessageCSS","NoOptionsMessage","getStyles","innerProps","LoadingMessage","MenuPortal","_getPrototypeOf3","_ref7","_this$props2","appendTo","controlElement","isFixed","getBoundingClientObj","scrollDistance","menuWrapper","createPortal","keyList","hasProp","exportedEqual","arrA","arrB","dateA","dateB","regexpA","regexpB","ValueContainer","isMulti","hasValue","_templateObject","Svg","viewBox","focusable","CrossIcon","DownChevron","baseCSS","isFocused","_ref3$theme","neutral60","neutral20","transition","neutral80","dropdownIndicatorCSS","clearIndicatorCSS","loadingDotAnimations","insertable","keyframes","LoadingDot","_ref6","_css","animation","backgroundColor","borderRadius","verticalAlign","LoadingIndicator","indicator","inputStyle","isHidden","border","fontSize","outline","MultiValueGeneric","_ref4","MultiValueContainer","MultiValueLabel","MultiValueRemove","MultiValue","isDisabled","removeProps","selectProps","Container","Label","Remove","emotionCx","cropWithEllipsis","ClearIndicator","Control","menuIsOpen","control","DropdownIndicator","Group","Heading","headingProps","GroupHeading","cleanProps","IndicatorsContainer","indicators","IndicatorSeparator","Input","AutosizeInput","inputRef","Menu","MenuList","Option","Placeholder","placeholder","SelectContainer","SingleValue","diacritics","letters","stripDiacritics","trimString","defaultStringify","A11yText","DummyInput","in","out","onExited","appear","exit","emotion","NodeResolver","findDOMNode","STYLE_KEYS","LOCK_STYLES","preventTouchMove","allowTouchMove","stopPropagation","preventInertiaScroll","totalScroll","currentScroll","isTouchDevice","activeScrollLocks","ScrollLock","accountForScrollbars","touchScrollTarget","targetStyle","originalStyles","currentPadding","adjustedPadding","listenerOptions","_this3","_ref$1","ScrollBlock","_PureComponent","blur","isEnabled","blurSelectInput","getScrollTarget","PureComponent","ScrollCaptor","onBottomArrive","onBottomLeave","onTopArrive","onTopLeave","_this$scrollTarget","scrollTarget","isDeltaPositive","availableScroll","shouldCancelScroll","cancelScroll","handleEventDelta","changedTouches","startListening","stopListening","onWheel","ScrollCaptorSwitch","instructionsAriaMessage","isSearchable","valueEventAriaMessage","isOptionDisabled","defaultStyles","clearIndicator","_ref$theme","alignItems","neutral5","neutral0","borderColor","neutral10","borderStyle","borderWidth","boxShadow","flexWrap","justifyContent","neutral30","dropdownIndicator","groupHeading","textTransform","indicatorsContainer","alignSelf","indicatorSeparator","_ref4$theme","visibility","loadingIndicator","loadingMessage","_ref2$theme","alignToControl","menuGutter","menuList","WebkitOverflowScrolling","menuPortal","multiValue","multiValueLabel","multiValueRemove","dangerLight","danger","noOptionsMessage","primary25","userSelect","WebkitTapHighlightColor","primary50","neutral50","singleValue","valueContainer","primary75","neutral70","neutral90","backspaceRemovesValue","blurInputOnSelect","captureMenuScroll","closeMenuOnSelect","closeMenuOnScroll","controlShouldRenderValue","escapeClearsValue","filterOption","rawInput","_ignoreCase$ignoreAcc","ignoreCase","ignoreAccents","matchFrom","candidate","formatGroupLabel","getOptionLabel","getOptionValue","isLoading","menuShouldBlockScroll","isMobileDevice","openMenuOnFocus","openMenuOnClick","pageSize","screenReaderStatus","tabIndex","tabSelectsValue","Select","ariaLiveSelection","ariaLiveContext","focusedOption","focusedValue","inputIsHidden","menuOptions","selectValue","controlRef","focusedOptionRef","menuListRef","focusInput","blurInput","actionMeta","onInputChange","inputIsHiddenAfterUpdate","onMenuClose","clearFocusValueOnUpdate","_this$props3","isOptionSelected","announceAriaLiveSelection","removedValue","lastSelectedValue","custom","instancePrefix","_this$state","blockOptionHover","tagName","openMenu","openAfterFocus","_this$props4","clearValue","isComposing","initialTouchX","initialTouchY","userIsDragging","onControlMouseDown","onClearIndicatorMouseDown","onDropdownIndicatorMouseDown","currentTarget","onMenuOpen","_this$props5","onFocus","announceAriaLiveContext","onBlur","_this$props6","hideSelectedOptions","_this$props7","isClearable","_this$state2","defaultPrevented","focusValue","removeValue","popValue","selectOption","focusOption","cacheComponents","_selectValue","_menuOptions","buildMenuOptions","startListeningComposition","startListeningToTouch","onScroll","autoFocus","_this$props8","getNextFocusedValue","getNextFocusedOption","_this$props9","scrollToFocusedOptionOnUpdate","focusedEl","menuRect","focusedRect","overScroll","scrollIntoView","stopListeningComposition","stopListeningToTouch","_this$props10","_this$state3","openAtIndex","selectedIndex","_this$props11","_this$state4","focusedIndex","nextFocus","_this$state5","classNamePrefix","nextSelectValue","_this$state6","lastFocusedIndex","lastFocusedOption","_this$props12","formatOptionLabel","onCompositionStart","onCompositionEnd","_props$inputValue","toOption","shouldHideSelectedOptions","onHover","onOptionHover","onSelect","optionId","getElementId","onMouseMove","itemIndex","hasGroups","_this$state7","_this$props13","focusedValueMsg","valueFocusAriaMessage","focusedOptionMsg","optionFocusAriaMessage","resultsMsg","screenReaderMessage","resultsAriaMessage","countOptions","_this$props14","inputId","getInputRef","onInputBlur","onInputFocus","ariaAttributes","_this$commonProps","commonProps","autoCapitalize","autoComplete","autoCorrect","handleInputChange","spellCheck","_this4","_this$components","_this$props15","_this$state8","opt","isOptionFocused","_this$props16","onClearIndicatorTouchEnd","_this$props17","_this$components2","onDropdownIndicatorTouchEnd","_this5","_this$components3","_this$state9","_this$props18","menuPortalTarget","onMenuScrollToTop","onMenuScrollToBottom","menuUI","getFocusedOptionRef","hasOptions","headingId","_message","menuPlacementProps","menuElement","_ref6$placerProps","onMenuMouseDown","onMenuMouseMove","getMenuListRef","_this6","_this$props19","_value","constructAriaLiveMessage","_this$components4","_this$props20","getCommonProps","renderLiveRegion","getControlRef","onControlTouchEnd","renderPlaceholderOrValue","renderInput","renderClearIndicator","renderLoadingIndicator","renderIndicatorSeparator","renderDropdownIndicator","renderMenu","renderFormField","defaultInputValue","defaultMenuIsOpen","SelectComponent","_class","StateManager","callProp","getProp","manageState","HeaderRowType","HeaderGroupWrapperComp","childColumnsDestroyFuncs","CssClassApplier","addHeaderClassesFromColDef","getDisplayNameForColumnGroup","appendHeaderGroupComp","setupResize","addClasses","setupWidth","addAttributes","setupMovingCss","setupTooltip","HoverFeature","setLeftFeature","onColumnMovingChanged","headerTooltip","tooltipText","setColumnGroupOpened","leafCols","headerName","getDisplayNameForColumn","afterHeaderCompCreated","headerGroupComp","setupMove","eHeaderGroup","isSuppressMoving","dragSource_1","HeaderCell","getDragItemForGroup","allColumnsOriginalOrder","visibleState","allColumnsCurrentOrder","getAllDisplayedColumns","childSuppressesMoving","suppressMovable","addListenersToChildrenColumns","onDisplayedChildrenChanged","destroyListenersOnChildrenColumns","widthChangedListener","eHeaderCellResize","finishedWithResizeFunc","horizontalResizeService","addResizeBar","eResizeBar","onResizing","autoSizeColumns","resizeCols","resizeStartWidth","resizeRatios","takeFromGroup","getDisplayedGroupAfter","takeFromLeafCols","resizeTakeFromCols","resizeTakeFromStartWidth","resizeTakeFromRatios","finished","resizeAmount","resizeSets","resizeAmountNormalised","normaliseDragChange","ratios","resizeColumnSets","dragChange","ReadOnlyFloatingFilter","eFloatingFilterText","onParentModelChanged","parentModel","parentFilterInstance","filterInstance","getModelAsString","modelAsString","FloatingFilterWrapper","setupFloatingFilter","setupLeftPositioning","setupColumnHover","eButtonShowMainFilter","showParentFilter","floatingFilterCompPromise","getFloatingFilterInstance","compInstance","setupWithFloatingFilter","setupSyncWithFilter","setupEmpty","syncWithFilter","getFilterComponent","menuFactory","showMenuAfterButtonClick","onColumnWidthChanged","floatingFilterComp","disposeFunc","floatingFilterCompUi","eFloatingFilterBody","suppressFilterButton","eButtonWrapper","defaultFloatingFilterType","filterToFloatingFilterNames","SetFilterModule","filterParams","createFilterParams","finalFilterParams","currentParentModel","floatingFilterComponentParams","filterComponent","getFilterComponentPrototype","createDynamicParams","resolvedComponent","agSetColumnFilter","agNumberColumnFilter","agDateColumnFilter","agTextColumnFilter","HeaderRowComp","dept","headerComps","forEachHeaderElement","idsOfAllChildren","removeAndDestroyChildComponents","idsToDestroy","childHeaderComp","groupHeight","headerRowCount","getHeaderRowCount","numberOfFloating","numberOfGroups","onVirtualColumnsChanged","onDisplayedColumnsChanged","onColumnResized","onGridColumnsChanged","getWidthForRow","getContainerWidth","removeAndDestroyAllChildComponents","getItemsAtDepth","result_1","getVirtualHeaderGroupRow","FLOATING_FILTER","currentChildIds","correctChildIds","headerComp","eHeaderCompGui","idOfChild","eParentContainer","createHeaderComp","correctChildOrder","columnGroupChild","COLUMN","HeaderWrapperComp","COLUMN_GROUP","NetworkStatus","isNetworkRequestInFlight","LinkObservable","isNonEmptyArray","FetchType","networkError","extraInfo","graphQLError","generateErrorMessage","ApolloError","queryManager","shouldSubscribe","onSubscribe","observers","isTornDown","queryId","generateQueryId","opDef","queryName","delete","removeQuery","storeValue","policy","queryStoreValue","queryStore","isNetworkFetchPolicy","errorPolicy","updateLastResult","stale","isDifferentFromLastResult","newResult","lastResultSnapshot","snapshot","fetchQuery","combinedOptions","tslib_1.__assign","qid","normal","fetchMoreResult","stopQuery","startGraphQLSubscription","setVariables","oldFetchPolicy","fetchResults","tryFetch","dataStore","markUpdateQueryResult","broadcastQueries","stopPollingQuery","assertNotCacheFirstOrOnly","startPollingQuery","assumeImmutableResults","subObserver","_subscription","_observer","defaultSubscriptionObserverErrorCallback","setUpQuery","tearDownQuery","addObservableQuery","iterateObserversSafely","observeQuery","getLocalState","addExportedVariables","previousVariables","serverQuery","sub","removeObservableQuery","observersWithMethod","getStore","initMutation","markMutationError","markMutationResult","initQuery","previousQuery","resolvers","fragmentMatcher","addResolvers","setFragmentMatcher","resolverGroup","setResolvers","getResolvers","runResolvers","remoteResult","onlyRunForcedResolvers","resolveDocument","localResult","getFragmentMatcher","clientQuery","prepareContext","getCacheKey","dataIdFromObject","buildRootValueFromCache","exportedVariables","shouldForceResolvers","forceResolvers","returnPartialData","optimistic","rootValue","mainDefinition","fragmentMap","definitionOperation","defaultOperationType","execContext","resolveSelectionSet","resultsToMerge","resolveField","fieldResult","typeCondition","fragmentResult","aliasedFieldName","aliasUsed","defaultResult","resultPromise","resolverType","__typename","resolverMap","resolveSubSelectedArray","multiplex","inner","queryDeduplication","onBroadcast","ssrMode","clientAwareness","localState","mutationStore","MutationStore","QueryStore","idCounter","fetchQueryRejectFns","transformCache","inFlightLinkObservables","pollingInfoByQueryId","LocalState","getCache","stop","_info","stopQueryNoBroadcast","updateQueries","setQuery","getVariables","generateUpdateQueriesInfo","updateQueriesByName","observableQuery","markMutationInit","updateWithProxyFn","storeResult","getObservableFromLink","markMutationComplete","refetchQueryPromises","refetchQuery","queryOptions","fetchType","fetchMoreForQueryId","needToFetch","isNetworkOnly","shouldFetch","requestId","updateQueryWatch","lastRequestId","invalidated","invalidate","storePreviousVariables","isPoll","poll","isRefetch","networkResult","fetchRequest","getQuery","markQueryError","markQueryResultClient","hasForcedResolvers","markQueryResult","queryListenerForObserver","invoke","networkStatusChanged","shouldNotifyIfLoading","notifyOnNetworkStatusChange","hasGraphQLErrors","isMissing","errorStatusChanged","diffResult","resultFromStore","transformed","transformDocument","forLink","transformForLink","defaultVars","transformedOptions","ObservableQuery","watchedQuery","stopQueryInStore","stopQueryInStoreNoBroadcast","addQueryListener","watch","clearStore","resetIds","resetStore","reFetchObservableQueries","includeStandby","observableQueryPromises","startQuery","makeObservable","markSubscriptionResult","getCurrentQueryResult","getQueryWithPreviousResult","queryIdOrObservable","foundObserveableQuery","deduplication","forceFetch","activeNextCount","completed","asyncMap","errorsFromStore","fqrfId","newInfo","newContext","checkInFlight","interval","initialCache","ignoreErrors","writeWithErrors","write","dataId","recordOptimisticTransaction","orig","nextQueryResult","currentQueryResult","mutationResult","queryVariables","performTransaction","removeOptimistic","resetStoreCallbacks","clearStoreCallbacks","ssrForceFetchDelay","connectToDevTools","typeDefs","DataStore","__APOLLO_CLIENT__","QueryManager","clientAwarenessName","clientAwarenessVersion","devToolsHookCb","dataWithOptimisticResults","extract","readQuery","readFragment","writeQuery","writeFragment","writeData","__actionHookForDevTools","cb","__requestRaw","initQueryManager","onResetStore","onClearStore","restore","serializedState","setLocalStateFragmentMatcher","define","_GoogleApiComponent","_Marker","_InfoWindow","_HeatMap","_Polygon","_Polyline","_propTypes","_reactDom","_String","_cancelablePromise","Polyline","Polygon","HeatMap","InfoWindow","Marker","GoogleApiWrapper","wrapper","_react2","_propTypes2","_reactDom2","mapStyles","evtNames","lat","initialCenter","lng","centerAroundCurrentLocation","geolocation","geoPromise","makeCancelable","getCurrentPosition","coords","latitude","longitude","loadMap","google","restyleMap","setZoom","center","recenterMap","bounds","fitBounds","maps","removeListener","mapRef","refs","curr","LatLng","mapTypeIds","MapTypeId","mapTypeFromProps","mapType","mapConfig","mapTypeId","maxZoom","minZoom","clickableIcons","disableDefaultUI","zoomControl","mapTypeControl","scaleControl","streetViewControl","panControl","rotateControl","fullscreenControl","scrollwheel","draggable","keyboardShortcuts","disableDoubleClickZoom","noClear","gestureHandling","addListener","handleEvent","trigger","evtName","handlerName","camelize","setCenter","Children","cloneElement","mapCenter","containerStyles","containerStyle","bool","TextCellEditor","startValue","focusAfterAttached","getStartValue","highlightAllOnFocus","pageUp","pageDown","length_1","setSelectionRange","useFormatter","refData","GroupCellRenderer","assignBlankValueToGroupFooterCell","embeddedRowMismatch","isEmbeddedRowMismatch","cellIsEmpty","cellIsBlank","setupDragOpenParents","addExpandAndContract","addCheckboxIfNeeded","addValueElement","setupIndent","fullWidth","pinnedLeftCell","pinnedRightCell","bodyCell","isPinningLeft","setIndent","paddingCount","setPaddingDeprecatedWay","indentClass","paddingPx","suppressPadding","displayedGroup","createFooterCell","createGroupCell","addChildCount","createLeafCell","footerValue","footerValueGetter","paramsClone","eValue","rendererPromise","columnToUse","groupName","useFullWidth","useInnerRenderer","cellRendererParams","innerCellRenderer","groupCellRendererParams","groupedColumnDef","groupInnerRendererClass","groupColumnRendererClass","rendererToUse","suppressCount","updateChildCount","eChildCount","isUserWantsSelected","paramsCheckbox","checkbox","checkboxNeeded","cbSelectionComponent_1","eGroupCell","eExpandedIcon","eContractedIcon","eExpanded","eContracted","onExpandClicked","showExpandAndContractIcons","onAllChildrenCountChanged","suppressDoubleClickExpand","onCellDblClicked","suppressEnterExpand","onExpandOrContract","draggedFromHideOpenParents","reducedLeafNode","pivotModeAndLeafGroup","notExpandable","addLeafIndentClass","RowComp","parentScope","bodyContainerComp","pinnedLeftContainerComp","pinnedRightContainerComp","fullWidthContainerComp","animateIn","useAnimationFrameForCreate","embedFullWidth","eAllRowContainers","rowContainerReadyCount","refreshNeeded","columnRefreshPending","cellComps","createSecondPassFuncs","removeFirstPassFuncs","removeSecondPassFuncs","initialised","elementOrderChanged","rowIsEven","paginationPage","paginationProxy","getCurrentPage","setAnimateFlags","rowFocused","isRowFocused","createChildScopeOrNull","setupRowContainers","addListeners","slideRowIn","onTopChanged","fadeRowIn","eRow","contents","extraCssClass","rowClasses","getInitialRowClasses","rowIdSanitised","userRowStyles","preProcessStylesFromGridOptions","businessKey","getRowBusinessKey","businessKeySanitised","rowTopStyle","getInitialRowTopStyle","rowIdx","gridPanel","headerRootComp","getCellForCol","cellComp","afterFlush","executeProcessRowPostCreateFunc","eBodyRow","ePinnedLeftRow","ePinnedRightRow","pixels","roundRowTopToBounds","afterPaginationPixels","applyPaginationOffset","afterScalingPixels","maxDivHeightScaler","getRealPixelPosition","businessKeyForNodeFunc","areAllContainersReady","lazyCreateCells","cols","cellTemplatesAndComps","createCells","callAfterRowAttachedOnCells","refreshCells","createRowContainer","rowContainerComp","useAnimationsFrameForCreate","rowTemplate","appendRowTemplate","getRowElement","afterRowAttached","newChildScope","$new","$destroy","isDetailCell","isFullWidthGroup","stub","createFullWidthRows","LOADING_CELL_RENDERER","LOADING_CELL_RENDERER_COMP_NAME","DETAIL_CELL_RENDERER","DETAIL_CELL_RENDERER_COMP_NAME","FULL_WIDTH_CELL_RENDERER","GROUP_ROW_RENDERER","GROUP_ROW_RENDERER_COMP_NAME","setupNormalRowContainers","centerCols","leftCols","rightCols","getAllDisplayedCenterVirtualColumnsForRow","getDisplayedLeftColumnsForRow","getDisplayedRightColumnsForRow","fullWidthRow","createFullWidthRowContainer","eFullWidthRowBody","fullWidthRowComponentBody","eFullWidthRowLeft","fullWidthRowComponentLeft","eFullWidthRowRight","fullWidthRowComponentRight","eFullWidthRow","fullWidthRowComponent","oldRowTopExists","editingRow","isFullWidth","refreshFullWidth","tryRefresh","eCellComp","createFullWidthParams","normalSuccess","bodySuccess","leftSuccess","rightSuccess","onRowSelected","onExpandedChanged","onRowNodeDataChanged","onRowNodeCellChanged","onRowNodeDraggingChanged","onCellFocusChanged","onPaginationChanged","onModelUpdated","onColumnMoved","addListenersForCellComps","forEachCellComp","removeRenderedCells","postProcessCss","postProcessStylesFromGridOptions","postProcessClassesFromGridOptions","postProcessRowClassRules","postProcessRowDragging","row","destroyFullWidthComponents","detailRowCompCache","addOrDestroy","getContainerForCell","pinnedType","refreshCellsInAnimationFrame","insertCellsIntoContainer","colIdsToRemove","eligibleToBeRemoved","isCellEligibleToBeRemoved","indexStr","displayedColumns","isCellInWrongRow","focused","ensureCellInCorrectContainer","eOldContainer","rowWeWant","cellTemplates","newCellComps","existingCell","createNewCell","eRowContainer","gow","DOM_DATA_KEY_RENDERED_ROW","newCellComp","cellTemplate","onRowDblClick","onRowClick","createRowEvent","createRowEventWithSource","agEvent","multiSelectKeyPressed","shiftKeyPressed","multiSelectOnClick","rowDeselectionWithCtrl","eRowCallback","cellRendererCallback","cachedRowComp","masterDetailModuleLoaded","processClassesFromGridOptions","preProcessRowClassRules","firstRowOnPage","isFirstRowOnPage","lastRowOnPage","isLastRowOnPage","getPageFirstRow","getPageLastRow","newFirst","newLast","processRowClassRules","setEditingRow","sourceRenderedCell","classStr","rowCls","rowClassFunc","rowStyles","processStylesFromGridOptions","rowStyleFuncResult","rowStyleFunc","removeRowElement","addHoverFunctionality","getVScrollPosition","minPixel","maxPixel","heightPx_1","destroyContainingCells","getAndClearDelayedDestroyFunctions","currentPage","topPx","getPixelOffset","topPx_1","getAndClearNextVMTurnFunctions","getRenderedCellForColumn","spanList","cmp","updateRowIndexes","rowIndexStr","rowIsEvenChanged","getBodyRowElement","ct","getPinnedLeftRowElement","getPinnedRightRowElement","getFullWidthRowElement","RowNodeBlock","blockNumber","rowNodeCacheParams","STATE_DIRTY","blockSize","isAnyNodeOpen","rowCount","forEachNodeCallback","getRowUsingLocalIndex","sequence","deep","childrenCache","forEachNodeDeep","forEachNodeShallow","getVersion","getLastAccessed","lastAccessed","dontTouchLastAccessed","lastAccessedSequence","localIndex","createRowNodes","getStartRow","getEndRow","getBlockNumber","setDirty","setDirtyAndPurge","setRowNode","setBlankRowNode","createBlankRowNode","setNewData","STATE_LOADING","loadFromDatasource","pageLoadFailed","STATE_FAILED","EVENT_LOAD_COMPLETE","success","page","populateWithRowData","rows","rowNodesToRefresh","pageLoaded","STATE_LOADED","HeaderComp","lastMovingChanged","setupTap","setupIcons","setupMenu","setupSort","setupFilterIcon","setupText","displayNameSanitised","eText","addInIcon","eSortAsc","eSortDesc","eSortNone","eMenu","eFilter","eParent","touchListener","tapMenuButton","menuTouchListener","enableMenu","showColumnMenuAfterMouseClick","progressSort","showMenu","removeSortIcons","eSortOrder","sortUsingCtrl","eLabel","movedRecently","multiSort","setMultiSortOrder","alwaysHideNoSort","allColumnsWithSorting","getColumnsWithSortingOrdered","indexThisCol","moreThanOneColSorting","showIndex","filterPresent","HeaderGroupComp","setupLabel","addGroupExpandIcon","setupExpandIcons","expandAction","newExpandedValue","addTouchAndClickListeners","eCloseIcon","eOpenIcon","stopPropagationAction","updateIconVisibility","LoadingCellRenderer","eLoadingIcon","eLoadingText","LoadingOverlayComponent","DEFAULT_LOADING_OVERLAY_TEMPLATE","localisedTemplate","NoRowsOverlayComponent","DEFAULT_NO_ROWS_TEMPLATE","TooltipComponent","DefaultDateComponent","eDateInput","browserDatePicker","onDateChanged","SimpleFloatingFilter","getTextFromModel","con1Str","conditionToString","con2Str","isEventFromFloatingFilter","getLastType","lastType","setLastTypeFromModel","canWeEditAfterModelFromParentFilter","isTypeEditable","setEditable","DateFloatingFilter","DateFilter","DEFAULT_FILTER_OPTIONS","dateFrom","dateTo","createDateComponent","eDateWrapper","eReadOnlyText","allowEditing","dateModel","dateComp","filterValueDate","filterValueText","dateComponentParams","DateCompWrapper","TextInputFloatingFilter","modelString","toDebounce","syncUpWithParentFilter","columnDef","enterKeyPressed","NumberFloatingFilter","NumberFilter","filterTo","TextFloatingFilter","TextFilter","UserComponentRegistry","agGridDefaults","agDateInput","agColumnHeader","agColumnGroupHeader","agTextColumnFloatingFilter","agNumberColumnFloatingFilter","agDateColumnFloatingFilter","agAnimateShowChangeCellRenderer","AnimateShowChangeCellRenderer","agAnimateSlideCellRenderer","AnimateSlideCellRenderer","agGroupCellRenderer","agGroupRowRenderer","agLoadingCellRenderer","agCellEditor","agTextCellEditor","agSelectCellEditor","SelectCellEditor","agPopupTextCellEditor","PopupTextCellEditor","agPopupSelectCellEditor","PopupSelectCellEditor","agLargeTextCellEditor","LargeTextCellEditor","agLoadingOverlay","agNoRowsOverlay","agTooltipComponent","agDeprecatedNames","newComponentName","propertyHolder","animateShowChange","animateSlide","largeText","popupSelect","popupText","richSelect","headerComponent","jsComponents","frameworkComponents","registerComponent","registerFwComponent","registerDefaultComponent","rawName","translateIfDeprecated","deprecatedInfo","plainObjectConstrurctor","cloneStyle","newStyle","createRule","decl","jss","declCopy","plugins","onCreateRule","by","toCssValue","cssValue","getWhitespaceSymbols","linebreak","space","indentStr","indent","toCss","_options$indent","fallbacks","_getWhitespaceSymbols","_prop","_prop2","_value2","allowEmpty","escapeRegex","nativeEscape","CSS","BaseStyleRule","isProcessed","Renderer","renderer","force","onChangeValue","isDefined","renderable","removeProperty","attached","StyleRule","_BaseStyleRule","scoped","generateId","selectorText","applyTo","json","setSelector","replaceRule","pluginStyleRule","defaultToStringOptions","atRegExp","ConditionalRule","atMatch","rules","RuleList","getRule","addRule","onProcessRule","newRule","keyRegExp","pluginConditionalRule","defaultToStringOptions$1","nameRegExp","KeyframesRule","frames","nameMatch","keyRegExp$1","refRegExp","findReferencedKeyframe","replaceRef","refKeyframe","pluginKeyframesRule","onProcessStyle","KeyframeRule","pluginKeyframeRule","FontFaceRule","keyRegExp$2","pluginFontFaceRule","ViewportRule","pluginViewportRule","SimpleRule","keysMap","defaultUpdateOptions","forceUpdateOptions","ruleOptions","_this$options","oldRule","oldIndex","nameOrSelector","unregister","updateOne","_this$options2","_nextValue","_prevValue","deployed","attach","deploy","queue","deleteRule","addRules","added","_this$rules","PluginsRegistry","internal","registry","onProcessSheet","processedValue","newPlugin","plugin","sheets","globalThis$1","globalThis","moduleId","createGenerateId","ruleCounter","jssId","minify","getPropertyValue","cssRule","attributeStyleMap","indexOfImportantFlag","cssValueWithoutImportantFlag","getHead","findPrevNode","insertionPoint","findHigherSheet","findHighestSheet","comment","nodeValue","findCommentNode","getNonce","_insertRule","appendRule","getValidRuleInsertionIndex","DomRenderer","hasInsertedRules","media","meta","textContent","createStyle","nextNode","insertionPointElement","insertStyle","insertRules","nativeParent","latestNativeParent","_insertionIndex","refCssRule","ruleStr","insertionIndex","nativeRule","getRules","instanceCounter","Jss","isInBrowser","setup","createStyleSheet","removeStyleSheet","createJss","getDynamicStyles","extracted","isFilled","SSR","isAdornedStart","startAdornment","getDateMillisecondsPart","baseTimezoneOffset","setSeconds","useId","idOverride","defaultId","setDefaultId","eachDayOfInterval","dirtyInterval","startDate","endDate","endTime","dates","currentDate","RowType","InfiniteBlock","pageNumber","cacheParams","setIndexAndTopOnRowNode","getNodeIdPrefix","displayIndex","successCallback","failCallback","getRows","InfiniteCache","moveItemsDown","moveFromIndex","moveCount","indexOfLastRowToMove","currentRowIndex","indexOfNodeWeWant","nodeForThisIndex","insertItems","indexToInsert","pageStartRow","pageEndRow","newRowNodes","insertItemsAtIndex","forEachBlockInReverseOrder","isMaxRowFound","hack_setVirtualRowCount","getVirtualRowCount","onCacheUpdated","dontCreatePage","blockId","getBlock","createBlock","newBlock","postCreateBlock","refreshCache","forEachBlockInOrder","checkBlockToLoad","RowNodeCache","InfiniteRowModel","addEventListeners","destroyCache","destroyDatasource","datasourceChanged","infiniteCache","onColumnEverything","isSortModelDifferent","ds","maxConcurrentRequests","overflowSize","getRowNodesInRange","resetCache","createModelUpdatedEvent","rowNodeBlockLoader","RowNodeBlockLoader","getFilterModel","initialRowCount","EVENT_CACHE_UPDATED","rowIndexForPixel","lastRowIndex","purgeCache","setVirtualRowCount","maxRowFound","getBlockState","InfiniteRowModelModule","BaseGridSerializingSession","processCellCallback","processHeaderCallback","processGroupHeaderCallback","cellAndHeaderEscaper","extractHeaderValue","nameForCol","getHeaderName","extractRowCellValue","valueForCell","createValueForGroupNode","processCell","GridSerializer","serialize","gridSerializingSession","skipGroups","skipHeader","columnGroups","skipFooters","skipPinnedTop","skipPinnedBottom","includeCustomHeader","customHeader","includeCustomFooter","customFooter","allColumns","onlySelected","columnKeys","onlySelectedAllPages","rowSkipper","shouldRowBeSkipped","skipSingleChildrenGroup","skipLowestSingleChildrenGroup","rowModelNormal","onlySelectedNonStandardModel","columnsToExport","getGridColumns","getAllPrimaryColumns","addCustomHeader","prepare","groupInstanceIdCreator","GroupInstanceIdCreator","displayedGroups","displayedGroupCreator","createDisplayedGroups","getGridBalancedTree","recursivelyAddHeaderGroups","gridRowIterator_1","onNewHeaderRow","onColumn","pinnedRowModel","forEachPinnedTopRow","processRow","getSelectedNodes","shouldSkipLowestGroup","shouldSkipCurrentGroup","rowAccumulator","onNewBodyRow","forEachPinnedBottomRow","addCustomFooter","directChildrenHeaderGroups","doAddHeaderHeader","gridRowIterator","onNewHeaderGroupingRow","columnIndex","EXPAND_STATE","SELECTED_STATE","CsvSerializingSession","lineOpened","suppressQuotes","columnSeparator","onNewHeaderGroupingRowColumn","header","putInQuotes","onNewHeaderRowColumn","onNewBodyRowColumn","stringValue","BaseCreator","export","isExportSuppressed","getMergedParamsAndData","mergedParams","fileName","getDefaultFileName","getDefaultFileExtension","downloader","download","packageFile","getData","mergeDefaultParams","gridSerializer","createSerializingSession","baseParams","Blob","msSaveOrOpenBlob","getMimeType","CsvCreator","exportDataAsCsv","getDataAsCsv","Downloader","url_1","URL","createObjectURL","bubbles","cancelable","view","revokeObjectURL","XmlFactory","createHeader","headerElement","encoding","standalone","headerStart","createXml","xmlElement","booleanTransformer","prefixedAttributes","prefixedSet","returnAttributeIfPopulated","rawMap","textNode","xmlValue","crcTable","ZipContainer","folders","files","addFolder","created","addFolders","paths","addFile","clearStream","getContent","mimeType","textOutput","buildFileStream","uInt8Output","buildUint8Array","fData","totalFiles","foData","lL","cL","totalFiles_1","currentFile","getHeader","fileHeader","folderHeader","buildFolderEnd","utfPath","isUTF8","time","convertTime","dt","convertDate","extraFields","uExtraFieldPath","getFromCrc32Table","tLen","cLen","lLen","uint8","Uint8Array","crc","getHours","getMinutes","getSeconds","CsvExportModule","AllCommunityModules","ClipboardService","registerGridCore","gridCore","pasteFromClipboard","executeOnTempElement","textArea","parsedData","dataToArray","removeLastLineIfBlank","doPasteOperation","cellsToFlash","updatedRowNodes","focusedCell","singleCellInClipboard","pasteIntoActiveRange","pasteStartingFromFocusedCell","pasteOperationFunc","onlyChangedColumns","getFocusedCell","dispatchFlashCells","fireRowChanged","clipboardData","abortRepeatingPasteIntoRows","rangeSize","indexOffset","dataRowIndex","iterateActiveRanges","currentRow","isLastRow","currentRowData","processCellFromClipboardFunc","userProcessCell","addParentNode","createIdFromValues","columnsToPasteInto","getDisplayedColumnsStartingAt","pasteSingleValue","pasteMultipleValues","lastLine","copyRangeDown","firstRowValues","firstRowValue","processCellForClipboardFunc","clipboardGridData","clipboardRowData","updateCellValue","cellNavigationService","getRowBelow","copyToClipboard","includeHeaders","selectedRowsToCopy","copySelectedRangeToClipboard","copySelectedRowsToClipboard","isAnyCellFocused","copyFocusedCellToClipboard","onlyFirst","rowCallback","columnCallback","iterateActiveRange","isLastRange","rangeIndex","deliminator","userProcessHeader","copyDataToClipboard","headerValue","csvCreator","userProvidedFunc","execCommand","callbackNow","callbackAfter","eTempInput","guiRoot","getRootGui","strData","arrMatches","objPattern","arrData","atFirstRow","strMatchedDelimiter","strMatchedValue","lastItem","startRangeIndex","endRangeIndex","ClipboardModule","dependantModules","PrimaryColsHeaderPanel","preConstruct","createExpandIcons","createCheckIcons","eExpand","eSelect","onSelectClicked","eFilterTextField","onFilterTextChanged","onMiniFilterKeyPress","showOrHideOptions","eExpandChecked","eExpandUnchecked","eExpandIndeterminate","eSelectChecked","eSelectUnchecked","eSelectIndeterminate","showFilter","suppressColumnFilter","showSelect","suppressColumnSelectAll","showExpand","suppressColumnExpandAll","groupsPresent","isPrimaryColumnGroupsPresent","eFilterWrapper","onFilterTextChangedDebounced","filterText","selectState","CHECKED","expandState","EXPANDED","setExpandState","COLLAPSED","INDETERMINATE","setSelectionState","UNCHECKED","ToolPanelColumnGroupComp","columnDept","allowDragging","expandedCallback","getFilterResults","processingColumnStateChange","getFilterResultsCallback","eDragHandle","cbSelect","getDisplayNameForOriginalColumnGroup","setupExpandContract","onColumnStateChanged","onLabelClicked","onCheckboxChanged","setOpenClosedIcons","setupDragging","addVisibilityListenersToAllChildren","addToolPanelClassesFromColDef","ToolPanel","createDragItem","eGroupClosedIcon","eGroupOpenedIcon","onExpandOrContractClicked","eColumnGroupIcons","onChangeCommon","childColumns","actionCheckedReduce","actionUnCheckedReduce","allowedColumns","filterResults_1","visibleColumns","setColumnsVisible","columnsToUnPivot","columnsToUnValue","columnsToUnGroup","removePivotColumns","removeRowGroupColumns","removeValueColumns","columnsToAggregate","columnsToGroup","columnsToPivot","addValueColumns","addRowGroupColumns","addPivotColumns","selectedValue","workOutSelectedValue","readOnlyValue","workOutReadOnlyValue","filterResults","hidden","ignoredChildCount","ignore","isColumnVisible","colsThatCanAction","pivoted","grouped","aggregated","folderOpen","onSelectAllChanged","isSelectable","ToolPanelColumnComp","groupsExist","actionCheckedPivotMode","actionUnCheckedPivotMode","setColumnVisible","functionPassive","copyOfPivotColumns","getPivotColumns","removePivotColumn","copyOfValueColumns","removeValueColumn","copyOfRowGroupColumns","removeRowGroupColumn","event_4","addValueColumn","event_5","addRowGroupColumn","event_6","addPivotColumn","checkboxReadOnly","anyFunctionActive","noFunctionsAllowed","checkboxPassive","PrimaryColsListPanel","selectAllChecked","getColumnCompId","childIds","suppressSyncLayoutWithGrid","onColumnsChanged","fireSelectionChangedEvent","expandGroupsByDefault","pivotModeActive","syncColumnLayout","buildTreeFromProvidedColumnDefs","colDefService","syncLayoutWithGrid","setColumnLayout","colDefs","destroyColumnComps","columnTree","createColumnTree","recursivelyAddComps","recursivelySetVisibility","getPrimaryColumnTree","tree","recursivelyAddGroupComps","addColumnComps","newDept","renderedGroup","onGroupExpanded","columnComps","columnComp","fireGroupExpandedEvent","doSetExpandedAll","renderedItem","setGroupsExpanded","groupIds","expandedGroupIds","suppliedGroupId","unrecognisedGroupIds","getExpandState","expandedCount","notExpandedCount","recursiveFunc","groupChildren","doSetSelectedAll","updateSelections","colsToChange","getPrimaryColumns","filteredCols_1","passesFilter","selectionState","getSelectionState","allPrimaryColumns","checkedCount","uncheckedCount","setFilterText","filterColumns","columnCompId","recursivelyCheckFilter","parentPasses","atLeastOneChildPassed","groupPasses_1","childPasses","filterPasses","parentGroupsOpen","childrenOpen","PivotModePanel","cbPivotMode","setLabel","onBtPivotMode","onPivotModeChanged","refreshHeader","AggregationStage","noValueColumns","noUserAgg","changedPathActive","aggDetails","createAggDetails","recursivelyCreateAggData","measureColumns","pivotColumns","notPivoting","aggregateRowNode","aggResult","measureColumnsMissing","pivotColumnsMissing","aggregateRowNodeUsingValuesOnly","aggregateRowNodeUsingValuesAndPivot","pivotColumnDefs","getPivotColumnDefs","pivotTotalColumnIds","valueColDef","pivotKeys","valueColumn","pivotValueColumn","getValuesFromMappedSet","getValuesPivotNonLeaf","aggregateValues","totalColDef","aggResults","changedValueColumns","getValueColumnsForNode","notChangedValueColumns","getNotValueColumnsForNode","values2d","getValuesNormal","oldValues","mappedSet","mapPointer","valueColumnCount","aggFuncOrString","aggFunction","aggFuncService","GroupStage","groupIdSequence","details","createGroupingDetails","handleTransaction","afterColsChanged","shotgunResetEverything","sortGroupsWithComparator","updateSelectableAfterGrouping","groupedCols","usingTransaction","includeParents","groupedColCount","insertNodes","moveNodesInWrongPath","removeNodes","sortChildren","recursiveSort","getExistingPathForNode","infoToKeyMapper","oldPath","newPath","getGroupInfo","moveNode","removeNodesInStages","insertOneNode","newParent","leafRowNodes","removeNodesFromParents","postRemoveCreateFillerNodes","postRemoveRemoveEmptyGroups","forEachParentGroup","nodesToRemove","batchRemover","BatchRemover","nodeToRemove","removeFromAllLeafChildren","newGroupNode_1","findParentForNode","checkAgain","mapKey","getChildrenMappedKey","groupShouldBeRemoved","removeFromChildrenAfterGroup","addToParent","areGroupColsEqual","d1","d2","skipStage","oldGroupingDetails","parentGroup","swapGroupWithUserNode","groupInfo","getOrCreateNextNode","fillerGroup","userGroup","rowGroupIndex","createGroup","getGroupInfoFromCallback","getGroupInfoFromGroupColumns","groupCol","getKeyForNode","allSets","allParents","getSet","nodeDetails","PivotColDefService","createPivotColumnDefs","uniqueValues","pivotColumnGroupDefs","levelsDeep","columnIdSequence","recursivelyAddGroup","addRowGroupTotals","addPivotTotalsToGroups","parentChildren","primaryPivotColumns","newPivotKeys","groupDef","valueGroup_1","colDef_1","createColDef","measureColumn","columnName","userComparator","pivotComparator","headerNameComparator","insertAfter","valueCols","valueCol","sameAggFuncs","recursivelyAddPivotTotal","grp","childColIds","extractColIdsForValueColumn","createRowGroupTotal","valueGroup","colDefToCopy","PivotStage","executePivotOn","executePivotOff","aggregationColumnsHashLastTime","isSecondaryColumnsPresent","setSecondaryColumns","bucketUpRowNodes","uniqueValuesChanged","setUniqueValues","aggregationColumns","aggregationColumnsHash","aggregationFuncsHash","aggregationColumnsChanged","aggregationFuncsChanged","aggregationFuncsHashLastTime","pivotColDefService","recursivelySearchForLeafNodes","bucketRowNode","bucketChildren","pivotIndex","mappedChildren","pivotColumn","AggFuncService","aggFuncsMap","AggFuncService_1","initialiseWithDefaultAggregations","addAggFuncs","AGG_SUM","aggSum","AGG_FIRST","aggFirst","AGG_LAST","aggLast","AGG_MIN","aggMin","AGG_MAX","aggMax","AGG_COUNT","aggCount","AGG_AVG","aggAvg","getDefaultAggFunc","getFuncNames","sumInKeysList","sumInFuncs","addAggFunc","userAllowedFuncs","allowedAggFuncs","itemIsGroupResult","stylesMap","registeredNumberFmts","registeredFonts","registeredFills","registeredBorders","registeredCellStyleXfs","registeredCellXfs","registeredCellStyles","DropZoneColumnComp","ghost","popupShowing","btRemove","setTextValue","setupRemove","onShowAggFuncSelection","EVENT_COLUMN_REMOVE","displayValue","aggFuncString","displayValueSanitised","virtualList","VirtualList","hidePopup","addAsModalPopup","setComponentCreator","createAggSelect","positionPopupUnderComponent","aggFuncStringTranslated","AggItemComp","setColumnAggFunc","itemSelected","BaseDropZonePanel","horizontal","STATE_NOT_DRAGGING","guiDestroyFunctions","childColumnComponents","eColumnDropList","destroyGui","refreshGui","setupDropTarget","checkInsertIndex","newIndex","getNewHorizontalInsertIndex","getNewVerticalInsertIndex","changed","insertIndex","goingLeft","mouseX","childColumn","rectX","checkDragStartedBySelf","STATE_REARRANGE_COLUMNS","potentialDndColumns","dragColumns","STATE_NEW_COLUMNS_IN","goodDragColumns","isColumnDroppable","isPotentialDndColumns","removeColumns","addColumns","rearrangeColumns","columnsToRemove","newColumnList","getExistingColumns","updateColumns","columnsToAdd","getNonGhostColumns","addIconAndTitleToGui","addEmptyMessageToGui","addColumnsToGui","existingColumns","nonGhostColumns","itemsToAddToGui","addingGhosts","columnComponent","createColumnComponent","addArrow","iconFaded","isExistingColumnsEmpty","icon","eTitle","title","emptyMessage","RowGroupDropZonePanel","passBeansUp","dragAndDropIcon","columnGroupable","columnNotAlreadyGrouped","setRowGroupColumns","PivotDropZonePanel","allowPivot","columnNotAlreadyPivoted","setPivotColumns","GridHeaderDropZones","createNorthPanel","topPanelGui","dropPanelVisibleListener","onDropPanelVisible","rowGroupComp","pivotComp","bothDisplayed","grouping","isRowGroupEmpty","ValuesDropZonePanel","columnValue","columnNotValue","setValueColumns","ColumnToolPanel","childDestroyFuncs","defaultParams","suppressSideButtons","suppressPivotMode","suppressRowGroups","suppressValues","suppressPivots","isRowGroupingModuleLoaded","pivotModePanel","primaryColsPanel","rowGroupDropZonePanel","valuesDropZonePanel","pivotDropZonePanel","setLastVisible","setPivotModeSectionVisible","setRowGroupsSectionVisible","setValuesSectionVisible","setPivotSectionVisible","columnDrop","lastVisible","expandColumnGroups","expandGroups","collapseColumnGroups","collapseGroups","destroyChildren","PrimaryColsPanel","primaryColsHeaderPanel","hideFilter","hideSelect","primaryColsListPanel","onSelectionChange","onExpandAll","onCollapseAll","onSelectAll","onUnselectAll","HorizontalResizeComp","setElementToResize","elementToResize","setInverted","startingWidth","SideBarButtonsComp","buttonComps","setToolPanelDefs","toolPanelDefs","addButtonComp","setActiveButton","getToolPanelId","buttonComp","SideBarButtonComp","EVENT_TOGGLE_BUTTON_CLICKED","EVENT_SIDE_BAR_BUTTON_CLICKED","toolPanelId","clearButtons","eToggleButton","iconKey","onButtonPressed","labelKey","labelDefault","ToolPanelWrapper","setToolPanelDef","setToolPanelComponent","resizeBar","toolPanelCompInstance","getToolPanelInstance","setResizerSizerSide","SideBarComp","toolPanelWrappers","sideBarButtonsComp","onToolPanelButtonClicked","setSideBarDef","openedItem","openToolPanel","clearDownUi","destroyToolPanelWrappers","sideBarExists","shouldDisplaySideBar","hiddenByDefault","setupToolPanels","setSideBarPosition","defaultToolPanel","resizerSide","defs","toolPanel","ColumnToolPanelModule","FiltersToolPanelModule","currentlyOpenedKey","raiseToolPanelVisibleEvent","toolPanelWrapper","isToolPanelShowing","activeToolPanel","ToolPanelColDefService","isColGroupDef","invalidColIds","mappedResults","createDummyColGroup","abstractColDef","children_1","syncLayoutCallback","leafPathTrees","getLeafPathTrees","mergeLeafPathTrees","getAllGridColumns","getLeafPathTree","childDef","leafPathTree","pathA","pathB","mergeTrees","treeA","treeB","mergeResult","groupToMerge","addChildrenToGroup","mergeColDefs","currentGroup","groupToAdd","existingChildIds","childGroupAlreadyExists","lastChildIsDifferent","subGroupIsSplit","subGroup","SideBarModule","ColumnsToolPanelModule","userComponents","coreFactory","jsonDate","cp","dc","dcterms","dcmitype","xsi","contentTypeFactory","ContentType","Extension","PartName","contentTypesFactory","xmlns","getColorChildren","lastClr","colorScheme","getFont","typeface","script","panose","fontScheme","getPropertyVal","getGs","schemeColor","satMod","lumMod","tint","shade","getSolidFill","getGradFill","rotWithShape","gs1","gs2","gs3","lin","ang","scaled","getLine","cap","cmpd","algn","lim","getEffectStyle","shadow","blurRad","dist","formatScheme","themeElements","officeTheme","buildSharedString","sharedStrings","uniqueCount","numberFormatFactory","numberFormat","formatCode","numFmtId","numberFormatMap","numberFormatsFactory","numberFormats","fontFactory","font","colorTheme","_c","family","scheme","italic","bold","strike","underline","lUnder","fontsFactory","fonts","fillFactory","fill","patternType","fgTheme","fgTint","fgRgb","bgRgb","bgIndexed","pf","fillsFactory","fills","getBorderColor","convertLegacyColor","borderFactory","diagonal","leftChildren","rightChildren","topChildren","bottomChildren","diagonalChildren","mappedNames","None","Dot","Dash","Double","DashDot","DashDotDot","SlantDashDot","mediumBorders","convertLegacyBorder","namedWeight","mappedName","bordersFactory","convertLegacyHorizontalAlignment","alignment","Automatic","Center","Fill","Justify","CenterAcrossSelection","Distributed","JustifyDistributed","convertLegacyVerticalAlignment","Top","Bottom","getReadingOrderId","readingOrder","alignmentFactory","rotate","shrinkToFit","vertical","wrapText","textRotation","protectionFactory","protection","locked","protected","hideFormula","xfFactory","xf","borderId","fillId","fontId","xfId","applyAlignment","applyProtection","applyBorder","applyFont","applyNumberFormat","cellStylesXfsFactory","cellXfsFactory","builtinId","cellStylesFactory","cellStyles","cellStyleFactory","resetStylesheetValues","registerFont","fontName","strikeThrough","utf8Name","convertedColor","familyId","getFamilyId","currentFont","registerStyle","interior","currentFill","currentBorder","currentNumberFmt","convertedPattern","Solid","Gray50","Gray75","Gray25","HorzStripe","VertStripe","ReverseDiagStripe","DiagStripe","DiagCross","ThickDiagCross","ThinHorzStripe","ThinVertStripe","ThinReverseDiagStripe","ThinDiagStripe","ThinHorzCross","ThinDiagCross","Gray125","Gray0625","convertedFillColor","convertedPatternColor","patternColor","registerFill","bottomStyle","topStyle","leftStyle","rightStyle","bottomColor","topColor","leftColor","rightColor","borderBottom","borderTop","borderLeft","borderRight","lineStyle","clS","clC","crS","crC","ctS","ctC","cbS","cbC","registerBorders","currentFormat","registerNumberFmt","stylesheetFactory","cellStylesXfs","cellXfs","defaultPivotStyle","defaultTableStyle","sheetFactory","sheetId","sheetsFactory","workbookFactory","columnFactory","bestFit","excelWidth","getExcelCellWidth","customWidth","cellFactory","styleId","convertedType","convertLegacyType","rowFactory","collapsed","mergeMap","posCounter","cell","mergeAcross","excelPos","mergedCells","getExcelColumnName","addEmptyCells","ht","customHeight","customFormat","mergeCell","getMergedCells","lastCol","merges","currentCell","cellIdx","outputRow","prevCol","currentMin","updateColMinMax","colIdx","tableIdx","worksheetFactory","table","relationshipFactory","Id","Type","Target","relationshipsFactory","ExcelXlsxFactory","createSharedStrings","createXmlPart","sharedStringsFactory","xmlFactory","createExcel","worksheets","sheetNames","worksheet","registerStyles","createWorksheet","createCore","createContentTypes","createRels","rs","createStylesheet","createTheme","officeThemeFactory","createWorkbook","createWorkbookRels","workbook","ss","html","excelWorkbook","Width","MergeAcross","StyleID","ws","documentProperties","styleProperties","Vertical","Horizontal","Indent","ReadingOrder","Rotate","ShrinkToFit","VerticalText","verticalText","WrapText","Position","LineStyle","Weight","Bold","FontName","Italic","Outline","Shadow","Size","StrikeThrough","Underline","VerticalAlign","CharSet","charSet","Family","Pattern","PatternColor","Protected","HideFormula","Format","ID","ExcelXmlFactory","excelXmlHeader","docProps","eWorkbook","wb","boolean","docProperties","stylesXmlElement","styleXmlElement","addProperty","ExcelXmlSerializingSession","mixedStyles","mixedStyleCounter","sheetName","excelFactory","baseExcelStyles","styleLinker","suppressTextAsCDATA","headerRowHeight","stylesByIds","excelStyles","currentCells","styleIds","HEADER_GROUPING","createMergedCell","onNewRow","onNewHeaderColumn","onNewBodyColumn","onNewColumnAccumulator","HEADER","createCell","rowArray","excelStyleId","BODY","addNewMixedStyle","excelID","excelId","resultantStyle","excelStyle","styleExists","actualStyle","typeTransformed","dataType","convertBoolean","numOfCells","ExcelXlsxSerializingSession","stringList","stringMap","getStringPosition","ExcelCreator","exportDataAsExcel","exportMode","setExportMode","getDataAsExcelXml","getExportMode","isXlsx","xlsxFactory","excelXmlFactory","rowType","colIndex","applicableStyles","processAllCellClasses","zipContainer","ExcelExportModule","FiltersToolPanelHeaderPanel","eSearchTextField","onSearchTextChanged","showFilterSearch","suppressFilterSearch","suppressExpandAll","filterGroupsPresent","onSearchTextChangedDebounced","searchText","currentExpandState","ToolPanelFilterComp","hideHeader","setColumn","eFilterName","eFilterToolPanelHeader","toggleExpanded","onFilterOpened","eFilterIcon","getColumnFilterName","collapse","filterPromise","getOrCreateFilterWrapper","underlyingFilter","agFilterToolPanelBody","refreshFilter","refreshVirtualList","ToolPanelFilterGroupComp","childFilterComps","setGroupTitle","filterGroupComp","setAlignItems","filterComp","addItem","isColumnGroup","addTopLevelColumnGroupExpandListener","addFilterChangedListeners","refreshFilters","getFilterGroupName","filterGroupName","getFilterGroupId","hideGroupItem","hideItem","hideGroup","group_1","column_1","toggleGroupExpand","getColumnGroupName","getColumnName","setTitle","destroyFilters","FiltersToolPanelListPanel","filterGroupComps","syncFilterLayout","toolPanelColDefService","setFiltersLayout","setFirstAndLastVisible","searchFilterText","searchFilters","fireExpandedEvent","recursivelyAddFilterGroupComps","shouldDisplayFilter","filtersExistInChildren","suppressFiltersToolPanel","newDepth","expandFilterGroups","updatedGroupIds","updateGroupExpandState","filterGroup","expandFilters","updatedColIds","anyChildrenChanged_1","updateFilterExpandState","unrecognisedColIds","updateExpandCounts","performFilterSearch","searchFilter","firstVisible","recursivelySearch","filterItem","groupNamePasses","alreadyPassed","anyChildPasses","firstIdx","lastIdx","FiltersToolPanel","filtersToolPanelHeaderPanel","filtersToolPanelListPanel","hideExpand","hideSearch","onSearchChanged","setFilterLayout","collapseFilterGroups","collapseFilters","ln","numericExtent","calculatedExtent","extent","sumPositiveValues","total","PointerEvents","ChartDatasource","extractRowsFromGridRowModel","aggregateRowsByDimension","extractedRowData","columnNames","groupNodeIndexes","groupsToRemove","modelLastRow","gridRowModel","numRows","dimensionCols","valueObject","valueString","labels","getGroupLabels","multiCategories","groupKey","ChartModel","DEFAULT_CATEGORY","columnNamesArr","groupIndexesToRemove_1","dataFromGrid","lastColId","dataAggregated","currentMap","groupItem_1","__children","groupItem","dataToAgg","initialLabel","dimensionColState","valueColState","initialising","detached","isPivotChart","pivotChart","getChartProxy","chartProxy","getChartId","chartId","getValueColState","displayNameMapper","getDimensionColState","getChartType","chartType","getActivePalette","activePalette","getPalettes","palettes","isSuppressChartRanges","suppressChartRanges","isDetached","getSelectedValueColState","cs","getSelectedValueCols","getSelectedDimension","getAllColumnsFromRanges","getColDisplayName","isMultiCategoryChart","ChartType","Pie","Doughnut","Scatter","Bubble","referenceCellRange","getRowIndexes","selectedDimension","selectedValueCols","isGrouping","pivoting","chartData","resetColumnState","getAllChartColumns","allCols","dimensionsInCellRange","selectedDimensionId_1","defaultCategory","updateColumnState","updatedCol","idsMatch","isDimensionCol","isValueCol","updateCellRanges","updatingStartCol","startColumn","allColsFromRanges","dimensionColsInRange","addRange","valueColsInRange","getColumnInDisplayOrder","VALUE","setChartType","isCurrentMultiCategory","groupActive","groupCols","groupDimensionSelected","setChartProxy","setActivePalette","toggleDetached","allDisplayedColumns","newRange","displayedCols","chartDataType","isNumberCol","cellData","extractAggregateValue","extractLeafData","aggDatum","ChartController","chartModel","updateForGridChange","setChartRange","raiseChartUpdatedEvent","updateForMenuChange","setChartWithPalette","getColStateForMenu","isDefaultCategorySelected","setCellRanges","detachChartRange","isActiveXYChart","EVENT_CHART_MODEL_UPDATED","ChartDataPanel","chartController","addPanels","clearComponents","currentChartType","getSeriesLabel_1","generateGetSeriesLabel","createCategoriesGroupComponent","createSeriesGroupComponent","eDiv","columnState","categoriesGroupComp","AgGroupComponent","getCategoryGroupTitle","enabled","suppressEnabledCheckbox","suppressOpenCloseIcons","inputName","AgRadioButton","seriesGroupComp","getSeriesGroupTitle","getSeriesLabel","isBubble","activeSeriesCount","escapedLabel","chartTranslator","FontPanel","activeComps","initGroup","initFontFamilySelect","initFontWeightStyleSelect","initFontSizeSelect","initFontColorPicker","addCompToPanel","fontGroup","setEnabled","hideEnabledCheckbox","hideOpenCloseIcons","onEnableChange","families","initialFont","initialValue","valueIndex","capitalisedFontValue","familySelect","addOptions","setFont","sizeSelect","weightStyles","weightStyleSelect","selectedWeightStyle","newColor","destroyActiveComps","LegendPanel","activePanels","initLegendGroup","initLegendPosition","initLegendPadding","initLegendItems","initLabelPanel","legendGroup","getChartOption","setChartOption","legendPositionSelect","setLabelWidth","legendPaddingSlider","setTextFieldWidth","setMaxValue","initSlider","maxValue","markerSizeSlider","markerStrokeSlider","markerPaddingSlider","itemPaddingXSlider","itemPaddingYSlider","fontPanelComp","destroyActivePanels","panel","ShadowPanel","shadowBlurSlider","shadowXOffsetSlider","shadowYOffsetSlider","initSeriesShadow","shadowGroup","getShadowEnabled","setShadowProperty","shadowColorPicker","initInput","minValue","getShadowProperty","setMinValue","BarSeriesPanel","seriesGroup","initSeriesTooltips","initSeriesStrokeWidth","initOpacity","initShadowPanel","seriesTooltipsToggle","setLabelAlignment","getSeriesOption","setSeriesOption","seriesStrokeWidthSlider","seriesLineOpacitySlider","setStep","seriesFillOpacitySlider","labelPanelComp","shadowPanelComp","AxisTicksPanel","initAxisTicks","axisTicksGroup","axisTicksColorPicker","getAxisProperty","setAxisProperty","axisTicksWidthSlider","axisTicksSizeSlider","AxisPanel","initAxis","initAxisLabels","axisGroup","axisColorInput","axisLineWidthSlider","axisTicksComp","getChart","performLayout","addAdditionalLabelComps","createAngleComp","updateFunc","rotationInput","AgAngleSelect","degreesSymbol","labelPaddingSlider","AgSlider","HdpiCanvas","_parent","_pixelRatio","tempCanvas","updatePixelRatio","resize","_height","_canvas","toImage","img","toDataURL","dataUrl","binary","atob","blob","click","ratio","pixelRatio","devicePixelRatio","canvas","ctx","overrides","makeHdpiOverrides","name_1","logicalWidth","logicalHeight","resetTransform","tempContext","drawImage","_textMeasuringContext","_svgText","svg","createElementNS","svgText","_has","textMetrics","textMeasuringContext","measureText","actualBoundingBoxDescent","getTransform","flicker","textBaseline","getTextSize","metrics","actualBoundingBoxAscent","measureSvgText","textSizeCache","fontCache","size_1","bbox","getBBox","$save","$restore","setTransform","$setTransform","Scene","_dirty","animationFrameId","_frameIndex","_renderFrameIndex","clearRect","renderFrameIndex","fillStyle","fillRect","fillText","frameIndex","dirty","cancelRender","cancelAnimationFrame","_setScene","scene","appendPath","commands","beginPath","moveTo","lineTo","bezierCurveTo","closePath","BBox","dilate","containsPoint","noParams","strokeStyle","lineWidth","strokeRect","Matrix","elements","setElements","setIdentityElements","AxB","m11","m12","m21","m22","m31","m32","o11","o12","o21","o22","o31","o32","multiplySelf","multiply","preMultiplySelf","inverse","rD","inverseTo","invertSelf","transformPoint","transformBBox","radius","xx","xy","yx","yy","h_w","h_h","cy","sx","sqrt","sy","toContext","identity","flyweight","matrix","isContainerNode","_children","childSet","inverseMatrix","_dirtyTransform","_scalingX","_scalingY","_scalingCenterX","_scalingCenterY","_rotationCenterX","_rotationCenterY","_rotation","_translationX","_translationY","_visible","All","_scene","_setParent","countChildren","MAX_SAFE_INTEGER","append","dirtyTransform","rotation","PI","isPointInNode","pickNode","hit","getBBoxCenter","computeTransformMatrix","scx","scy","bbcx","bbcy","scalingX","scalingY","scalingCenterX","scalingCenterY","rcx","rcy","cos","sin","rotationCenterX","rotationCenterY","tx","translationX","ty","translationY","tx4","ty4","parent_1","Padding","chainObjects","Shape","_fillOpacity","_strokeOpacity","_fill","_stroke","stroke","_strokeWidth","_lineDash","lineDash","_lineDashOffset","lineDashOffset","_lineCap","lineCap","_lineJoin","lineJoin","_opacity","_fillShadow","fillShadow","_strokeShadow","strokeShadow","restoreOwnStyles","restoreAllStyles","restoreOverriddenStyles","protoStyles","identical","fillStroke","globalAlpha","shadowColor","shadowOffsetX","xOffset","shadowOffsetY","yOffset","shadowBlur","setLineDash","isPointInPath","cubicRoots","linearRoot","roots","t1","t2","quadraticRoots","Im","t_1","theta","acos","thirdA","twoSqrtQ","t3","segmentIntersection","ax1","ay1","ax2","ay2","bx1","by1","bx2","by2","ub","cubicSegmentIntersections","px1","py1","px2","py2","px3","py3","px4","py4","x1","y1","x2","y2","intersections","bx","bezierCoefficients","tt","ttt","P1","P2","P3","P4","RectSizing","Path2D","_closedPath","arcTo","rx","ry","fA","fS","hdx","hdy","sinPhi","cosPhi","xp","yp","ratX","ratY","lambda","cpx","cpy","theta1","atan2","deltaTheta","cubicArc","arcToAlt","x1p","y1p","rx_y1p","ry_x1p","rootSign","cxp","phi","theta2","anticlockwise","temp","f90","sinTheta1","cosTheta1","rightAngle","lastX","sinPhi2","cosPhi2","C2x","C2y","deCasteljau","points","newPoints","approximateCurve","xy_1","quadraticCurveTo","cubicCurveTo","cx1","cy1","cx2","cy2","cn","ox","oy","px","py","intersectionCount","ci","pi","setFromString","parseSvgPath","splitCommandsRe","strParams","matchParamsRe","command","prettifySvgPath","lastCommand","checkQuadraticCP","quadraticCommandRe","checkCubicCP","cubicCommandRe","toPrettyString","toSvg","xmlDeclaration","toDebugSvg","toCubicPaths","cubicPathToString","Path","_dirtyPath","_svgPath","point","closedPath","isPointInStroke","updatePath","dirtyPath","Orientation","Rect","_x","_y","_radius","_crisp","effectiveStrokeWidth","_sizing","Content","crisp","sizing","Border","borderSizing","halfWidth","halfHeight","EnterNode","datum","Selection","Class","appendFn","creator","numGroups","subgroups","groupSize","subgroup","subnode","selectByClass","selectByTag","selectAllByClass","selectAllByTag","selectNone","selectorAll","groupCount","groupLength","each","groups0","groups1","m0","m1","group0","group1","attrFn","enterGroups","exitGroups","setDatum","data_1","updateGroups","parent_2","dataSize","enterGroup","updateGroup","exitGroup","bindKey","bindIndex","i0","i1","nodeByKeyValue","keyValue","keyPrefix","Text","lineBreakRegex","lines","_text","_dirtyFont","_fontSize","_fontFamily","_textAlign","_textBaseline","_lineHeight","splitText","dirtyFont","_font","fontStyle","fontFamily","_fontStyle","_fontWeight","getPreciseBBox","getApproximateBBox","actualBoundingBoxLeft","strokeText","MarkerLabel","_markerSize","defaults","markerSize","_padding","labelFontStyle","labelFontWeight","labelFontSize","labelFontFamily","labelColor","labelFont","Legend","itemSelection","_size","_data","_enabled","_orientation","_position","_itemPaddingX","_itemPaddingY","_markerPadding","_labelColor","_labelFontStyle","_labelFontWeight","_labelFontSize","_labelFontFamily","_markerStrokeWidth","requestLayout","orientation","onPositionChange","onLayoutChange","updateSelection","enterSelection","itemCount","itemPaddingX","itemPaddingY","bboxes","markerLabel","labelText","markerPadding","itemHeight","columnWidth","paddedItemsWidth","paddedItemsHeight","itemsWidth","itemsHeight","columnCount_1","startX","startY","markerFill","markerStroke","markerStrokeWidth","datumForPoint","Chart","legend","legendAutoPadding","captionAutoPadding","tooltipOffset","defaultTooltipClass","layoutPending","onLegendPositionChange","_title","_subtitle","_series","layoutCallbackId","_performLayout","onLayoutDone","dataCallbackId","_processData","processData","offsetX","offsetY","pick","pickSeriesNode","lastPick","series","tooltipEnabled","showTooltip","onSeriesNodePick","dehighlightNode","hideTooltip","toggleTooltip","id_1","itemId","toggleSeriesItem","_tooltipClass","tooltipElement","tooltipClass","setupListeners","tooltipParent","cleanupListeners","oldTitle","oldSubtitle","addSeries","allSeries","seriesRoot","beforeIndex","dataPending","addSeriesAfter","afterIndex","removeSeries","removeAllSeries","legendData","showInLegend","listSeriesItems","positionCaptions","subtitle","titleVisible","subtitleVisible","bbox_1","positionLegend","legendBBox","legendPadding","chartElement","highlightNode","getTooltipHtml","tooltipRect","BandScale","ordinalRange","_domain","_range","_bandwidth","_paddingInner","_paddingOuter","_round","_align","domain","rescale","ticks","convert","reversed","Line","_x1","_y1","_x2","_y2","rawStep","LN10","e10","e5","tickStep","absStep","NumericTicks","tickIncrement","power","twoPi","normalizeAngle360","radians","toRadians","degrees","epsilon","fractionOrSignificantDigits","ArcType","Tags","Arc","_centerX","_centerY","_radiusX","_radiusY","_startAngle","_endAngle","_counterClockwise","Open","centerX","radiusX","centerY","radiusY","startAngle","endAngle","counterClockwise","Chord","Round","fullPie","AxisTick","FormattableAxisTick","_format","onFormatChange","AxisLabel","mirrored","parallel","Axis","scale","lineNode","_gridLength","_gridStyle","_radialGrid","groupSelection","onTickFormatChange","tickFormat","tickFormatter","parallelLabels","labelRotation","bandwidth","sideFlag","parallelFlipRotation","parallelFlipFlag","regularFlipRotation","regularFlipFlag","alignFlag","Tick","gridLength","radialGrid","GridLine","styles_1","gridStyle","styleCount_1","gridLines","angularGridLength_1","arc","gridLine","labelSelection","labelX","autoRotation","titleNode","titleRotationFlag","includeTitle","labelBBox","CategoryAxis","paddingInner","paddingOuter","TreeNode","subtreeLeft","subtreeRight","screenX","screenY","leafCount","prelim","mod","ancestor","getLeftSibling","getLeftmostSibling","nextLeft","thread","nextRight","getSiblings","ticksToTree","pad","pathParts","lastPartIndex","pathPart","partIndex","isNotLeaf","insertTick","moveSubtree","wm","wp","vim","defaultAncestor","firstWalk","distance","defaultAncestor_1","vop","vip","vom","sip","sop","sim","som","apportion","executeShifts","midpoint","leftSibling","Dimensions","treeLayout","layout","TreeLayout","secondWalk","thirdWalk","dimensions","leafNodes","nonLeafNodes","shiftX","shiftY","flipX","xSteps","ySteps","existingSpacingX","existingSpacingY","screenDimensions","CartesianChartLayout","GroupedCategoryAxisLabel","grid","GroupedCategoryAxis","tickScale","gridLineSelection","axisLineSelection","separatorSelection","tickTree","tickTreeLayout","resizeTickTree","rangeStart","rangeEnd","treeLabels","isLabelTree","updateGridLines","enterGridLines","updateLabels","enterLabels","labelFormatter","maxLeafLabelWidth","labelGrid","separatorData","minX","updateSeparators","enterSeparators","lineCount","updateAxisLines","enterAxisLines","CartesianChart","axisAutoPadding","_seriesRoot","_layout","xAxis","yAxis","_xAxis","_yAxis","shrinkRect","updateAxes","xDomains","yDomains","getDomainX","getDomainY","xDomain","yDomain","xAxisBBox","yAxisBBox","axisThickness","PolarChart","ascending","msA","msB","setTime","nb","clamper","ContinuousScale","unknown","_clamp","untransform","_interpolate","interpolateValue","setDomain","getDomain","piecewise","polymap","bimap","interpolate","xt","x0","y0","tr","lo","hi","mid","bisectRight","invert","interpolateNumber","borneo","strokes","SeriesMarker","_minSize","onTypeChange","Series","_showInLegend","scheduleData","scheduleLayout","LineSeries","domainX","domainY","xData","yData","_xKey","_xName","_yKey","_yName","highlightStyle","onMarkerTypeChange","_chart","xKey","yKey","isContinuousX","min_1","max_1","highlightedNode","xScale","yScale","linePath","groupSelectionData","xDatum","yDatum","seriesDatum","highlightFill","highlightStroke","nodeDatum","xName","yName","tooltipRenderer","titleString","xValue","yValue","LinearScale","nice","scaleLinear","BarSeriesNodeTag","ScatterSeries","sizeData","sizeScale","linearScale","sizeName","labelName","_sizeKey","_labelKey","sizeKey","calculateDomain","minSize","titleHtml","contentHtml","_color","NumberAxis","_nice","PieSeriesNodeTag","BarSeriesLabel","_formatter","BarSeries","rectGroup","textGroup","rectSelection","textSelection","yKeyEnabled","_fills","_strokes","groupScale","_yKeys","_yNames","_grouped","_normalizedTo","absValue","_shadow","yKeys","ySums","normalizedTo","yMin","yMax","stackValues","selectionData","generateSelectionData","updateRectSelection","updateTextSelection","flipXY","barWidth","category","barX","bottomY","yValueIsNumber","updateRects","enterRects","Bar","labelEnabled","updateTexts","enterTexts","yNames","yKeyIndex","fills_1","strokes_1","enabledYKeys","AreaSeries","areaGroup","strokeGroup","markerGroup","areaSelection","strokeSelection","markerSelection","areaSelectionData","markerSelectionData","updateAreaSelection","updateStrokeSelection","updateMarkerSelection","areaPoints","updateAreas","enterAreas","updateStrokes","enterStrokes","updateMarkers","enterMarkers","Sector","_centerOffset","_innerRadius","_outerRadius","_angleOffset","outerRadius","angleOffset","midAngle","innerRadius","centerOffset","SetFilterModelValuesType","PieSeriesLabel","_offset","_minAngle","onDataChange","PieSeries","radiusScale","angleScale","angle","dataEnabled","_calloutColors","_calloutStrokeWidth","_calloutLength","_labelOffset","_angleKey","_angleName","_outerRadiusOffset","_innerRadiusOffset","_radiusKey","_radiusName","_labelName","calloutColors","angleData","angleKey","angleDataTotal","angleDataRatios","labelData","radiusKey","useRadiusKey","innerRadiusOffset","radiusData","radii","maxDatum_1","halfPi","datumIndex","midCos","midSin","labelMinAngle","minAngle","labelVisible","midAngle180","quadrantStart","outerRadiusOffset","Callout","minOuterRadius","outerRadii","centerOffsets","sector","calloutLength","calloutStrokeWidth","offset_1","fontStyle_1","fontWeight_1","fontSize_1","fontFamily_1","color_1","labelRadius","angleName","radiusName","DropShadow","_xOffset","_yOffset","_blur","Caption","GroupedCategoryChart","isNumericXAxis","Circle","ChartBuilder","createCartesianChart","createGroupedCategoryChart","createBarChart","createNumberAxis","createCategoryAxis","initChart","initBarSeries","createColumnChart","createLineChart","initLineSeries","createScatterChart","initScatterSeries","createAreaChart","initAreaSeries","createPolarChart","createDoughnutChart","createPieChart","initPieSeries","createGroupedColumnChart","createGroupedAxis","createGroupedBarChart","createGroupedLineChart","createGroupedAreaChart","createSeries","setValueIfExists","setTransformedValueIfExists","createTitle","createSubtitle","initLegend","initSeries","initMarker","initLabelOptions","createDropShadow","createPieTitle","callout","minRequiredAngle","paddingX","paddingY","setDefaultFontOptions","createCaption","populateAxisProperties","ChartProxy","chartProxyParams","isDarkTheme","getLabelColor","getAxisGridColor","getBackgroundColor","getChartPaddingOption","chartOptions","initChartOptions","getDefaultOptions","overriddenOptions","overridePalette","getSelectedPalette","defaultFills","defaultStrokes","seriesDefaults","fillsOverridden","strokesOverridden","overriddenPalette","raiseChartOptionsChangedEvent","mappings","setTitleOption","setChartPaddingOption","getDefaultFontOptions","getDefaultDropShadowOptions","getDefaultChartOptions","CartesianChartProxy","updateLabelRotation","categoryId","isHorizontalChart","axisKey","getDefaultAxisOptions","fontOptions","getDefaultCartesianChartOptions","ScatterChartProxy","getMarkersEnabled","isBubbleChart","yFields","fieldIds","defaultCategorySelected","seriesOptions","xFieldDefinition","labelFieldDefinition","existingSeriesById","yFieldDefinition","existingSeries","radiusFieldDefinition","getTooltipsEnabled","MarkersPanel","initMarkers","shouldHideEnabledCheckbox","seriesMarkersGroup","seriesMarkerMinSizeSlider","seriesMarkerSizeSlider","seriesMarkerStrokeWidthSlider","LineSeriesPanel","initSeriesGroup","initSeriesLineWidth","initMarkersPanel","seriesLineWidthSlider","markersPanelComp","CalloutPanel","initCalloutOptions","calloutGroup","calloutLengthSlider","calloutStrokeWidthSlider","labelOffsetSlider","PieSeriesPanel","calloutPanelComp","PaddingPanel","initChartPaddingItems","chartPaddingGroup","paddingTopSlider","paddingRightSlider","paddingBottomSlider","paddingLeftSlider","ChartPanel","initTitles","initPaddingPanel","chartGroup","titleInput","paddingPanelComp","AreaSeriesPanel","ScatterSeriesPanel","ChartFormattingPanel","panels","createPanels","destroyPanels","GroupedColumn","StackedColumn","NormalizedColumn","GroupedBar","StackedBar","NormalizedBar","Area","StackedArea","NormalizedArea","MiniChart","tooltipName","MiniChartWithAxes","axisOvershoot","addAxes","leftAxis","bottomAxis","MiniColumn","bars","updateColors","bar","MiniStackedColumn","yScaleDomain","MiniNormalizedColumn","MiniBar","MiniStackedBar","xScaleDomain","MiniNormalizedBar","MiniDoughnut","centerRadiusScaler","angles","sectors","MiniPie","ClipRect","_active","clip","MiniLine","clipRect","MiniScatter","MiniBubble","MiniArea","pathData","areas","area","MiniStackedArea","MiniNormalizedArea","MiniChartsContainer","wrappers","chartGroups","barGroup","pieGroup","lineGroup","scatterGroup","groupComponent","MiniClass","miniWrapper","refreshSelected","ChartSettingsPanel","miniCharts","cardItems","miniChartsContainer","eMiniChartsContainer","addCardLink","ePrevBtn","eNextBtn","isAnimating","eCardSelector","getPrev","getNext","currentPalette","currentGui_1","futurePalette","futureGui_1","multiplier","final_1","miniChart","TabbedChartMenu","tabs","chartIcons","controller","panelType","createTab","getPanelClass","tab","tabbedLayout","TabbedLayout","ChildClass","eWrapperDiv","titleEl","bodyPromise","getMinDimensions","updateCurrentChartType","showTab","tabItem","showItem","TAB_DATA","TAB_FORMAT","EVENT_TAB_SELECTED","TAB_MAIN","ChartMenu","chartSettings","chartFormat","chartUnlink","chartDownload","saveChart","createButtons","getToolbarOptions","tabOptions","toolbarItemsFunc","defaultItems","ignoreOptions","buttonConfig","buttonEl","EVENT_DOWNLOAD_CHART","createMenu","defaultTab","chartComp","dockedContainer","getDockedContainer","menuPanel","closable","hideTitleBar","tabbedMenu","getCurrentChartType","setBodyComponent","getChartComponentsWrapper","hideMenu","slideDockedContainer","slideDockedOut","tabName","slideDockedIn","BarChartProxy","builderFunction","isColumnChart","barSeries","getSeriesDefaults","isGrouped","isNormalized","AreaChartProxy","setAxisPadding","areaSeries","updateAreaChart","previousSeries","LineChartProxy","lineSeries","PolarChartProxy","PieChartProxy","existingSeriesId","pieSeriesField","pieSeries","DoughnutChartProxy","doughnutChart","seriesMap","GridChartComp","eChartComponentsWrapper","eDockedContainer","modelParams","cellRange","createChart","insideDialog","addDialog","addResizeListener","addMenu","setActiveChartCellRange","chartMenu","downloadChart","eChart","processChartOptionsFunc","categorySelected","isThemeDark","currentChartGroupingActive","createChartProxy","chartDialog","centered","shouldRecreateChart","updateChart","chartTypeChanged","groupingChanged","paletteChanged","handleEmptyChart","chartUpdateParams","pivotModeDisabled","minFieldsRequired","isEmptyChart","eEmpty","refreshCanvasSize","eChartWrapper","observeResizeFunc","resizeObserverService","observeResize","focusEvent","ChartService","activeCharts","createChartFromCurrentRange","selectedRange","getSelectedRange","createRangeChart","createCellRangeFromCellRangeParams","chartContainer","createPivotChart","chartAllRangeParams","createChartContainerFunc","chartRef","createChartRef","destroyChart","destroyAllActiveCharts","ChartTranslator","ChartTranslator_1","pivotChartTitle","rangeChartTitle","settings","categories","xyValues","thickness","xRotation","yRotation","maxSize","tooltips","offsets","markers","boldItalic","predefined","groupedColumnTooltip","stackedColumnTooltip","normalizedColumnTooltip","groupedBarTooltip","stackedBarTooltip","normalizedBarTooltip","pieTooltip","doughnutTooltip","lineTooltip","groupedAreaTooltip","stackedAreaTooltip","normalizedAreaTooltip","scatterTooltip","bubbleTooltip","pivotChartRequiresPivotMode","noDataToChart","RangeController","bodyScrollListener","onBodyScroll","registerGridComp","autoScrollService","AutoScrollService","removeAllCellRanges","refreshLastRangeStart","onColumnVisibleChange","beforeCols","onRangeChanged","started","refreshRangeStart","rangeColumns","allPositions","getPinnedTopRowCount","pinnedBottomRowCount","getPinnedBottomRowCount","appendRange","calculateColumnsBetween","existingRange","rowForCell","newestRangeStartCell","updateRangeEnd","beforeEndRow","endColumn","colsToAdd","colsChanged","endRowChanged","moveColInCellRange","colToMove","moveToFront","otherCols","getRangeEdgeColumns","allIndices","startCell","firstCol","endCellIndex","endCellFloating","newEndCell","getNextCellToFocus","setCellRange","rowStartIndex","rowStartPinned","rowEndIndex","rowEndPinned","columnStart","columnEnd","addCellRange","getColumnWithValidation","lastMouseEvent","columnInRange","rowInRange","isRowInRange","matchingCount","floating","thisRow","equalsFirstRow","equalsLastRow","afterFirstRow","beforeLastRow","getDraggingRange","draggingRange","multiKeyPressed","mouseCell","mouseEventService","getCellPositionForEvent","draggingCell","mouseRowPosition","addScrollEventListener","mouseAndStartInPinnedTop","mouseAndStartInPinnedBottom","skipVerticalScroll","ensureCleared","removeScrollEventListener","dispatchChangedEvent","columnFrom","columnTo","isSameColumn","firstIndex","tickingInterval","getBodyClientRect","tickLeft","tickRight","tickUp","tickDown","ensureTickingStarted","setInterval","doTick","tickCount","tickAmount","vScrollPosition","hScrollPosition","getHScrollPosition","setVerticalScrollPosition","setHorizontalScrollPosition","clearInterval","AbstractSelectionHandle","changedCell","shouldDestroyOnEndDragging","onDrag","onDragEnd","clearValues","preventRangeExtension","isDragging","getCellComp","setCellComp","getCellRange","rangeStartRow","setRangeStartRow","rangeEndRow","setRangeEndRow","getLastCellHovered","lastCellHovered","cellHoverListener","getGridCore","updateLastCellPositionHovered","oldCellComp","removeListeners","FillHandle","markedCellComps","cellValues","isUp","isReduce","initialXY","x_1","y_1","dragAxis","initialPosition","lastCellMarked","markPathFrom","finalRange","isX","initialRange","colLen","handleValueChanged","initialRangeEndRow","initialRangeStartRow","finalRangeEndRow","finalRangeStartRow","withinInitialRange","initialValues","resetValues","iterateAcrossCells","fillValues","getRowAbove","updateInitialSet","processValues","clearCellsInRange","_loop_2","userFillOperation","userResult","currentIndex","allNumbers","clearMarkedPath","clearCellValues","currentPosition","isBefore","reduceVertical","extendVertical","initialColumn","currentColumn","reduceHorizontal","extendHorizontal","endPosition","isMovingUp","rowPos","cellPos","cellInRange","isInitialRow","getComponentForCell","celPos","isMovingLeft","startCol","endCol","colsToMark","RangeHandle","rangeFixed","fixRangeStartEnd","newEndRow","rowChanged","DetailCellRenderer","needRefresh","suppressRefresh","rowId","masterGridApi","selectAndSetTemplate","eDetailGrid","addThemeToDetailGrid","createDetailsGrid","registerDetailWithMaster","loadRowData","detailGridOptions","doLayout","gridInfo","addDetailGridInfo","detailGridInfo","removeDetailGridInfo","paramsAny","templateFunc","Grid","getDetailRowData","MenuItemComponent","shortcut","eShortcut","subMenu","ePopupPointer","eName","onOptionSelected","EVENT_ITEM_SELECTED","timerCount","removeChildFuncs","clearActiveItem","removeActiveItem","removeChildPopup","addMenuItems","menuItems","menuItemOrString","addSeparator","menuItem","menuItemDef","cMenuItem","showChildMenu","mouseEnterItem","menuItemParams","activeMenuItemParams","activeMenuItem","addHoverForChildPopup","menuItemComp","timerCountCopy","shouldShow","showingThisMenu","subMenuParentDef","SEPARATOR_TEMPLATE","childMenu","hidePopupFunc","positionPopupForMenu","selectedListener","EnterpriseMenuFactory","hideActiveMenu","activeMenu","showMenuAfterMouseEvent","positionPopupUnderMouseEvent","restrictToTabs","alignSide","minDims","nudgeX","nudgeY","positionCallback","EnterpriseMenu","lastSelectedTab","eMenuGui","showTabBasedOnPreviousSelection","isMenuEnabled","TABS_DEFAULT","initialSelection","restrictTo","tabFactories","includeChecks","timeOfLastColumnChange","TAB_GENERAL","createMainPanel","TAB_FILTER","createFilterPanel","TAB_COLUMNS","createColumnsPanel","getTabsToCreate","menuTabName","onActiveItemClicked","onHidePopup","onItemClicked","onTabItemClicked","isValidMenuTabItem","isNotSuppressed","isModuleLoaded","itemsToConsider","toShow","tabItemColumns","tabItemFilter","tabItemGeneral","showFirstItem","ev","columnSelectPanel","mainMenuList","getMenuItems","defaultMenuOptions","getDefaultMenuOptions","MENU_ITEM_SEPARATOR","allowPinning","rowGroupCount","doingGrouping","groupedByThisColumn","allowValue","allowRowGroup","pivotModeOn","isInMemoryRowModel","allowValueAgg","allowExpandAndContract","menuItemsMapped","menuItemMapper","mapWithStockItems","filterWrapper","afterFilterAttachedCallback","guiPromise","afterAttachedCallback","setAfterAttachedParams","initialScroll","getHorizontalPixelRange","newScroll","ContextMenuFactory","csvModuleMissing","excelModuleMissing","suppressExcel","suppressCsv","ContextMenu","MenuItemMapper","originalList","resultList","getStockMenuItem","resultDef","setColumnPinned","createAggregationSubMenu","autoSizeColumn","autoSizeAllColumns","expandAll","collapseAll","clipboardService","exportSubMenuItems","csvModuleLoaded","excelModuleLoaded","chartMenuItem","getChartItems","pivotChartMenuItem","localeKey","defaultText","chartService","rangeChartMenuItem","columnIsAlreadyAggValue","funcNames","funcName","MenuModule","RichSelectRow","populateWithRenderer","populateWithoutRenderer","RichSelectCellEditor","selectionConfirmed","searchString","originalSelectedValue","createRowComponent","eList","cellHeight","renderSelectedValue","virtualListGui","clearSearchString","valueToSelect","setSelectedValue","runSearch","searchStrings","keyCreator","topSuggestion","topValue","ensureIndexVisible","mouseY","ServerSideBlock","parentCache","groupLevel","rowGroupCols","usingMasterDetail","groupColVo","groupField","createNodeIdPrefix","parts","nodeIdPrefix","createIdForIndex","displayRowIndex","virtualRowCount","isDisplayIndexInCache","idToUse","setGroupDataIntoRowNode","setChildCountIntoRowNode","groupDisplayCols","groupValue","createLoadParams","createGroupKeys","blockTop","blockHeight","extractRowBounds","serverSideCache","clearRowTops","forEachRowNode","setDisplayIndexes","displayIndexSeq","displayIndexStart","displayIndexEnd","pivotCols","isDisplayIndexInBlock","isBlockBefore","getDisplayIndexStart","getDisplayIndexEnd","getBlockHeight","getBlockTop","isGroupLevel","getGroupField","DefaultBlockSize","ServerSideCache","cacheTop","blockHeights","blockFound","lastBlock","nextRowIndex","rowsBetween","destroyBlock","lastAllowedIndex","lastBlockId","getBlockSize","currentBlock","blocksSkippedCount","rowsSkippedCount","blockToAddId","lastVisitedRow","rowsNotAccountedFor","cacheHeight","dontCreateBlock","beforeBlock","displayIndexStart_1","cachedBlockHeight","blockBefore_1","currentId","lastRowTopLevelIndex","indexDiff","displayIndexSequence","getChildCache","nextKey","nextServerSideCache","keyListForNextLevel","refreshCacheAfterSort","changedColumnsInSort","rowGroupColIds","shouldPurgeCache","rowGroupBlock","sortingByGroup","nextCache","ServerSideRowModel","onColumnRowGroupChanged","onColumnPivotChanged","cacheExists","resetRequired","rowGroupColumnVos","toValueObjects","valueColumnVos","pivotColumnVos","sortModelDifferent","rowGroupDifferent","pivotDifferent","findChangedColumnsInSort","newSortModel","oldSortModel","allColsInBothSorts","ids","sm","oldSortItem","newSortItem","differentSorts","differentIndexes","extractSortModel","sortingWithValueCol","isSortingWithValueColumn","sortingWithSecondaryCol","isSortingWithSecondaryColumn","createNodeCache","updateRowIndexesAndBounds","modelUpdatedEvent","rowAnimationEnabled","shouldAnimate","createNewRowNodeBlockLoader","createCacheParams","destroyRowNodeBlockLoader","dynamicRowHeight","numberSequence","executeOnCache","route","cacheToPurge","autoGroupIndex","individualGroupCols","individualGroupCol","multiColumnPrefix","valueColIds","getSecondaryColumns","secondaryColIds","ServerSideRowModelModule","CheckboxState","SetValueModel","doesRowPassOtherFilters","modelUpdatedFunc","isLoadingFunc","valuesType","PROVIDED_LIST","PROVIDED_CB","showingAvailableOnly","suppressRemoveEntries","NOT_PROVIDED","createAllUniqueValues","createAvailableUniqueValues","displayedValues","availableUniqueValues","miniFilter","selectedValuesMap","selectAllUsingMiniFilter","textFormatter","DEFAULT_FORMATTER","refreshAfterNewRowsLoaded","keepSelection","everythingSelected","refreshSelection","refreshValues","valuesToUse","isSelectAll","setValues","oldModel","processMiniFilter","refreshAfterAnyFilterChanged","areValuesSync","extractSyncValuesToUse","filterValuesPromise","filterValuesExternalPromise","callback_1","params_1","onAsyncValuesLoaded","setValuesType","getValuesType","allUniqueValues","sortValues","uniqueValuesAsAnyObjects","getUniqueValues","filterOutNotAvailable","uniqueCheck","addUniqueValueIfMissing","setMiniFilter","newMiniFilter","getMiniFilter","miniFilterUpperCase","matchesFn","valueToCheck","displayedValue","formattedValue","getDisplayedValueCount","getDisplayedValue","selectOn","toSelectOn","safeKey","valueToKey","selectedValuesCount","keyToValue","selectNothingUsingMiniFilter","unselectValue","selectNothing","getUniqueValueCount","getUniqueValue","selectAllFromMiniFilter","isValueSelected","isEverythingSelected","isNothingSelected","selectedValues","setSyncModel","rawValue","onFilterValuesReady","SetFilterListItem","useCellRenderer","eCheckedIcon","eUncheckedIcon","eClickableArea","updateCheckboxIcon","EVENT_SELECTED","valueElement","SetFilter","valueModel","selectEverything","updateSelectAll","checkSetFilterDeprecatedParams","setFilterParams","eIndeterminateCheckedIcon","initialiseFilterBodyUi","suppressSyncValuesAfterDataChange","setupSyncValuesAfterDataChange","syncValuesLikeExcel","selectAllOnMiniFilter","resetFilterValuesAndReapplyModel","modelBeforeUpdate","resetFilterValues","eSelectAll","selectAllState","INTERMEDIATE","setLoading","eFilterLoading","eSetFilterList","createSetListItem","doesRowPassOtherFilter","toSelect","setFilterValues","ModelWrapper","suppressMiniFilter","eMiniFilter","onMiniFilterInput","eSelectAllContainer","suppressSelectAll","listItem","onItemSelected","appliedModelValuesMapped","valuesTypeProvided","onAnyFilterChanged","onEnterKeyOnMiniFilter","doSelectAll","SetFloatingFilterComp","formattedValues","arrayToDisplay","valuesString","StatusBarService","allComponents","registerStatusPanel","getStatusPanel","StatusBar","statusPanels","leftStatusPanelComponents","componentConfig","createAndRenderComponents","eStatusBarLeft","centerStatusPanelComponents","eStatusBarCenter","rightStatusPanelComponents","eStatusBarRight","statusBarComponents","ePanelComponent","componentDetails","statusPanel","componentDetail","statusBarService","NameValueComp","TotalAndFilteredRowsComp","getFilteredRowCountValue","totalRowCount","getTotalRowCount","filteredRowCount","FilteredRowsComp","totalRowCountValue","getTotalRowCountValue","filteredRowCountValue","TotalRowsComp","getRowCountValue","SelectedRowsComp","isValidRowModel","selectedRowCount","getSelectedRows","onRowSelectionChanged","AggregationComp","avgAggregationComp","countAggregationComp","minAggregationComp","maxAggregationComp","sumAggregationComp","setAggregationComponentValue","aggFuncName","statusBarValueComponent","getAggregationValueComponent","refComponentName","aggregationPanelConfig","statusPanelParams","numberCount","cellsSoFar","gotResult","gotNumberResult","StatusBarModule","ViewportRowModel","rowNodesByIndex","onViewportChanged","setViewportDatasource","calculateFirstRow","firstRenderedRow","bufferSize","afterBuffer","calculateLastRow","lastRenderedRow","purgeRowsNotInViewport","setViewportRange","setRowCount","firstNodeOutOfRange","lastNodeOutOfRange","endIndex","callbackCount","AllEnterpriseModules","ViewportRowModelModule","defaultEqualityCheck","areArgumentsShallowlyEqual","equalityCheck","getDependencies","dependencies","dep","dependencyTypes","memoizeOptions","recomputations","resultFunc","memoizedResultFunc","resetRecomputations","createStructuredSelector","selectorCreator","_len3","_key3","composition","alive","tempValue","objectWithoutPropertiesLoose","xs","md","lg","xl","defaultBreakpoints","styleFromPropValue","themeBreakpoints","breakpoints","_themeBreakpoints","breakpoint","styleFunction","newStyleFunction","extended","dateCompFrom1","dateCompTo1","dateCompFrom2","dateCompTo2","positionOne","dateFromString","dateToString","compFrom","compTo","dateFilterParams","filterDate","createDateComponents","ePanelFrom1","ePanelFrom2","ePanelTo1","ePanelTo2","valueFrom","valueTo","FILTER_TYPE","dateCompTo","dateCompFrom","showFrom1","showTo1","showFrom2","showTo2","createAndAddIcons","eIndeterminateIcon","onSelectionChanged","onSelectableChanged","showOrHideSelect","onCheckedClicked","onUncheckedClicked","onIndeterminateClicked","checkboxCallbackExists","refreshCount","eDelta","showDelta","absDelta","deltaUp","setTimerToRemoveDelta","refreshCountCopy","hideDeltaValue","lastValue","eCurrent","addSlideAnimation","ePrevious","valueFormattedExits","eValueFrom1","eValueFrom2","eValueTo1","eValueTo2","eValueFrom","eValueTo","addValueChangedListeners","stringToFloat","eValue1","eValue2","textFilterParams","textCustomComparator","DEFAULT_COMPARATOR","caseSensitive","DEFAULT_LOWERCASE_FORMATTER","showValue1","eInputWrapper1","showValue2","eInputWrapper2","eFilterValue","cellValueFormatted","filterTextFormatted","keepingColumns","nodeIdsToColumns","mapToItems","pathRoot","depthFirstSearchChangedPath","pathItem","depthFirstSearchEverything","traverseEverything","traverseLeafNodes","createPathItems","newEntryCount","newEntry","populateColumnsMap","linkPathItems","thisItem","parentItem","colsForThisNode","getGuiCalledOnChild","DOM_KEY_POPUP_EDITOR_WRAPPER","eHeaderCell","addColumnClassesFromCollDef","headerClass","toolPanelClass","classesOrFunc","classToUse","cssClassItem","positioned","dragStartPosition","setClosable","eTitleBarButtons","focusEl","eContentWrapper","refreshSize","parentRect","skipX","positionPopup","isPercent","closeButtonComp","CLOSE_BTN_TEMPLATE","onBtClose","bodyComponent","AgInputTextField","LoadingType","ColumnHoverService","selectedColumns","ColumnAnimationService","executeNextFuncs","executeLaterFuncs","animationThreadCount","ensureAnimationCssClassPresent","executeLaterVMTurn","animationThreadCountCopy","setColumnMovingCss","nowFuncs","waitFuncs","AutoGroupColService","AutoGroupColService_1","createAutoGroupColumns","groupAutoColumns","doingMultiAutoColumn","rowGroupCol","createOneAutoGroupColumn","defaultAutoColDef","generateDefaultColDef","GROUP_AUTO_COLUMN_BUNDLE_ID","userAutoColDef","filterValueGetter","headerCheckboxSelection","newCol","cellRendererFramework","rowGroupColDef","headerValueGetter","innerRenderer","innerRendererParams","PaginationAutoPageSizeService","onBodyHeightChanged","onScrollVisibilityChanged","checkPageSize","notActive","bodyHeight","newPageSize","ChangeDetectionService","onCellValueChanged","doChangeDetection","AgComponentUtils","functionAdapter","adaptCellRendererFunction","Adapter","callbackResult","ComponentMetadataProvider","componentMetaData","dateComponent","detailCellRenderer","headerGroupComponent","loadingCellRenderer","loadingOverlayComponent","noRowsOverlayComponent","floatingFilterComponent","floatingFilterWrapperComponent","fullWidthCellRenderer","groupRowInnerRenderer","groupRowRenderer","tooltipComponent","Beans","AnimationFrameService","createTasksP1","createTasksP2","destroyTasks","ticking","scrollGoingDown","lastScrollTop","setScrollTop","useAnimationFrame","verifyAnimationFrameOn","taskItem","addTaskToList","schedule","taskList","sortTaskList","addDestroyTask","executeFrame","p1TaskList","p1Tasks","p2TaskList","p2Tasks","frameStart","noMaxMillis","requestFrame","stopTicking","flushAllFrames","webkitRequestAnimationFrame","isQueueEmpty","NavigationService","timeLastPageEventProcessed","handlePageScrollingKey","alt","ctrl","processed","onHomeOrEndKey","onCtrlLeftOrRight","onCtrlUpOrDown","onPageDown","onPageUp","isTimeSinceLastPageEventToRecent","setTimeLastPageEventProcessed","gridCell","scrollPosition","pixelsInOnePage","pagingPixelOffset","currentPageBottomPixel","scrollIndex","nextCellPixel","focusIndex","pageLastRow","navigateTo","currentPageTopPixel","scrollType","scrollColumn","focusColumn","ensureColumnVisible","animationFrameService","rowIndexToScrollTo","leftKey","columnToSelect","homeKey","MaxDivHeightScaler","scrollY","uiBodyHeight","updateOffset","scrollBarWidth","maxDivHeight","isScaling","scaling","getOffset","newScrollY","newBodyHeight","getUiBodyHeight","calculateOffset","uiContainerHeight","pixelsToShave","modelHeight","maxScrollY","scrollPercent","setOffset","clearOffset","newOffset","newOffsetFloor","setModelHeight","getUiContainerHeight","modelPixel","getScrollPositionForPixel","AutoHeightCalculator","eDummyContainer","eBodyContainer","getCenterContainer","getAllAutoRowHeightCols","maxCellHeight","PaginationComp","btFirst","btPrevious","btNext","btLast","serverSideRowModel","onBtFirst","onBtLast","onBtNext","onBtPrevious","enableOrDisableButtons","updateRowLabels","setCurrentPageLabel","setTotalLabels","pagesExist","getTotalPages","toDisplay","lbCurrent","formatNumber","strPage","strTo","strOf","goToNextPage","goToPreviousPage","goToFirstPage","goToLastPage","isLastPageFound","totalPages","disablePreviousAndFirst","zeroPagesToDisplay","isZeroPagesToDisplay","disableNext","disableLast","getPageSize","getMasterRowCount","lbFirstRowOnPage","lbLastRowOnPage","lastPageFound","lbTotal","lbRecordCount","moreText","OverlayWrapperComponent","eOverlayWrapper","setWrapperTypeClass","loadingType","Loading","NoRows","showLoadingOverlay","destroyActiveOverlay","activeOverlay","showNoRowsOverlay","hideOverlay","DetailRowCompCache","cacheItems","maxCacheSize","destroyFullWidthRow","getCacheItem","lastAccessedTime","autoCreate","stampCacheItem","startIndex","eGridDiv","registeredModules","createBeansList","createAgStackComponentsList","createProvidedBeans","contextLogger","registerModuleUserComponents","GridCore","setColumnsAndData","dispatchGridReadyEvent","isEnterprise","passedViaConstructor","modules","allModules","mapNames","addModule","addIndividualModule","extractModuleEntity","compMeta","VanillaFrameworkOverrides","seed","quickFilterOnScope","AgToggleButton","AgInputTextArea","AgInputNumberField","AgInputRange","AgSelect","AgColorPicker","GridPanel","HeaderRootComp","moduleAgStackComps","rowModelClass","getRowModelClass","RowPositionUtils","CellPositionUtils","GridApi","ResizeObserverService","CellRendererFactory","HorizontalResizeService","PinnedRowModel","DragService","DisplayedGroupCreator","PopupService","SelectionController","FilterManager","ColumnController","PaginationProxy","RowRenderer","ExpressionService","ColumnFactory","TemplateService","AlignedGridsService","ValueCache","ValueService","ColumnUtils","AutoWidthCalculator","StandardMenuFactory","ColumnApi","FocusedCellController","MouseEventService","Environment","CellNavigationService","ValueFormatterService","StylingService","ScrollVisibleService","SortController","SelectableService","TooltipManager","moduleBeans","beansNoDuplicates","moduleEntities","extractor","readyEvent","rowModelClasses","_unsupportedIterableToArray","minLen","reactIs","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","inputTypesWhitelist","tel","email","password","datetime","handleKeyDown","handlePointerDown","handleVisibilityChange","visibilityState","isFocusVisible","isContentEditable","focusTriggersKeyboardModality","handleBlurVisible","useIsFocusVisible","onBlurVisible","ReactDOM","ownerWindow","defaultView","HeaderContainer","eViewport","headerRowComps","setupDragAndDrop","headerRowComp","onColumnValueChanged","setWidthOfPinnedContainer","pinningLeft","pinningRight","scrollVisibleService","removeHeaderRowComps","getRowComps","removeAndCreateAllRowComps","createHeaderRowComps","gridComp","dropContainer","bodyDropTarget","BodyDropTarget","labelSeparator","labelWidth","setLabelSeparator","refreshLabel","addMouseHoverListeners","buildMatchPatternFn","parseResult","parsePattern","addMilliseconds","firstWeekOfNextYear","setUTCFullYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","SwitchBase","checkedProp","checkedIcon","defaultChecked","disabledProp","inputProps","_useControlled","_useControlled2","setCheckedState","hasLabelFor","IconButton","role","newChecked","differenceInCalendarDays","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","_props$component","_props$fontSize","htmlColor","titleAccess","_props$viewBox","pxToRem","transitions","colorAction","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeLarge","isMuiElement","muiNames","addYears","endOfDay","dirtyDateToCompare","dateToCompare","ponyfill","nodejsCustomInspectSymbol","for","_arrayLikeToArray","AgGridReact","AgGridColumn","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","comparable","or","validator","OPERATORS","$eq","$ne","$gt","$gte","$lt","$lte","$mod","$in","comparableB","createRootValidator","$nin","$not","$type","$all","$and","$size","$or","$nor","$regex","$where","$elemMatch","$exists","$options","createValidator","nestedValidator","findValues","keypath","nv","inclusive","allValid","createNestedValidator","validators","getter","sift","ForbiddenError","subject","subjectName","captureStackTrace","wrapArray","getSubjectName","modelName","REGEXP_SPECIAL_CHARS","REGEXP_ANY","REGEXP_STARS","REGEXP_DOT","detectRegexpPattern","quantifier","matcher","escapeRegexp","Rule","actions","conditions","_matches","isRelevantFor","matchesField","_fieldsPattern","patterns","createPattern","PRIVATE_FIELD","DEFAULT_ALIASES","crud","hasAction","Ability","_ref$RuleType","RuleType","_ref$subjectName","originalRules","hasPerFieldRules","indexedRules","mergedRules","events","aliases","addAlias","ability","emit","buildIndexFor","isAllInverted","expandActions","subjects","priority","rawActions","can","relevantRuleFor","rulesFor","possibleRulesFor","mergeRulesFor","subjectType","subjectRules","manage","cannot","throwUnlessCan","isAttached","isStringOrNonEmptyArray","RuleBuilder","because","AbilityBuilder","dsl","builder","buildAbility","conditionsOrFields","Transition","initialStatus","isMounting","appearStatus","unmountOnExit","mountOnEnter","nextCallback","updateStatus","nextStatus","cancelNextCallback","getTimeouts","mounting","performEnter","performExit","appearing","nodeRef","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","onExit","onExiting","setNextCallback","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","childProps","TransitionGroupContext","only","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Paper","_props$square","square","_props$elevation","elevation","outlined","rounded","elevations","shadows","paper","divider","injectFirstNode","jssPreset","disableGeneration","sheetsCache","StylesContext","_props$injectFirst","injectFirst","_props$disableGenerat","localOptions","outerOptions","getBorder","flexBasis","flexDirection","alignContent","justifyItems","justifySelf","flexbox","gridGap","gridColumnGap","gridRowGap","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridArea","bgcolor","sizeWidth","sizeHeight","letterSpacing","directions","marginX","marginY","getCssProperties","_prop$split","_prop$split2","spacingKeys","createUnarySpacing","themeSpacing","getStyleFromPropValue","cssProperties","transformer","ColumnKeyCreator","existingKeys","addExistingKeys","getUniqueKey","colField","idToTry","primaryHeaderRowCount","secondaryHeaderRowCount","secondaryColumnsPresent","gridHeaderRowCount","displayedLeftColumns","displayedRightColumns","displayedCenterColumns","allDisplayedVirtualColumns","allDisplayedCenterVirtualColumns","autoGroupsNeedBuilding","bodyWidth","leftWidth","rightWidth","bodyWidthDirty","isPivotSettingAllowed","colsPreviouslyExisted","expire","oldPrimaryColumns","primaryColumns","balancedTreeResult","primaryColumnTree","treeDept","getColumnsFromTree","extractRowGroupColumns","extractPivotColumns","createValueColumns","updateGridColumns","updateDisplayedColumns","checkDisplayedVirtualColumns","eventEverythingChanged","newColumnsLoadedEvent","autoRowHeightColumns","setVirtualViewportLeftAndRight","viewportLeft","viewportRight","hashBefore","updateVirtualSets","setVirtualViewportPosition","getSecondaryPivotColumn","valueColKey","valueColumnToFind","foundColumn","secondaryColumns","thisPivotKeys","setFirstRightAndLastLeftPinned","lastLeft","firstRight","gridColumns","columnsAutosized","changesThisTimeAround","actionOnGridColumns","preferredWidth","autoWidthCalculator","getPreferredWidthForColumn","normaliseColumnWidth","rootColumns","recursiveFindColumns","getAllDisplayedColumnGroups","displayedLeftColumnTree","displayedRightColumnTree","displayedCentreColumnTree","getLeftDisplayedColumnGroups","getRightDisplayedColumnGroups","getCenterDisplayedColumnGroups","getDisplayedColumnGroups","isColumnDisplayed","getAllDisplayedVirtualColumns","colSpanActive","getDisplayedColumnsForRow","emptySpaceBeforeColumn","out_i_1","lastConsideredCol","maxAllowedColSpan","columnsToCheckFilter","colsToRemove","colForFilter","isColumnInViewport","columnLeft","columnRight","leftBounds","rightBounds","getWidthOfColsInList","getPinnedRightContainerWidth","updatePrimaryColumnList","masterList","actionIsAdd","atLeastOne","columnToAdd","colKeys","setPrimaryColumnList","defaultAggFunc","getPrimaryOrGridColumn","setColumnWidth","otherCol","widthDiff","otherColWidth","checkMinAndMaxWidthsForSet","columnResizeSet","minWidthAccumulated","maxWidthAccumulated","maxWidthActive","changedCols","newWidths","finishedCols","finishedColsGrew","loopCount","subsetCols","subsetRatios","subsetRatioTotal","pixelsToDistribute","ratioThisCol","ratioScale","colNewWidth","atLeastOneColChanged","setLeftValues","updateBodyWidths","moveRowGroupColumn","moveColumns","columnsToMoveKeys","columnsToMove","doesMovePassRules","proposedColumnOrder","doesMovePassMarryChildren","doesMovePassLockedPositions","foundNonLocked","rulePassed","allColumnsCopy","depthFirstOriginalTreeSearch","gridBalancedTree","marryChildren","newIndexes","newColIndex","moveColumn","moveColumnByIndex","newBodyWidth","newLeftWidth","newRightWidth","getDisplayedCenterColumns","getDisplayedLeftColumns","getDisplayedRightColumns","getDisplayedColumns","getAllColumnsForQuickFilter","columnsForQuickFilter","setColumnsPinned","actualPinned","updatedColumns","event_7","requiredLevel","groupPointer","isPinningRight","getPrimaryAndSecondaryAndAutoColumns","createStateItemFromColumn","getColumnState","primaryColumnState","columnStateList","orderColumnStateList","gridColumnIds","itemA","itemB","suppressEverythingEvent","columnStates","letRowGroupIndex","letPivotIndex","stateItem","setColumnState","columnStateBefore","columnsWithNoState","rowGroupIndexes","pivotIndexes","autoGroupColumnStates","getAutoColumn","syncColumnWithStateItem","syncColumnWithNoState","sortColumnListUsingIndexes","autoCol","orderOfColIds_1","colA","colB","putFixedColumnsFirst","event_8","raiseColumnEvents","columnStateAfter","raiseEventWithAllColumns","idMapper","getChangedColumns","changedPredicate","changedColumns","columnStateBeforeMap","colStateBefore","raiseColumnPinnedEvent","raiseColumnVisibleEvent","raiseColumnResizeEvent","raiseColumnMovedEvent","event_9","event_10","event_11","movedColumns","_loop_3","movedColumn","event_12","indexes","getColumns","columnLookupCallback","foundColumns","columnList","columnsMatch","columnMatches","colDefMatches","idMatches","includeAggFunc","wrapHeaderNameWithAggFunc","aggFuncFound","measureActive","aggregationPresent","getColumnGroup","allColumnGroups","checkInstanceId","depthFirstAllColumnTreeSearch","extractColumns","flag","previousCols","setFlagFunc","getIndexFunc","getValueFunc","removedCols","existingCols","newPrimaryCols","newCols","indexA","indexB","resetColumnGroupState","stateItems","open","setColumnGroupState","getColumnGroupState","columnGroupState","impactedGroups","updateGroupsAndDisplayedColumns","keyAsString","calculateColumnsForDisplay","isAutoGroupCol","checkColSpanActiveInCols","calculateColumnsForGroupDisplay","groupDisplayColumns","checkFunc","columnsForDisplay","buildDisplayedTrees","newColsPresent","processSecondaryColumnDefinitions","secondaryBalancedTree","groupCallback","searchForColDefs","colDefs2","gridColsArePrimary","lastPrimaryOrder","orderGridColsLikeLastPrimary","addAutoGroupToGridColumns","setupQuickFilterColumns","clearDisplayedColumns","noColsFound","oldColsOrdered","newColsOrdered","newGridColumns","siblings","leafCol","presentInNewGriColumns","noYetInSiblings","unlocked","createGroupAutoColumnsIfNeeded","autoColBalancedTree","createForAutoGroups","displayedLeftHeaderRows","displayedRightHeaderRows","displayedCentreHeaderRows","updateOpenClosedVisibilityInColumnGroups","updateDisplayedColumnsFromTrees","addToDisplayedColumns","setupAllDisplayedColumns","setLeftValuesOfColumns","setLeftValuesOfGroups","doingRtl","left_1","left_2","displayedColumnTree","depthFirstDisplayedColumnTreeSearch","updateDisplayedCenterVirtualColumns","filterOutColumnsWithinViewport","updateDisplayedVirtualGroups","virtualColIds","testGroup","addThisItem","sizeColumnsToFit","gridWidth","colsToSpread","colsToNotSpread","suppressSizeToFit","colsToFireEventFor","finishedResizing","availablePixels","pixelsForLastCol","moveToNotSpread","leftVisibleColumns","rightVisibleColumns","centerVisibleColumns","getGroupAutoColumns","groupFullWidthRow","newAutoGroupCols","autoGroupColService","autoColsEqual","colsA","colsB","existingIds","getInstanceIdForKey","getOriginalPathForColumn","originalBalancedTree","recursePath","balancedColumnTree","sortedVisibleColumns","oldDisplayedGroups","previousRealPath","previousOriginalPath","oldColumnsMapped","mapOldGroupsById","currentOriginalPath","currentRealPath","firstColumn","newGroup","createColumnGroup","setupParentsIntoColumns","originalGroup","recursive","columnsOrGroups","columnsOrGroup","textarea","maxLength","selectedNodes","selectedRows","getNodeForIdIfSelected","rowNodeToKeepSelected","groupsToRefresh","otherRowNode","syncInOldRowNode","syncInNewRowNode","getBestCostNodeSelection","topLevelNodes","traverse","setRowModel","nodeId","deselectAllRowNodes","justFiltered","rowModelClientSide","selectAllRowNodes","selectNode","tryMulti","deselectIndex","deselectNode","selectIndex","isPinning","getAllColumns","hideColumns","hideColumn","resetState","getAggregationColumns","removeAggregationColumn","removeAggregationColumns","addAggregationColumn","addAggregationColumns","setColumnAggFunction","getDisplayNameForCol","destroyFuncsForColumnListeners","rowCompsByIndex","floatingTopRowComps","floatingBottomRowComps","refreshInProgress","rowContainers","getRowContainers","onPageLoaded","onPinnedRowDataChanged","redrawAfterScroll","onDomLayoutChanged","registerCellEventListeners","redrawAfterModelUpdate","refreshListenersToColumnsForCellComps","removeGridColumnListeners","forEachCellWithThisCol","leftChangedListener","firstRightPinnedChangedListener","lastLeftPinnedChangedListener","destroyRows","rowIndexesToRemove","removeRowComps","refreshEvent","getAllCellsForColumn","eCells","refreshFloatingRowComps","refreshFloatingRows","floatingTopPinnedLeft","floatingTopPinnedRight","floatingTop","floatingTopFullWidth","floatingBottomPinnedLeft","floatingBottomPinnedRight","floatingBottom","floatingBottomFullWith","rowComps","flushContainers","recycleRows","onlyBody","getRenderedIndexesForRowNodes","renderedRow","indexesToRemove","getCellToRestoreFocusToAfterRefresh","suppressKeepFocus","getFocusCellToUseAfterRefresh","getLockOnRefresh","sizeContainerToPageHeight","scrollToTopIfNewData","rowsToRecycle","binRowComps","redraw","restoreFocusedCell","releaseLockOnRefresh","scrollToTop","suppressScrollToTop","pinnedLeft","pinnedRight","containerHeight","realHeight","forEachRowComp","flashCells","forEachCellCompFiltered","refreshCellParams","getCellRendererInstances","getCellEditorInstances","getEditingCells","rowIdsMap","colIdsMap","rowsToRemove","indexToRemove","removeRowCompsNotToDraw","indexesToDraw","indexesToDrawMap","indexesNotToDraw","calculateIndexesToDraw","doNotUnVirtualiseRow","afterScroll","workOutFirstAndLastRowsToRender","nextVmTurnFunctions","createOrUpdateRowComp","destroyRowComps","checkAngularCompile","updateRowCount","flushRowTemplates","redrawFullWidthEmbeddedRows","refreshFullWidthRows","createRowComp","rowCompsMap","delayedFuncs","paginationOffset","bodyVRange","bodyTopPixel","bodyBottomPixel","bufferPixels","firstPixel","lastPixel","ensureAllRowsInRangeHaveHeightsCalculated","firstRowIndex","pageFirstRow","rowLayoutNormal","suppressRowCountRestriction","rowBufferMaxSize","firstDiffers","lastDiffers","getFirstVirtualRenderedRow","getLastVirtualRenderedRow","rowHasFocus","isRowNodeFocused","rowIsEditing","rowIsDetail","getRenderedNodes","renderedRows","allowUserOverride","nextCell","getLastCellOfColSpan","userCell","previousCellPosition","nextCellPosition","colSpanningList","horizontallyScrollHeaderCenterAndFloatingCenter","startEditingCell","rowComponent","previousRenderedCell","backwards","moveToCellAfter","moveToNextEditingRow","moveToNextEditingCell","moveToNextCellNotEditing","nextRenderedCell","findNextCellToFocusOn","foundCell","moveEditToNextCellOrRow","pGridCell","nGridCell","pRow","nRow","startEditing","getNextTabbedCell","lookupRowNodeForCell","nextCellComp","getPinnedTopRow","getPinnedBottomRow","childContainers","registerHeaderRootComp","centerContainer","eHeaderContainer","eHeaderViewport","pinnedLeftContainer","ePinnedLeftHeader","pinnedRightContainer","ePinnedRightHeader","addPreventHeaderScroll","setHorizontalScroll","childContainer","scrollHorizontally","setHeaderContainerWidth","setLeftVisible","setRightVisible","DropType","dropListeners","moveColumnController","eSecondaryContainers","getDropTargetLeftContainers","getDropTargetRightContainers","getDropTargetBodyContainers","MoveColumnController","bodyDropPivotTarget","BodyDropPivotTarget","ColumnMove","Pivot","currentDropListener","getDropType","dropType","needToMoveLeft","needToMoveRight","visibleState_1","ensureIntervalCleared","allowedCols","normaliseX","getCenterViewportScrollLeft","checkCenterForScrolling","xAdjustedForScroll","firstVisiblePixel","lastVisiblePixel","getCenterWidth","ensureIntervalStarted","fromEnter","lastDraggingEvent","mouseXNormalised","hDirectionNormalised","normaliseDirection","dragSourceType","attemptMoveColumns","calculateOldIndex","movingCols","gridCols","allMovingColumns","draggingLeft","draggingRight","validMoves","calculateValidMoves","firstValidMove","constrainDirection","move","allDisplayedCols","allGridCols","colIsNotMovingFunc","movingDisplayedCols","otherDisplayedCols","otherGridCols","availableWidth","widthOfMovingDisplayedCols_1","leftColumn","displacedCol","isColumnHidden","movingIntervalId","intervalCount","failedMoveAttempts","moveInterval","pixelsToMove","pixelsMoved","columnsThatCanPin","pinType","clearColumnsList","allFilters","quickFilter","quickFilterParts","FilterManager_1","onNewColumnsLoaded","parseQuickFilter","setQuickFilterParts","checkExternalFilter","setFilterModel","allPromises","modelKeys_1","newModel","setModelOnFilterWrapper","whatever","isAdvancedFilterPresent","advancedFilterPresent","setAdvancedFilterPresent","atLeastOneActive","updateFilterFlagInColumns","isQuickFilterPresent","externalFilterPresent","filterToSkip","newFilter","parsedFilter","doesRowPassQuickFilterNoCache","filterPart","getQuickFilterTextForColumn","doesRowPassQuickFilterCache","aggregateRowForQuickFilter","doesRowPassQuickFilter","usingCache","valueAfterCallback","stringParts","QUICK_FILTER_SEPARATOR","createValueGetter","cachedFilter","putIntoGui","createFilterWrapper","createFilterInstance","sanitisedColDef","compiledElement","eFilterGui","guiFromFilter","atLeastOneFilterGone","disposeFilterWrapper","destroyFilter","cellExpressions","forFilter","groupDataExists","aggDataExists","executeFilterValueGetter","executeValueGetter","cellValueGetter","newValueHandler","valueSetter","valueWasDifferent","setValueUsingField","fieldPieces","fieldPiece","getValueCallback","valueFromCache","otherColumn","detailGridInfoMap","infiniteRowModel","__getAlignedGridService","alignedGridsService","getDetailGridInfo","forEachDetailGridInfo","getDataAsExcel","excelCreator","setEnterpriseDatasource","setServerSideDatasource","immutableService","orderIdMap","setFloatingTopRowData","setFloatingBottomRowData","getFloatingTopRowCount","getFloatingBottomRowCount","getFloatingTopRow","getFloatingBottomRow","expireValueCache","getVerticalPixelRange","setAlwaysShowVerticalScroll","refreshToolPanel","refreshSideBar","timeFullRedraw","iterationCount","totalProcessing","totalReflow","doOneIteration","endProcessing","endReflow","durationProcessing","durationReflow","refreshView","refreshRows","rowDataChanged","softRefreshView","refreshGroupRows","setFunctionsReadOnly","setHeaderAndFloatingHeights","isColumnFilterPresent","setRowNodeExpanded","onGroupExpandedOrCollapsed","deprecated_refreshFromIndex","refreshInMemoryRowModel","refreshClientSideRowModel","paramsStep","stepsMapped","aggregate","isAnimationFrameQueueEmpty","addVirtualRowListener","suppressEvents","deselectAll","selectAllFiltered","deselectAllFiltered","recomputeAggregates","isNodeSelected","getSelectedNodesById","ensureColIndexVisible","ensureNodeVisible","getFilterApiForColDef","getFilterInstance","getFilterApi","getColumnDef","setSortModel","clearFocusedCell","setDomLayout","setCellTextSelection","setGroupHeaderHeight","setFloatingFiltersHeight","setPivotGroupHeaderHeight","setPivotHeaderHeight","isSideBarVisible","setSideBarVisible","closeToolPanel","getOpenedToolPanel","checkViewportAndScrolls","setGroupRemoveLowestSingleChildren","resetQuickFilter","getRangeSelections","camelCaseToHumanReadable","addRangeSelection","deprecatedNoLongerUsed","clearRangeSelection","includeHeader","copySelectedRangeDown","showColumnMenuAfterButtonClick","buttonElement","hidePopupMenu","contextMenuFactory","setPopupParent","ePopupParent","tabToPreviousCell","clearAggFuncs","skipRefresh","removeItems","dataToRemove","refreshVirtualPageCache","refreshInfiniteCache","refreshInfinitePageCache","purgeVirtualPageCache","purgeInfinitePageCache","purgeInfiniteCache","purgeEnterpriseCache","purgeServerSideCache","getInfiniteRowCount","setInfiniteRowCount","getVirtualPageState","getCacheBlockState","getInfinitePageState","checkGridSize","getFirstRenderedRow","getFirstDisplayedRow","getLastRenderedRow","getLastDisplayedRow","getDisplayedRowAtIndex","getDisplayedRowCount","paginationIsLastPageFound","paginationGetPageSize","paginationGetCurrentPage","paginationGetTotalPages","paginationGetRowCount","paginationGoToNextPage","paginationGoToPreviousPage","paginationGoToFirstPage","paginationGoToLastPage","paginationGoToPage","goToPage","expressionToFunctionCache","expressionOrFunc","evaluateExpression","createExpressionFunction","javaScriptFunction","functionBody","createFunctionBody","theFunction","templateCache","waitingCallbacks","templateFromCache","callbackList","XMLHttpRequest","onload","handleHttpResult","send","httpResult","responseText","callbacks","that_1","popupList","sourceRect","eDocument","keepYWithinBounds","maxX","xRightPosition","xLeftPosition","calculatePointerAlign","callPostProcessPopup","documentRect","keepXWithinBounds","docElement","isBody","heightOfParent","maxY","widthOfParent","closeOnEsc","closedCallback","popup","hideFunc","setAlwaysOnTop","popupHidden","hidePopupOnKeyboardEvent","hidePopupOnMouseEvent","hidePopupOnTouchEvent","isEventFromCurrentPopup","isEventSameChainAsOriginalEvent","indexOfThisChild","originalClick","mouseEventOrTouch","screenX_1","screenY_1","xMatch","yMatch","getWrapper","popupLen","alwaysOnTopList","onTopLength","getHeaderCellForColumn","putRowCellsIntoDummyContainer","cloneItemIntoDummy","dummyContainerWidth","headerWrapperComp","eCellClone","cloneNode","eCloneParent","draggingStarted","dragStartX","setResizeIcons","oldBodyCursor","oldMsUserSelect","msUserSelect","oldWebkitUserSelect","webkitUserSelect","resetIcons","service","quickFilterUnregisterFn","$watch","addRtlSupport","eRootWrapperBody","gridPanelEl","unsubscribeFromResize","onGridSizeChanged","sideBarModuleLoaded","statusBarModuleLoaded","sideBarComp","doingVirtualPaging","comparatorIsAFunction","indexToSelect","showPopup","onMouseUpListener","onMouseUp","onMouseMoveListener","onTouchEndListener","onTouchUp","onTouchMoveListener","dragEndFunctions","dragSources","dragSourceAndListener","mouseDownListener","touchEnabled","touchStartListener","setNoSelectToBody","noSelect","eBody","includeTouch","mouseListener","currentDragParams","touchLastTime","onCommonMove","skipMouseEvent","_alreadyProcessedByDragService","mouseStartEvent","isEventNearStartEvent","currentEvent","startEvent","requiredPixelDiff","getFirstActiveTouch","onUpCommon","eventOrTouch","SortController_1","nextDirection","getNextSortDirection","setSortForColumn","clearSortBarThisColumn","dispatchSortChangedEvents","columnToSkip","columnToClear","DEFAULT_SORTING_ORDER","notInArray","lastItemInArray","sortModelProvided","sortForCol","sortModelEntry","compareColIds","columnsWithSorting","focusedCellPosition","getGridCellForDomElement","eBrowserCell","ePointer","floatingOrNull","gridInstanceId","MouseEventService_1","gridInstanceSequence","stampDomElementWithGridInstance","GRID_DOM_KEY","getRenderedCellForEvent","isEventFromThisGrid","lastCellToFocus","getCellAbove","getCellBelow","getCellToLeft","getCellToRight","isCellGoodToFocusOn","lastCell","colToLeft","colToRight","rowPosition","isLastRowInContainer","rowBelow","getLastBodyCell","getLastFloatingTopRow","rowAbove","getNextTabbedCellBackwards","getNextTabbedCellForwards","newRowIndex","newFloating","newColumn","cellRendererMap","CellRendererFactory_1","ANIMATE_SLIDE","ANIMATE_SHOW_CHANGE","GROUP","addCellRenderer","useCapture","setScrollsVisible","horizontalScrollShowing","verticalScrollShowing","classRules","resultOfRule","cellClass","classOrClasses","cellClassFunc","topDisplayedRowIndex","bottomDisplayedRowIndex","pixelOffset","masterRowCount","calculatePages","paginationChangedEvent","topRowBounds","bottomRowBounds","goToPageWithIndex","lastPage","setPageSize","calculatePagesAllRows","calculatePagesMasterRowsOnly","calculatedPagesNotActive","setZeroRows","masterLastRowIndex","masterPageStartIndex","masterPageEndIndex","firstIndexNotToShow","maxRowIndex","cacheVersion","neverExpires","__cacheVersion","__cacheData","consuming","fireColumnEvent","fireScrollEvent","fireEvent","otherGrids","otherGridOptions","alignedGridService","onEvent","onColumnEvent","onScrollEvent","getMasterColumns","getColumnIds","colEvent","processColumnEvent","groupOpenedEvent","processGroupOpenedEvent","otherColumnGroup","masterColumnGroup","masterColumn","columnIds","masterColumns","movedEvent","visibleEvent","pinnedEvent","resizedEvent_1","HARD_CODED_SIZES","MAT_GRID_SIZE","virtualItemHeight","FRESH_GRID_SIZE","BALHAM_GRID_SIZE","SASS_PROPERTY_BUILDER","CALCULATED_SIZES","calculatedValue","currentClass","themeMatch","reg","newTheme_1","recurseDown","nextChildrenFunc","rowSelectable","firstSelectable","debounceDelay","frameworkFactory","debouncedCallback","ResizeObserver","resizeObserver","observe","disconnect","useBrowserResizeObserver","widthLastTime","heightLastTime","running","periodicallyCheckWidthAndHeight","usePolyfill","DEFAULT_HIDE_TOOLTIP_TIMEOUT","MOUSEOUT_HIDE_TOOLTIP_TIMEOUT","MOUSEOVER_SHOW_TOOLTIP_TIMEOUT","HIDE_SHOW_ONLY","showTimeoutId","hideTimeoutId","registeredComponents","targetCmp","tooltipComp","eventDestroyFuncs","processMouseOver","processMouseMove","processMouseOut","activeComponent","lastHoveredComponent","clearTimers","containsElement","createTooltipComponent","closeFnc","clearRegisteredComponent","showOnly","initialItems","cbGroupEnabled","groupTitle","newCls","groupContainer","itemToHide","lbGroupTitle","skipToggle","newSelection","eToolbar","eventChanged","textValue","eSlider","sliderValue","setSliderWidth","setMin","setMax","normalizeValue","precision","adjustPrecision","floatString","setPrecision","addOption","optionEl","dragListener","eParentCircle","parentCircleRect","calculateAngleDrag","eAngleValue","floatValue","updateNumberInput","normalizeNegativeValue","normalizedValue","positionChildCircle","eChildCircle","calculatePolar","toDegrees","calculateCartesian","getRadius","setOffsetX","setOffsetY","dx","dy","normalizeAngle180","setRadius","radiansValue","rowA","rowB","cellA","cellB","colsMatch","floatingMatch","indexMatch","pinnedTopRows","pinnedBottomRows","getRowAtPixel","createNodesFromData","allData","nextRowTop_1","getPinnedTopTotalHeight","getTotalHeight","getPinnedBottomTotalHeight","lastNode","RowContainerComponent","rowTemplatesToAdd","afterGuiAttachedCallbacks","lastMadeVisibleTime","hideWhenNoChildren","verticalScrollPosition","checkDomOrder","domOrder","htmlToAdd","lastPlacedElement","isMadeVisibleRecently","RowDragFeature","onEnterOrDragging","normaliseForScroll","doManagedDrag","pixelRange","needToMoveUp","needToMoveDown","scrollVertically","vDirectionString","yNormalised","overIndex","overNode","stopDragging","resetLastHorizontalScrollElementDebounce","resetLastHorizontalScrollElement","eBodyViewport","eCenterViewport","onRowDataChanged","showOrHideOverlay","suppressScrollOnFloatingRow","setupRowAnimationCssClass","buildRowContainerComponents","addDragListeners","addScrollListener","setPinnedContainerSize","disableBrowserDragging","addMouseListeners","addKeyboardEvents","addBodyViewportListener","addStopEditingWhenGridLosesFocus","mockContextMenuForIPad","addRowDragListener","addAngularApplyCheck","onDisplayedColumnsWidthChanged","navigationService","heightScaler","paginationAutoPageSizeService","viewport","onCenterViewportResized","newPrintLayout","setWidthsOfContainers","eTop","eBottom","rowDragFeature","focusOutListener","clickInsideGrid","applyTriggered","HTMLImageElement","eLeftContainer","eRightContainer","eCenterContainer","processMouseEvent","eAllCellContainers","processKeyboardEvent","onContextMenu","getRowForEvent","doClipboardOperations","cellKeyDownEvent","cellKeyPressEvent","onCtrlAndA","onCtrlAndC","onCtrlAndV","onCtrlAndD","handleContextMenuMouseEvent","floatingStart","floatingEnd","rowEnd","rowGotShiftedDuringOperation","startingRowTop","startingRowHeight","rowTopPixel","rowBottomPixel","heightOffset","vScrollTop","vScrollBottom","viewportHeight","pxTop","pxBottom","pxMiddle","newScrollPosition","updateScrollVisibleService","checkBodyHeight","onHorizontalViewportChanged","onBodyHorizontalScroll","updateScrollVisibleServiceImpl","setHorizontalScrollVisible","setVerticalScrollPaddingVisible","scrollSize","scrollContainerSize","addIEPadding","eHorizontalScrollBody","eBodyHorizontalScrollViewport","eBodyHorizontalScrollContainer","scroller","setFakeHScrollSpacerWidths","viewportLeftPixel","viewportRightPixel","colLeftPixel","colRightPixel","viewportWidth","viewportScrolledPastCol","viewportScrolledBeforeCol","colToSmallForViewport","alignColToLeft","alignColToRight","setCenterViewportScrollLeft","overlayWrapper","nextTimeout","eTopViewport","eBottomViewport","eLeftBottom","eLeftTop","eRightBottom","eRightTop","eFullWidthContainer","rowContainerComponents","eCenterColsClipper","eTopContainer","eTopFullWidthContainer","eBottomContainer","eBottomFullWidthContainer","getFloatingTopBottom","setCenterWidth","widthPx","setPinnedLeftWidth","oldPinning","widthOfCols","newPinning","setPinnedRightWidth","rightSpacing","eHorizontalRightSpacer","leftSpacing","eHorizontalLeftSpacer","totalHeaderHeight","floatingTopHeight","floatingBottomHeight","floatingTopHeightString","floatingBottomHeightString","doHorizontalScroll","oldScrollPosition","onCenterViewportScroll","onFakeHorizontalScroll","onVerticalScroll","redrawRowsAfterScroll","isControllingScroll","lastHorizontalScrollElement","eSource","partner","AgColorPanel","isSpectrumDragging","isSpectrumHueDragging","isSpectrumAlphaDragging","colorChanged","picker","initRecentColors","spectrumVal","onSpectrumDraggerDown","onSpectrumDraggerMove","spectrumHue","onSpectrumHueDown","onSpectrumHueMove","spectrumAlpha","onSpectrumAlphaDown","onSpectrumAlphaMove","recentColors","onRecentColorClick","refreshSpectrumRect","spectrumValRect","refreshHueRect","spectrumHueRect","refreshAlphaRect","spectrumAlphaRect","moveDragger","moveHueSlider","moveAlphaSlider","valRect","setSpectrumValue","hueRect","slider","spectrumHueSlider","sliderRect","alphaRect","spectrumAlphaSlider","spectrumColor","rgbaColor","spectrumDragger","saturation","brightness","dragger","draggerRect","innerHtml","addRecentColor","maxRecentColors","AgPickerField","displayedPicker","isDestroyingPicker","eButton","showPicker","pickerIcon","eDisplayField","eGuiRect","colorDialog","colorPanel","wasDestroying","DefaultColumnTypes","numericColumn","columnKeyCreator","existingColsCopy","unbalancedTree","recursivelyCreateColumns","findMaxDept","balanceColumnTree","autoGroupCols","fakeTreeItem","createAutoGroupTreeItem","nextChild","findDepth","autoGroup","currentDept","newChildren","firstPaddedGroup","currentPaddedGroup","newColId","colGroupDefMerged","createMergedColGroupDef","paddedGroup","treeChildren","maxDeptThisLevel","newGroupOrColumn","createColumn","checkForDeprecatedItems","colDefMerged","findExistingColumn","oldColDef","assignColumnTypes","typeKeys","allColumnTypes","typeColDef","colDefNoType","headerGroup","suppressRowGroup","suppressAggregation","formatMuiErrorMessage","encodeURIComponent","mobileStepper","speedDial","appBar","drawer","snackbar","seenValues","previouslySeenValues","customInspectFn","getCustomFn","customValue","remaining","formatArray","getObjectTag","formatObject","formatObjectValue","dedentBlockStringValue","rawString","commonIndent","leadingWhitespace","getBlockStringIndentation","isBlank","printBlockString","indentation","preferMultipleLines","isSingleLine","hasLeadingSpace","hasTrailingQuote","printAsMultipleLines","hasSymbol","getScrollbarSize","scrollDiv","scrollbarSize","toParse","DEFAULT_COLUMN_COMP","DEFAULT_FILTER_COMP","comps_1","lookupResult","DEFAULT_BY_KEY","parseComponents","filters","customFilterOptions","mapCustomOptions","selectDefaultItem","firstFilterOption","formatDistanceLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatDistance","addSuffix","comparison","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","formatRelative","_date","_baseDate","_dirtyOptions","rem100","narrow","abbreviated","wide","am","pm","midnight","noon","morning","afternoon","evening","night","dateLongFormatter","timeLongFormatter","dateTimeFormat","datePattern","timePattern","dateTime","fourthOfJanuaryOfNextYear","fourthOfJanuaryOfThisYear","RadioGroupContext","TableContext","lastDayOfMonth","addWeeks","days","compareLocalAsc","getMilliseconds","differenceInDays","isLastDayNotFull","getStyleValue","TextareaAutosize","rowsMax","_props$rowsMin","rowsMin","rowsMinProp","handleRef","shadowRef","renders","syncHeight","inputShallow","singleRowHeight","outerHeight","outerHeightStyle","handleResize","InputBase","ariaDescribedby","endAdornment","_props$fullWidth","_props$inputComponent","inputComponent","_props$inputProps","inputPropsProp","inputRefProp","_props$multiline","multiline","onKeyUp","renderSuffix","_props$type","valueProp","handleInputRefWarning","handleInputPropsRefProp","handleInputRefProp","handleInputRef","setFocused","fcs","onFilled","onEmpty","checkDirty","InputComponent","setAdornedStart","formControl","adornedStart","adornedEnd","marginDense","onAnimationStart","animationName","inputMultiline","hiddenLabel","inputHiddenLabel","inputAdornedStart","inputAdornedEnd","inputTypeSearch","inputMarginDense","light","placeholderHidden","placeholderVisible","animationDuration","SelectAllFeature","cbSelectAll","cbSelectAllVisible","processingEventFromCheckbox","filteredOnly","headerCheckboxSelectionFilteredOnly","showOrHideSelectAll","onModelChanged","onCbSelectAll","isCheckboxSelection","checkRightRowModelType","updateStateOfCheckbox","getNextCheckboxState","selectionCount","notSelected","getSelectionCount","allSelected","selectedCount","notSelectedCount","suppressMenu","appendHeaderComp","setupMenuClass","setupSortableClass","addColumnHoverListener","showColumnMenu","eHeaderCellLabel","eResize","normaliseResizeAmount","resizeWithShiftKey","onMenuVisible","full","long","medium","startOfUTCWeekYear","firstWeek","startOfUTCISOWeekYear","fourthOfJanuary","maxDepth","isarray","isbuffer","newKey","unflatten","overwrite","getkey","parsedKey","key1","key2","recipient","isobject","Ripple","_props$pulsate","pulsate","rippleX","rippleY","rippleSize","inProp","_props$onExited","leaving","setLeaving","rippleClassName","ripple","rippleVisible","ripplePulsate","rippleStyles","childClassName","childLeaving","childPulsate","handleExited","timeoutId","TouchRipple","_props$center","centerProp","ripples","setRipples","rippleCallback","ignoringMouseDown","startTimer","startTimerCommit","startCommit","oldRipples","_options$pulsate","_options$center","_options$fakeElement","fakeElement","sizeX","sizeY","persist","TransitionGroup","ButtonBase","buttonRefProp","buttonRef","_props$centerRipple","centerRipple","_props$disabled","_props$disableRipple","disableRipple","_props$disableTouchRi","disableTouchRipple","_props$focusRipple","focusRipple","focusVisibleClassName","onFocusVisible","_props$tabIndex","TouchRippleProps","rippleRef","focusVisible","setFocusVisible","_useIsFocusVisible","focusVisibleRef","useRippleHandler","rippleAction","eventCallback","skipRippleAction","handleMouseDown","handleDragLeave","handleMouseUp","handleMouseLeave","handleTouchStart","handleTouchEnd","handleTouchMove","handleBlur","handleFocus","isNonNativeButton","keydownRef","handleKeyUp","ComponentProp","buttonProps","handleUserRef","handleOwnRef","_React$useState2","mountedState","setMountedState","enableTouchRipple","textDecoration","colorAdjust","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","hasSymbols","toStr","origDefineProperty","supportsDescriptors","arePropertyDescriptorsSupported","predicates","disableUnderline","bottomLineColor","borderBottomColor","borderBottomStyle","FormControl","_props$error","visuallyFocused","_props$hiddenLabel","_props$margin","_props$required","initialAdornedStart","initialFilled","filled","setFilled","_React$useState3","_focused","childContext","registerEffect","marginNormal","FormHelperText","contained","sizerStyle","INPUT_PROPS_BLACKLIST","copyStyles","placeHolderSizerRef","placeHolderSizer","sizerRef","sizer","inputWidth","mounted","copyInputStyles","updateInputWidth","onAutosize","inputStyles","newInputWidth","placeholderIsMinWidth","extraWidth","injectStyles","sizerValue","wrapperStyle","cleanInputProps","inputClassName","renderStyles","NotchedOutline","labelWidthProp","notched","legendLabelled","legendNotched","OutlinedInput","_props$labelWidth","notchedOutline","WebkitBoxShadow","WebkitTextFillColor","caretColor","FormLabel","asterisk","InputLabel","_props$disableAnimati","disableAnimation","shrinkProp","shrink","animated","transformOrigin","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","tokens","defaultDelimiter","escaped","modifier","repeat","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","encode","segment","attachKeys","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","endOfMonth","startOfMonth","startOfISOWeek","subMinutes","addMinutes","endOfWeek","endOfYear","isAfter","dirtyObject","setUTCDay","dirtyDay","currentDay","remainder","dayIndex","numericPatterns","timezonePatterns","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYearIndex","parsers","incompatibleTokens","isTwoDigitYear","normalizedTwoDigitYear","_match","_flags","firstWeekOfYear","dirtyWeek","setUTCWeek","dirtyISOWeek","setUTCISOWeek","isLeapYear","wholeWeekDays","setUTCISODay","isPM","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","timestampIsSet","_token","notWhitespaceRegExp","dateToSystemTimezone","convertedDate","startOfYear","cleanDate","DateFnsUtils","yearFormat","yearMonthFormat","dateTime12hFormat","dateTime24hFormat","time12hFormat","time24hFormat","dateFormat","getDiff","comparing","dirtyHours","setMinutes","dirtyMinutes","seconds","dirtySeconds","getYear","setYear","dirtyYear","formatString","dirtyDateString","dirtyFormatString","dirtyReferenceDate","dateString","subFnOptions","setters","usedTokens","incompatibleToken","usedToken","fullToken","uniquePrioritySetters","setter","setterArray","dateFnsParse","dirtyLeftDate","dirtyRightDate","isNull","isAfterDay","isBeforeDay","isBeforeYear","isAfterYear","numberToFormat","dirtyMonth","getMeridiemText","ampm","getNextMonth","getPreviousMonth","getMonthArray","monthArray","prevMonth","mergeDateAndTime","getWeekdays","getWeekArray","nestedWeeks","weekNumber","getYearRange","years","getCalendarHeaderText","getYearText","getDatePickerHeaderText","getDateTimePickerHeaderText","getMonthText","getDayText","getHourText","getMinuteText","getSecondText","queryFromPojo","selectionSetFromObj","Cache","justTypenameQuery","currentContext","MISSING_VALUE","host","Slot","slots","withValue","saved","noContext","defaultDispose","dispose","newest","oldest","getEntry","older","newer","clean","parentEntrySlot","reusableEmptyArray","emptySetPool","assert","optionalMessage","valueGet","childValues","dirtyChildren","recomputing","Entry","recompute","mightBeDirty","reportDirtyChild","reportCleanChild","rememberParent","maybeReportOrphan","originalChildren","forgetChildren","recomputeNewValue","maybeUnsubscribe","maybeSubscribe","reportClean","setClean","reallyRecompute","reportDirty","forgetChild","childValue","valueIs","removeDirtyChild","reportOrphan","weakness","lookup","lookupArray","getChildTrie","isObjRef","weak","strong","KeyTrie","haveWarned","shouldWarn","answer","ensureReady","canBypassInit","idValue","isRootQuery","introspectionQueryResultData","possibleTypesMap","parseIntrospectionResult","implementingTypes","introspectionResultData","typeMap","__schema","types","possibleTypes","implementingType","depend","disposable","makeCacheKey","defaultNormalizedCacheFactory","cacheKeyRoot","freezeResults","executeStoreQuery","executeSelectionSet","executeSubSelectedArray","variableValues","readQueryFromStore","diffQueryAgainstStore","rootId","fragmentMatcherFunction","queryDefinition","cacheRedirects","execResult","hasMissingFields","tolerable","finalResult","objectsToMerge","handleMissing","executeField","fragmentExecResult","readStoreResult","resultKey","storeKeyName","fieldValue","resolver","storeObj","readStoreResolver","combineExecResults","assertSelectionSetForIdValue","execResults","childResult","defaultFragmentMatcher","writeQueryToStore","writeResultToStore","operationDefinition","writeSelectionSetToStore","processedData","enhancedError","enhanceErrorWithDocument","resultFieldKey","writeFieldToStore","isDefered","isClient","fakeContext","ObjectCache","storeObject","storeFieldName","generatedId","processArrayValue","valueDataId","isGeneratedId","semanticId","isDataProcessed","escapedId","hadTypename","hasTypename","typenameChanged","mergeWithGenerated","generatedKey","realKey","real","madeChanges","realValue","newRealValue","itemDataId","defaultConfig","HeuristicFragmentMatcher","_id","addTypename","resultCaching","optimisticId","watches","typenameDocumentCache","silenceBroadcast","customResolvers","cacheResolvers","optimisticData","storeWriter","storeReader","maybeBroadcastWatch","read","broadcastWatches","evict","idToRemove","toReapply","removedCount","layer","multiKeyStore","subCache","indexCounter","getStylesCreator","themingEnabled","stylesWithOverrides","noopTheme","getClasses","stylesOptions","cacheClasses","lastProp","lastJSS","generate","mergeClasses","baseClasses","newClasses","stylesCreator","sheetManager","staticSheet","dynamicStyles","dynamicSheet","useSynchronousEffect","currentKey","makeStyles","classNamePrefixOption","_options$defaultTheme","stylesOptions2","useStyles","shouldUpdate","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","runClearTimeout","Item","nextTick","browser","argv","versions","once","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","umask","omit","displayPrint","displayRaw","initialiseAgGridWithAngular1","angular","restrict","AngularDirectiveController","$element","$attrs","keyOfGridInScope","agGrid","$eval","gridParams","$on","initialiseAgGridWithWebComponents","registerElement","AgileGridProto","__agGridSetProperty","__agGridGetProperty","agGridProtoNoType","__attributes","changeObject","_initialised","_gridOptions","setGridOptions","_agGrid","createdCallback","setPropertyFromAttribute","myString","attachedCallback","detachedCallback","attributeChangedCallback","eventLowerCase","browserEvent","Event","agGridDetails","callbackMethod","eHeader","afterAttachedParams","eDummyBody","itemWrapper","eClone","tabbedItem","showItemWrapper","eHeaderButton","activeItem","simpleHttpRequest","httpRequest","onreadystatechange","readyState","httpResponse","activeBlockLoadsCount","blocks","checkBlockToLoadDebounce","performCheckBlocksToLoad","addBlock","removeBlock","loadComplete","printCacheStatus","blockToLoad","pageStatus","blockCount","checkVirtualRowCount","purgeBlocksIfNeeded","blockToExclude","blocksForPurging","maxBlocksProvided","blocksToKeep","emptyBlocksToKeep","MAX_EMPTY_BLOCKS_TO_KEEP","removeBlockFromCache","setBlock","blockToRemove","lastRowIndexPlusOverflow","getBlockIdsSorted","forEachBlockId","idStr","inActiveRange","foundGapInSelection","hitFirstOrLast","MessageBox","messageBodyComp","MessageBody","setMessage","eCenter","eOk","onBtOk","rowsInBodyContainer","eListContainer","getItemHeight","viewportTopPixel","viewportScrolledBeforeRow","componentCreator","clearVirtualRows","drawVirtualRows","removeVirtualRows","ensureRowsRendered","insertRow","defaultGroupComparator","nodeAIsGroup","nodeBIsGroup","bothAreNormal","BaseComponentWrapper","OriginalConstructor","createWrapper","createMethod","mandatory","addMethod","createMethodProxy","hasMethod","callMethod","react_1","AgGrid","mapChildColumnDefs","columnProps","toColDef","createColDefFromGridColumn","hasChildColumns","getChildColDefs","columnChildren","addProperties","listOfProps","propType","propKey","isArgs","origKeys","keysShim","originalKeys","shim","TypeErr","dotAll","unicode","sticky","implementation","gOPD","isValidLatLng","arePathsEqual","_styles","_defaultTheme","50","100","200","300","400","500","600","700","800","900","A100","A200","A400","A700","isDeleteKeyboardEvent","Chip","avatarProp","avatar","clickableProp","clickable","deleteIconProp","deleteIcon","iconProp","onDelete","_props$size","chipRef","handleDeleteIconClick","small","moreProps","customClasses","deleteIconSmall","CancelIcon","avatarSmall","iconSmall","outlinedPrimary","outlinedSecondary","sizeSmall","deletable","labelSmall","deleteIconColor","getContrastText","contrastText","dark","clickableColorPrimary","clickableColorSecondary","deletableColorPrimary","deletableColorSecondary","hoverOpacity","avatarColorPrimary","avatarColorSecondary","iconColorPrimary","iconColorSecondary","deleteIconColorPrimary","deleteIconColorSecondary","deleteIconOutlinedColorPrimary","deleteIconOutlinedColorSecondary","symbolObservablePonyfill","_arrayWithHoles","_nonIterableRest","_iterableToArray","_implementation2","cycles","aobj","bobj","seenIndex","_renderChildren","Fragment","Can","unsubscribeFromAbility","_isAllowed","_ability","connectToAbility","isAllowed","_split","do","an","passThrough","createCanBoundTo","_Can","BoundCan","instanceOf","createThunkMiddleware","extraArgument","thunk","withExtraArgument","timeoutDuration","longerTimeoutBrowsers","functionToCheck","getStyleComputedProperty","getParentNode","getReferenceNode","reference","isIE11","isIE10","getOffsetParent","noOffsetParent","getRoot","findCommonOffsetParent","element1","element2","commonAncestorContainer","isOffsetContainer","element1root","getScroll","upperSide","scrollingElement","includeScroll","getBordersSize","sideA","sideB","getSize","getWindowSizes","getClientRect","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","runIsIE","isHTML","childrenRect","borderTopWidth","borderLeftWidth","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","getFixedPositionOffsetParent","getBoundaries","boundaries","boundariesElement","boundariesNode","popper","isPaddingNumber","getArea","computeAutoPlacement","rects","refRect","sortedAreas","filteredAreas","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","modifiers","ends","positionFixed","isModifierEnabled","modifierName","getSupportedPropertyName","upperProp","toCheck","getWindow","setupEventListeners","scrollElement","attachToScrollParents","scrollParents","enableEventListeners","disableEventListeners","removeEventListeners","setStyles","isModifierRequired","requesting","requested","validPlacements","placements","clockwise","BEHAVIORS","parseOffset","useHeight","basePlacement","splitRegex","mergeWithPrevious","toValue","index2","shiftvariation","shiftOffsets","transformProp","popperStyles","opSide","arrowElement","sideCapitalized","altSide","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flippedVariationByContent","flippedVariation","getOppositeVariation","subtractLength","bound","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","bothOddWidth","getRoundedOffsets","prefixedProperty","invertTop","invertLeft","Popper","modifierOptions","eventsEnabled","PopperUtils","Defaults","_reactTapper2","mapToArray","getYearMon","ym","getYearsByNum","minYear","maxYear","getYearArray","ymin","ymax","MonthPicker","yearArr","yearIndexes","labelYears","showed","closeable","_handleOverlayTouchTap","handleClickMonth","goPrevYear","goNextYear","_keyDown","thisYear","foundThisYear","nextValues","padIndex","labelYear","ymArr","lang","months","prevCss","nextCss","yearMaxIdx","yearIdx","yearActive","atMinYear","atMaxYear","otherValue","labelTextKey","labelPreText","_m","vm","clickHandler","pads","popupClass","optionPad","onTap","_onDismiss","_onShow","onClickAway","onShow","onDismiss","refid","getDID","yearIndex","theYear","onYearChange","dataset","_reset","MuiPickersContext","MuiPickersUtilsProvider","utils","libInstance","moment","argType","eachWeekOfInterval","startDateWeek","endDateWeek","weeks","currentWeek","eachMonthOfInterval","subDays","subMonths","defaultChipRenderer","_Input","_FilledInput","_OutlinedInput","_InputLabel","_Chip","_withStyles","_blue","_FormControl","_FormHelperText","_clsx","_arrayWithoutHoles","_nonIterableSpread","variantComponent","keyCodes","ChipInput","chips","errorText","focusedChip","isClean","chipsUpdated","prevPropsValue","actualInput","blurBehavior","delayBeforeAdd","numChipsBefore","inputBlurTimeout","numChipsAfter","handleAddChip","clearInput","_keyPressed","_preventChipCreation","isDefaultPrevented","newChipKeyCodes","handleDeleteChip","updateInput","onUpdateInput","labelRef","createRef","newState","clearInputValueOnChange","labelNode","chip","onBeforeAdd","_chip","dataSourceConfig","allowDuplicates","onAdd","updateChips","additionalUpdates","_cx2","alwaysShowPlaceholder","_this$props$chipRende","chipRenderer","dataSource","FormHelperTextProps","fullWidthInput","helperText","_this$props$InputProp","InputProps","_this$props$InputLabe","InputLabelProps","rootRef","actualInputValue","hasInput","shrinkFloatingLabel","chipComponents","handleClick","handleDelete","InputMore","htmlFor","labelShrink","chipContainer","inkbar","labeled","inputRoot","handleUpdateInput","handleKeyPress","handleInputFocus","handleInputBlur","setActualInputRef","oneOf","arrayOf","appearance","flexFlow","backgroundImage","backgroundPosition","backgroundRepeat","backgroundSize","createBreakpoints","_breakpoints$values","_breakpoints$unit","_breakpoints$step","between","down","upperbound","createMixins","_toolbar","gutters","toolbar","common","hint","hover","selectedOpacity","disabledBackground","disabledOpacity","focusOpacity","activatedOpacity","addLightOrDark","intent","tonalOffset","tonalOffsetLight","tonalOffsetDark","createPalette","_palette$primary","_palette$secondary","_palette$error","_palette$warning","_palette$info","_palette$success","_palette$type","_palette$contrastThre","contrastThreshold","_palette$tonalOffset","augmentColor","mainShade","lightShade","darkShade","caseAllCaps","createTypography","_ref$fontFamily","_ref$fontSize","_ref$fontWeightLight","fontWeightLight","_ref$fontWeightRegula","fontWeightRegular","_ref$fontWeightMedium","fontWeightMedium","_ref$fontWeightBold","fontWeightBold","_ref$htmlFontSize","htmlFontSize","allVariants","pxToRem2","coef","buildVariant","casing","variants","createShadow","createSpacing","spacingInput","mui","_options$breakpoints","breakpointsInput","_options$mixins","mixinsInput","_options$palette","paletteInput","_options$typography","typographyInput","muiTheme","_isNativeReflectConstruct","construct","sham","Proxy","assertThisInitialized","_createSuper","Derived","Super","NewTarget","file","fileAccepted","accept","accepts","fileMatchSize","allFilesAccepted","isPropagationStopped","cancelBubble","isEvtWithFiles","onDocumentDragOver","isIe","isIeOrEdge","composeEventHandlers","_iterableToArrayLimit","Dropzone","_useDropzone","_ref2$disabled","_ref2$getFilesFromEve","getFilesFromEvent","fromEvent","_ref2$maxSize","_ref2$minSize","_ref2$multiple","multiple","onDragOver","onDrop","onDropAccepted","onDropRejected","onFileDialogCancel","_ref2$preventDropOnDo","preventDropOnDocument","_ref2$noClick","noClick","_ref2$noKeyboard","noKeyboard","_ref2$noDrag","noDrag","_ref2$noDragEventsBub","noDragEventsBubbling","_useReducer2","isFileDialogActive","draggedFiles","openFileDialog","useCallback","onWindowFocus","onKeyDownCb","isEqualNode","onFocusCb","onBlurCb","onClickCb","dragTargetsRef","onDocumentDrop","onDragEnterCb","isDragActive","onDragOverCb","dropEffect","_unused","onDragLeaveCb","targets","onDropCb","acceptedFiles","rejectedFiles","composeHandler","composeKeyboardHandler","composeDragHandler","getRootProps","_ref3$refKey","refKey","onInputElementClick","getInputProps","_ref4$refKey","fileCount","isMultipleAllowed","isDragAccept","isDragReject","useDropzone","useImperativeHandle","printDocASTReducer","varDefs","_ref8","_ref9","_ref10","_ref11","_ref12","_ref13","_ref14","_ref15","_ref16","_ref17","_ref18","_ref19","_ref20","operationTypes","_ref21","addDescription","_ref22","_ref23","interfaces","_ref24","hasMultilineItems","_ref25","_ref26","_ref27","_ref28","_ref29","_ref30","_ref31","repeatable","locations","_ref32","_ref33","_ref34","_ref35","_ref36","_ref37","_ref38","description","maybeArray","maybeString","isMultiline","fallbackHttpConfig","http","includeQuery","includeExtensions","headers","throwServerError","statusCode","parseError","linkOptions","uri","fetch","useGETForQueries","fetcher","linkConfig","requestOptions","fetchOptions","credentials","chosenURI","fallbackURI","contextURI","selectURI","clientAwarenessHeaders","contextHeaders","contextConfig","fallbackConfig","configs","signal","AbortController","_controller","queryParams","addQueryParam","serializedVariables","serializedExtensions","preFragment","fragmentStart","queryParamsPrefix","newURI","setContext","bodyText","nextItem","disableListWrap","nextElementSibling","previousItem","previousElementSibling","textCriteriaMatches","textCriteria","repeating","moveFocus","currentFocus","disabledItemsFocusable","traversalFunction","wrappedOnce","nextFocusDisabled","hasAttribute","_props$autoFocus","_props$autoFocusItem","autoFocusItem","_props$disabledItemsF","_props$disableListWra","listRef","textCriteriaRef","previousKeyMatched","lastTime","adjustStyleForScrollbar","containerElement","noExplicitWidth","activeItemIndex","criteria","lowerKey","currTime","performance","keepFocusOnCurrent","RTL_ORIGIN","LTR_ORIGIN","_props$disableAutoFoc","disableAutoFocusItem","_props$MenuListProps","MenuListProps","onClose","_props$PaperProps","PaperProps","PopoverClasses","_props$transitionDura","menuListActionsRef","contentAnchorRef","Popover","getContentAnchorEl","isAppearing","anchorOrigin","getScale","entering","entered","Grow","_props$disableStrictM","disableStrictModeCompat","_props$timeout","_props$TransitionComp","TransitionComponent","timer","autoTimeout","enableStrictModeCompat","unstable_strictMode","foreignRef","normalizedTransitionCallback","nodeOrAppearing","handleEntering","handleEnter","_getTransitionProps","handleEntered","handleExiting","handleExit","_getTransitionProps2","nodeOrNext","maybeNext","muiSupportAuto","defaultTimeout","Fade","transitionProps","webkitTransition","ignoreImportant","styleRule","registry$1","fnValuesNs","fnRuleNs","functionPlugin","fnValues","fnRule","GlobalContainerRule","GlobalPrefixedRule","separatorRegExp","addScope","jssGlobal","handleNestedGlobalContainerRule","handlePrefixedGlobalRule","parentRegExp","jssNested","getReplaceRef","replaceParentRefs","nestedProp","parentProp","parentSelectors","nestedSelectors","nested","nestingLevel","isNested","isNestedConditional","uppercasePattern","msPattern","toHyphenLower","hyphenateStyleName","hName","convertCase","hyphenate","hyphenatedProp","hasCSSTOMSupport","ms","percent","addCamelCasedVersion","regExp","newObj","units","inset","motion","perspective","gap","innerProp","_innerProp","defaultUnit","camelCasedOptions","js","isTouch","jsCssMap","Moz","Webkit","appearence","noPrefill","supportedProperty","toUpper","pascalize","mask","textOrientation","writingMode","breakPropsOld","inlineLogicalOld","newProp","unprefixed","prefixed","pascalized","scrollSnap","overscrollBehavior","propMap","flex2012","propMap$1","propKeys","prefixCss","propertyDetectors","computed","key$1","el$1","cache$1","transitionProperties","transPropsRegExp","prefixTransitionCallback","prefixedValue","supportedValue","jssVendorPrefixer","prefixStyle","changeProp","supportedProp","changeValue","supportedValue$1","atRule","jssPropsSort","prop0","prop1","functions","vendorPrefixer","propsSort","ariaHidden","getPaddingRight","ariaHiddenSiblings","mountNode","currentNode","nodesToExclude","blacklistTagNames","findIndexOf","containerInfo","handleContainer","fixedNodes","restoreStyle","restorePaddings","disableScrollLock","isOverflowing","scrollContainer","ModalManager","modals","modalIndex","modalRef","hiddenSiblingNodes","hiddenSiblings","getHiddenSiblings","containerIndex","nextTop","Unstable_TrapFocus","disableAutoFocus","_props$disableEnforce","disableEnforceFocus","_props$disableRestore","disableRestoreFocus","getDoc","ignoreNextEnforceFocus","sentinelStart","sentinelEnd","nodeToRestore","prevOpenRef","contain","hasFocus","loopFocus","invisible","SimpleBackdrop","_props$invisible","defaultManager","Modal","inProps","getThemeProps","_props$BackdropCompon","BackdropComponent","BackdropProps","_props$closeAfterTran","closeAfterTransition","_props$disableBackdro","disableBackdropClick","_props$disableEscapeK","disableEscapeKeyDown","_props$disablePortal","disablePortal","_props$disableScrollL","_props$hideBackdrop","hideBackdrop","_props$keepMounted","keepMounted","_props$manager","manager","onBackdropClick","onRendered","exited","setExited","mountNodeRef","hasTransition","getHasTransition","getModal","handleMounted","mount","handleOpen","resolvedContainer","isTopModal","handlePortalRef","handleClose","inlineStyle","Portal","TrapFocus","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","isReactComponent","isPureReactComponent","__self","__source","_owner","V","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","_ctor","_status","_result","useDebugValue","useState","Profiler","StrictMode","Suspense","createFactory","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","extractEvents","eventTypes","phasedRegistrationNames","registrationName","pa","qa","sa","va","wa","ra","xa","ya","za","Aa","_dispatchListeners","_dispatchInstances","isPersistent","release","Ba","Ca","injectEventPluginOrder","injectEventPluginsByName","Da","stateNode","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Wa","Xa","_debugOwner","_debugSource","lineNumber","Ya","Za","$a","ab","bb","db","eb","fb","gb","hb","ib","jb","lb","mb","ob","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","sb","tb","vb","qb","rb","pb","setAttributeNS","yb","_valueTracker","stopTracking","xb","zb","Ab","_wrapperState","initialChecked","Bb","Cb","Eb","Fb","Gb","Ib","Hb","Jb","defaultSelected","Kb","Lb","Mb","Nb","xlinkHref","Ob","Pb","Qb","Rb","Sb","MSApp","execUnsafeLocalFunction","namespaceURI","Tb","Ub","Vb","animationend","animationiteration","animationstart","transitionend","Wb","Xb","Yb","Zb","$b","ac","ec","alternate","effectTag","fc","memoizedState","dehydrated","ic","hc","jc","kc","lc","mc","nc","oc","pc","qc","sc","tc","uc","vc","zc","blockedOn","topLevelType","eventSystemFlags","nativeEvent","Ac","pointerId","Bc","Cc","Ec","Fc","unstable_runWithPriority","hydrate","Gc","Hc","Ic","Jc","Kc","unstable_scheduleCallback","unstable_NormalPriority","Lc","Mc","correspondingUseElement","Nc","Oc","dispatchConfig","Pc","_targetInst","Qc","Rc","Sc","Tc","Uc","Interface","Wc","eventPool","Xc","destructor","Vc","getPooled","eventPhase","timeStamp","isTrusted","extend","Yc","elapsedTime","pseudoElement","Zc","$c","ad","bd","cd","Esc","Spacebar","Del","Win","Apps","Scroll","MozPrintableKey","ed","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","fd","Alt","Meta","Shift","gd","getModifierState","hd","jd","kd","ld","nd","fromElement","toElement","od","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","pd","qd","targetTouches","rd","sd","deltaZ","td","ud","vd","xd","yd","zd","Ad","Bd","Cd","Dd","bubbled","captured","eventPriority","Ed","getEventPriority","Fd","unstable_UserBlockingPriority","Gd","Hd","Jd","Kd","targetInst","Ld","Md","Nd","Od","Pd","Qd","Dc","Rd","Sd","xc","yc","Td","lineClamp","Ud","Vd","Wd","Xd","menuitem","br","embed","hr","keygen","param","track","wbr","Yd","Zd","$d","ae","be","ce","de","fe","HTMLIFrameElement","contentWindow","ge","contentEditable","le","me","ne","oe","pe","qe","se","previousSibling","te","ue","ve","we","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","beforeInput","compositionEnd","compositionStart","compositionUpdate","Me","Ne","Oe","Pe","Se","Qe","char","Re","Te","Ue","Ve","We","Xe","Ye","Ze","$e","af","bf","cf","detachEvent","df","ef","attachEvent","gf","hf","lf","jf","_isInputEventSupported","kf","mouseEnter","mouseLeave","pointerEnter","pointerLeave","mf","parentWindow","qf","rf","sf","tf","uf","vf","wf","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","yf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","unstable_cancelCallback","Of","unstable_shouldYield","Pf","unstable_requestPaint","Qf","unstable_now","Rf","unstable_getCurrentPriorityLevel","Sf","unstable_ImmediatePriority","Tf","Uf","Vf","unstable_LowPriority","Wf","unstable_IdlePriority","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","hg","ig","jg","kg","mg","ng","og","pg","qg","rg","sg","tg","ug","childExpirationTime","vg","firstContext","expirationTime","wg","xg","responders","yg","zg","baseState","firstUpdate","lastUpdate","firstCapturedUpdate","lastCapturedUpdate","firstEffect","lastEffect","firstCapturedEffect","lastCapturedEffect","Ag","Bg","suspenseConfig","nextEffect","Cg","Dg","updateQueue","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Sg","_reactInternalFiber","Pg","Qg","Rg","Tg","shouldComponentUpdate","Ug","Vg","UNSAFE_componentWillReceiveProps","Wg","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Xg","Yg","_stringRef","Zg","$g","ah","bh","elementType","ch","dh","eh","ta","fh","gh","ih","jh","kh","lh","mh","nh","oh","ph","qh","memoizedProps","revealOrder","rh","responder","sh","th","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","baseUpdate","Oh","Ph","Qh","lastRenderedReducer","lastRenderedState","eagerReducer","eagerState","Rh","Sh","Th","Uh","deps","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","readContext","useResponder","useDeferredValue","useTransition","unstable_next","di","ei","fi","gi","pendingProps","ji","ki","li","mi","ni","oi","qi","ri","si","ti","ui","UNSAFE_componentWillUpdate","componentWillUpdate","vi","wi","pendingContext","Hi","Ji","Ki","xi","retryTime","yi","unstable_avoidThisFallback","zi","Ai","isBackwards","rendering","tailExpiration","tailMode","Bi","Ci","Li","Mi","Ni","onclick","Oi","WeakSet","Pi","Si","Ri","Ti","Ui","__reactInternalSnapshotBeforeUpdate","Vi","Wi","Qi","Xi","Yi","Zi","$i","_reactRootContainer","aj","wasMultiple","bj","cj","dj","ej","fj","gj","hj","ij","componentDidCatch","jj","componentStack","gk","kj","lj","mj","wj","xj","yj","zj","Aj","Bj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","timeoutMs","Kj","Lj","Mj","Nj","Oj","lastExpiredTime","Pj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Qj","Rj","Sj","Tj","Uj","Vj","Wj","finishedWork","finishedExpirationTime","lastSuspendedTime","Xj","timeoutHandle","Yj","busyMinDurationMs","busyDelayMs","Zj","bk","ck","pingCache","dk","ek","fk","ik","firstSuspendedTime","Db","focusedElem","selectionRange","jk","ee","compareDocumentPosition","createRange","setStart","removeAllRanges","setEnd","Dh","cc","dd","hk","Eh","Fh","xk","Di","Ei","Fi","wd","Gi","kk","lk","mk","Va","nk","unstable_observedBits","pk","pendingChildren","qk","rk","sk","tk","uk","vk","wk","wc","_internalRoot","yk","Ak","zk","Bk","form","ak","Ck","unstable_renderSubtreeIntoContainer","unmountComponentAtNode","unstable_createPortal","unstable_batchedUpdates","flushSync","findFiberByHostInstance","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","Dk","Ek","MessageChannel","unstable_forceFrameRate","port2","port1","onmessage","postMessage","sortIndex","startTime","priorityLevel","unstable_wrapCallback","unstable_continueExecution","unstable_pauseExecution","unstable_getFirstCallbackNode","unstable_Profiling","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","secret","getShim","ReactPropTypes","objectOf","checkPropTypes","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Lazy","isValidElementType","isAsyncMode","isConcurrentMode","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","originalModule","webpackPolyfill","Uint16Array","listing","pre","suppressContentEditableWarning","suppressHydrationWarning","domNamespace","threadID","exhausted","currentSelectValue","previousWasTextNode","makeStaticMarkup","suspenseDepth","contextIndex","contextStack","contextValueStack","clearProviders","pushProvider","popProvider","fallbackFrame","renderDOM","renderToString","renderToNodeStream","renderToStaticNodeStream","readFloatLE","isSlowBuffer","_isBuffer","_gud2","_temp2","makeEmptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","getSymbol","SymbolIterator","SymbolObservable","SymbolSpecies","getMethod","getSpecies","isObservable","hostReportError","enqueue","cleanupSubscription","_cleanup","closeSubscription","_queue","_state","notifySubscription","onNotify","flushSubscription","subscriber","subscriptionObserver","SubscriptionObserver","_subscriber","hasSeed","startNext","outer","completeIfDone","closed","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","innerFn","outerFn","tryLocsList","protoGenerator","Generator","_invoke","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","abrupt","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","isGeneratorFunction","genFun","mark","awrap","skipTempReset","rootRecord","rval","exception","handle","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","buf","Buffer","allocUnsafe","cloneBuffer","cloneSymbol","byteLength","cloneArrayBuffer","buffer","byteOffset","cloneTypedArray","cloneRegExp","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","encodingOrOffset","ArrayBuffer","fromArrayLike","fromArrayBuffer","isEncoding","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","bytesPerSequence","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","swap16","swap32","swap64","thisStart","thisEnd","thisCopy","targetCopy","toHex","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","dst","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","extraBytes","len2","encodeChunk","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","ctorName","toDateString","stackTraceLimit","isError","isRegexp","throw","isGeneratorObj","isObjectObject","prot","core_1","agGridColumn_1","reactComponent_1","changeDetectionService_1","changeDetectionService","portals","hasPendingPortalUpdate","createStyleForDiv","ReactFrameworkComponentWrapper","waitForInstance","runningTime","isStatelessComponent","statelessComponentRendered","getFrameworkComponentInstance","MAX_COMPONENT_CREATION_TIME","getReactComponentName","mountReactPortal","portal","batchUpdate","destroyPortal","curPortal","getStrategyTypeForProp","rowDataChangeDetectionStrategy","ChangeDetectionStrategyType","IdentityCheck","DeepValueCheck","processPropsChanges","extractGridPropertyChanges","extractDeclarativeColDefChanges","debugLogging","detectionStrategy","getStrategy","currentColDefs","newColDefs","UserReactComponent","ReactComponent","baseReactComponent_1","utils_1","keyGenerator_1","componentWrappingElement","statelessComponent","isStateless","eParentElement","createParentElement","createReactComponent","addParentContainerStyleAndClasses","getReactContainerStyle","assignProperties","getReactContainerClasses","reactContainer","BaseReactComponent","frameworkComponentInstance","strategyMap","DeepValueStrategy","SimpleFunctionalStrategy","NoCheck","changeDetectionStrategy","strategy","areEquivalent","unwrapStringOrNumber","arrayCopy","newA","areEquivPropertyTracking","newB","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","isString","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","hasToStringTag","isStandardArguments","isLegacyArguments","supportsStandardArguments","NumberIsNaN","regexExec","tryRegexExecCall","ERROR_MESSAGE","binder","boundLength","boundArgs","Empty","getPolyfill","flagsBound","regex","polyfill","tryDateObject","_ScriptCache","_GoogleApi","_GoogleApi2","defaultCreateCache","apiKey","libraries","ScriptCache","DefaultLoadingContainer","Wrapper","loaded","obj1","obj2","unregisterLoadHandler","scriptCache","onLoad","LoadingContainer","_gapi","scriptMap","_scriptMap","scripts","stored","cbName","handleResult","evt","resolved","errored","onerror","_scriptTag","_onLoad","factory","GoogleApi","googleVersion","region","channel","markerPromise","wrappedPromise","renderMarker","setMap","pref","_server","_server2","renderInfoWindow","updatePosition","updateContent","openWindow","closeWindow","iw","infowindow","onOpen","setPosition","setContent","heatMapPromise","renderHeatMap","heatMap","positions","gradient","_props$radius","_props$opacity","visualization","HeatmapLayer","_arePathsEqual","polygonPromise","renderPolygon","polygon","strokeColor","strokeWeight","fillColor","polylinePromise","renderPolyline","polyline","hasCanceled_","isCanceled","_touchSupport2","_touchStyles2","Tappable","getInitialState","touchable","swiping","newComponentProps","onPress","onPinchStart","onPinchMove","onPinchEnd","moveThreshold","pressDelay","pressMoveThreshold","flickThreshold","absX","absY","cancelPageSwipe","calculatePos","onSwipingLeft","onSwipingRight","onSwipingUp","onSwipingDown","isFlick","onSwiped","onSwipedLeft","onSwipedRight","onSwipedUp","onSwipedDown","_handleTap","touchMove","touchEnd","onTouchCancel","touchCancel","_handleClick","_eventSupport","_eventSupport2","__TouchSupported","TAGNAMES","WebkitTouchCallout","WebkitUserSelect","KhtmlUserSelect","MozUserSelect","_interopRequireWildcard","_objectWithoutProperties2","_InputBase","borderTopLeftRadius","borderTopRightRadius","FilledInput","_getRequireWildcardCache","hasPropertyDescriptor","_utils","_createBreakpoints","_createMixins","_createPalette","_createTypography","_shadows","_shape","_createSpacing","_transitions","_zIndex","_extends3","_defineProperty2","_indigo","_pink","_red","_orange","_green","_colorManipulator","_common","_grey","rgbToHex","int","intToHex","_system","devAssert","defineToJSON","classObject","getLocation","lineRegexp","printLocation","printSourceLocation","sourceLocation","firstLineColumnOffset","locationOffset","whitespace","lineIndex","lineOffset","lineNum","columnOffset","columnNum","locationStr","locationLine","sublineIndex","sublineColumnNum","sublines","printPrefixedLines","subline","existingLines","padLen","GraphQLError","originalError","_nodes","_source","_locations","_positions","_extensions","originalExtensions","syntaxError","_error$nodes2","_i4","_error$locations2","printError","Kind","NAME","DOCUMENT","OPERATION_DEFINITION","VARIABLE_DEFINITION","SELECTION_SET","FIELD","ARGUMENT","FRAGMENT_SPREAD","INLINE_FRAGMENT","FRAGMENT_DEFINITION","VARIABLE","INT","FLOAT","STRING","BOOLEAN","NULL","ENUM","LIST","OBJECT","OBJECT_FIELD","DIRECTIVE","NAMED_TYPE","LIST_TYPE","NON_NULL_TYPE","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","OBJECT_TYPE_DEFINITION","FIELD_DEFINITION","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","UNION_TYPE_DEFINITION","ENUM_TYPE_DEFINITION","ENUM_VALUE_DEFINITION","INPUT_OBJECT_TYPE_DEFINITION","DIRECTIVE_DEFINITION","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","Source","TokenKind","SOF","EOF","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","BLOCK_STRING","COMMENT","advanceLexer","lastToken","lookahead","readToken","Tok","printCharCode","lexer","bodyLength","startPosition","lineStart","positionAfterWhitespace","readComment","readName","firstCode","isFloat","readDigits","readNumber","chunkStart","readBlockString","char2hex","invalidSequence","readString","unexpectedCharacterMessage","DirectiveLocation","QUERY","MUTATION","SUBSCRIPTION","SCHEMA","SCALAR","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","Parser","expectToken","parseValueLiteral","parseType","parseTypeReference","sourceObj","_lexer","startOfFileToken","advance","createLexer","parseName","many","parseDefinition","parseOperationDefinition","parseFragmentDefinition","parseTypeSystemDefinition","parseTypeSystemExtension","peekDescription","unexpected","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","optionalMany","parseVariableDefinition","parseVariable","expectOptionalToken","parseSelection","parseFragment","parseField","nameOrAlias","parseArguments","isConst","parseConstArgument","parseArgument","hasTypeCondition","expectOptionalKeyword","parseFragmentName","parseNamedType","expectKeyword","parseList","parseObject","parseStringLiteral","parseObjectField","parseDirective","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseDescription","parseOperationTypeDefinition","parseImplementsInterfaces","parseFieldsDefinition","allowLegacySDLImplementsInterfaces","allowLegacySDLEmptyFields","parseFieldDefinition","parseArgumentDefs","parseInputValueDef","parseUnionMemberTypes","parseEnumValuesDefinition","parseEnumValueDefinition","parseInputFieldsDefinition","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","parseDirectiveLocations","parseDirectiveLocation","noLocation","Loc","getTokenDesc","atToken","openKind","parseFn","closeKind","_options$withTheme","WithStyles","more","pseudoClasses","_options$disableGloba","disableGlobal","_options$productionPr","productionPrefix","_options$seed","seedPrefix","getNextCounterId","styleSheet","_props$edge","edge","_props$disableFocusRi","disableFocusRipple","edgeStart","edgeEnd","setMountNode","ListItem","_props$alignItems","_props$button","childrenProp","componentProp","_props$ContainerCompo","ContainerComponent","_props$ContainerProps","ContainerProps","ContainerClassName","_props$dense","dense","_props$disableGutters","disableGutters","_props$divider","_props$selected","listItemRef","hasSecondaryAction","componentProps","alignItemsFlexStart","secondaryAction","backgroundClip","Backdrop","createStyles","getAnchorEl","anchorEl","defaultPopperOptions","_props$placement","initialPlacement","_props$popperOptions","popperOptions","popperRefProp","popperRef","_props$transition","tooltipRef","ownRef","handlePopperRef","handlePopperRefRef","rtlPlacement","flipPlacement","setPlacement","handlePopperUpdate","PopperJs","preventOverflow","onCreate","TransitionProps","FormGroup","_props$row","areEqualValues","SelectInput","ariaLabel","autoWidth","displayEmpty","IconComponent","labelId","_props$MenuProps","MenuProps","openProp","renderValue","_props$SelectDisplayP","SelectDisplayProps","tabIndexProp","displayNode","setDisplayNode","isOpenControlled","menuMinWidthState","setMenuMinWidthState","openState","setOpenState","getElementById","isCollapsed","displaySingle","childrenArray","handleItemClick","displayMultiple","computeDisplay","menuMinWidth","buttonId","selectMenu","nativeInput","iconOpen","NativeSelectInput","iconFilled","iconOutlined","defaultInput","NativeSelect","_props$IconComponent","ArrowDropDownIcon","_props$input","nativeSelectStyles","_props$autoWidth","_props$displayEmpty","_props$multiple","_props$native","native","variantProps","CircularProgress","_props$disableShrink","disableShrink","_props$thickness","_props$value","circleStyle","rootStyle","rootProps","circumference","static","circle","circleDisableShrink","circleIndeterminate","circleStatic","nextClasses","getOffsetTop","getOffsetLeft","getTransformOriginValue","_props$anchorOrigin","anchorPosition","_props$anchorReferenc","anchorReference","containerProp","_props$marginThreshol","marginThreshold","_props$transformOrigi","transitionDurationProp","_props$TransitionProp","paperRef","getAnchorOffset","contentAnchorOffset","resolvedAnchorEl","anchorRect","anchorVertical","getContentAnchorOffset","contentAnchorEl","getTransformOrigin","elemRect","getPositioningStyle","elemTransformOrigin","containerWindow","heightThreshold","widthThreshold","_diff","_diff2","_diff3","setPositioningStyles","positioning","handlePaperRef","_props$disablePadding","disablePadding","subheader","listStyle","MenuItem","ListItemClasses","_props$role","makeStylesWithoutDefault","ListItemIcon","ListItemText","_props$disableTypogra","disableTypography","_props$inset","primaryProp","primaryTypographyProps","secondaryProp","secondaryTypographyProps","fillRule","clipRule","Icon","SnackbarContent","emphasis","styled","StyledComponent","spread","FinalComponent","Button","_props$disableElevati","disableElevation","endIconProp","endIcon","startIconProp","startIcon","textPrimary","textSecondary","containedPrimary","containedSecondary","textSizeSmall","textSizeLarge","outlinedSizeSmall","outlinedSizeLarge","containedSizeSmall","containedSizeLarge","sizeLarge","iconSizeSmall","iconSizeMedium","iconSizeLarge","defaultTransitionDuration","Dialog","_props$fullScreen","fullScreen","_props$maxWidth","_props$PaperComponent","PaperComponent","_props$scroll","scroll","ariaLabelledby","mouseDownTarget","paperFullScreen","paperFullWidth","scrollPaper","scrollBody","paperScrollPaper","paperScrollBody","paperWidthFalse","paperWidthXs","paperWidthSm","paperWidthMd","paperWidthLg","paperWidthXl","DialogTitle","DialogContent","_props$dividers","dividers","DialogContentText","DialogActions","_props$disableSpacing","disableSpacing","TextField","_props$select","SelectProps","_InputLabelProps$requ","displayRequired","helperTextId","inputLabelId","InputElement","createStylesOriginal","AlertTitle","ToggleButton","SPACINGS","GRID_SIZES","_props$alignContent","_props$container","_props$direction","_props$item","_props$justify","justify","_props$lg","_props$md","_props$sm","_props$spacing","_props$wrap","_props$xl","_props$xs","_props$zeroMinWidth","zeroMinWidth","StyledGrid","generateGutter","accumulator","globalStyles","generateGrid","WebkitFontSmoothing","MozOsxFontSmoothing","_props$children","AppBar","_props$position","backgroundColorDefault","positionAbsolute","positionSticky","positionStatic","positionRelative","colorDefault","colorTransparent","Toolbar","regular","Card","_props$raised","raised","useDebouncedCallback","maxWait","maxWaitHandler","maxWaitArgs","leading","trailing","leadingCall","functionTimeoutHandler","isComponentUnmounted","debouncedFunction","cancelDebouncedCallback","shouldCallFunction","TypographyClasses","_props$underline","handlerRef","underlineNone","underlineHover","underlineAlways","RadioGroup","nameProp","FormControlLabel","_props$labelPlacement","labelPlacement","controlProps","labelPlacementStart","labelPlacementTop","labelPlacementBottom","InputAdornment","_props$disablePointer","disablePointerEvents","variantProp","positionStart","positionEnd","hystersisOpen","hystersisTimer","Tooltip","_props$arrow","arrow","_props$disableFocusLi","disableFocusListener","_props$disableHoverLi","disableHoverListener","_props$disableTouchLi","disableTouchListener","_props$enterDelay","enterDelay","_props$enterNextDelay","enterNextDelay","_props$enterTouchDela","enterTouchDelay","idProp","_props$interactive","interactive","_props$leaveDelay","leaveDelay","_props$leaveTouchDela","leaveTouchDelay","_props$PopperComponen","PopperComponent","PopperProps","setChildNode","arrowRef","setArrowRef","ignoreNonTouchEvents","closeTimer","enterTimer","leaveTimer","touchTimer","childrenProps","childIsFocusVisible","setChildIsFocusVisible","handleLeave","detectTouchStart","handleUseRef","handleFocusRef","shouldShowNativeTitle","interactiveWrapperListeners","mergedPopperProps","popperInteractive","popperArrow","placementInner","TransitionPropsInner","tooltipArrow","wordWrap","tooltipPlacementLeft","tooltipPlacementRight","tooltipPlacementTop","tooltipPlacementBottom","TableRow","_props$hover","tablelvl2","TableCell","paddingProp","scopeProp","sizeProp","sortDirection","isHeadCell","ariaSort","stickyHeader","paddingCheckbox","paddingNone","Collapse","_props$collapsedHeigh","collapsedHeight","collapsedHeightProp","wrapperRef","autoTransitionDuration","wrapperHeight","duration2","wrapperInner","TableHead","TableContainer","Table","_props$padding","_props$stickyHeader","borderCollapse","borderSpacing","captionSide","TableBody","TableFooter","mapEventPropToEvent","eventProp","ClickAwayListener","_props$disableReactTr","disableReactTree","_props$mouseEvent","_props$touchEvent","movedRef","mountedRef","syntheticEventRef","handleClickAway","insideReactTree","clickedRootScrollbar","insideDOM","createHandleSynthetic","childrenPropsHandler","mappedTouchEvent","mappedMouseEvent","isWithinInterval","dateTimeDelimiter","timeZoneDelimiter","timezone","dateRegex","timeRegex","timezoneRegex","parseISO","additionalDigits","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","restDateString","parseTime","parseTimezone","timeString","captures","century","isWeekDate","parseDateUnit","_year","validateWeekDate","isoWeekYear","fourthOfJanuaryDay","dayOfISOWeekYear","daysInMonths","validateDate","validateDayOfYearDate","parseTimeUnit","validateTime","timezoneString","_hours","validateTimezone","hasNativeReflectConstruct","RootRef","thumb","switchBase","subWeeks","ThemeProvider","localTheme","outerTheme","mergeOuterLocalTheme","useUtils","checkUtils","textColor","toolbarTxt","toolbarBtnSelected","ToolbarText","_ref$className","toolbarLandscape","PickerToolbar","isLandscape","ToolbarButton","typographyClassName","toolbarBtn","cachedType","Tab","selectionFollowsFocus","_props$textColor","_props$wrapped","wrapped","labelIcon","textColorInherit","textColorPrimary","textColorSecondary","detectScrollType","dummy","getNormalizedScrollLeft","easeInOutSin","ScrollbarSize","scrollbarHeight","setMeasurements","prevHeight","TabIndicator","KeyboardArrowLeft","KeyboardArrowRight","TabScrollButton","Tabs","ariaLabelledBy","_props$centered","_props$indicatorColor","indicatorColor","_props$orientation","_props$ScrollButtonCo","ScrollButtonComponent","_props$scrollButtons","scrollButtons","_props$TabIndicatorPr","TabIndicatorProps","TabScrollButtonProps","scrollable","scrollStart","clientSize","setMounted","indicatorStyle","setIndicatorStyle","displayScroll","setDisplayScroll","_React$useState4","scrollerStyle","setScrollerStyle","valueToIndex","tabsRef","tabListRef","getTabsMeta","tabsMeta","tabMeta","tabsNode","scrollLeftNormalized","updateIndicatorState","_newIndicatorStyle","_getTabsMeta","correction","newIndicatorStyle","dStart","dSize","scrollValue","_options$ease","ease","cancelled","moveTabsScroll","handleStartScrollClick","handleEndScrollClick","handleScrollbarSizeChange","scrollSelectedIntoView","_getTabsMeta2","nextScrollStart","_nextScrollStart","updateScrollButtonState","showStartScroll","showEndScroll","_tabsRef$current","handleTabsScroll","updateIndicator","updateScrollButtons","conditionalElements","scrollbarSizeListener","scrollButtonsActive","showScrollButtons","scrollButtonStart","scrollButtonsDesktop","scrollButtonEnd","getConditionalElements","fixed","flexContainer","flexContainerVertical","newFocusTarget","previousItemKey","nextItemKey","viewToTabIndex","openView","tabsBackground","DateTimePickerTabs","dateRangeIcon","timeIcon","ClockType","arrayIncludes","itemOrItems","getAngleValue","atan","deg","_getAngleValue","angleStep","_getAngleValue2","getMeridiem","convertToMeridiem","meridiem","toolbarAmpmLeftPadding","hourMinuteLabel","hourMinuteLabelAmpmLandscape","hourMinuteLabelReverse","ampmSelection","ampmLandscape","ampmSelectionWithSeconds","ampmLabel","useMeridiemMode","meridiemMode","handleMeridiemChange","timeWithMeridiem","DateTimePickerToolbar","setOpenView","hideTabs","showTabs","_useMeridiemMode","getDisplayDate","invalidLabel","emptyLabel","labelFunc","getComparisonMaxDate","strictCompareDates","getComparisonMinDate","datePickerDefaultProps","minDate","maxDate","invalidDateMessage","minDateMessage","maxDateMessage","allowKeyboardControl","dateTimePickerDefaultProps","daySelected","dayDisabled","Day","DayWrapper","dayInCurrentMonth","slideTransition","transitionContainer","willChange","slideEnterActive","slideExit","SlideTransition","transKey","slideDirection","transitionClasses","enterActive","exitActive","childFactory","CSSTransition","switchHeader","iconButton","daysHeader","dayLabel","CalendarHeader","currentMonth","onMonthChange","leftArrowIcon","rightArrowIcon","leftArrowButtonProps","rightArrowButtonProps","disablePrevMonth","disableNextMonth","useIsomorphicEffect","runKeyHandler","keyHandlers","useKeyDown","keyHandlersRef","KeyDownListener","Calendar","loadingQueue","pushToLoadingQueue","popFromLoadingQueue","handleChangeMonth","newMonth","returnVal","validateMinMaxDate","disableFuture","disablePast","shouldDisablePrevMonth","firstEnabledMonth","shouldDisableNextMonth","lastEnabledMonth","shouldDisableDate","handleDaySelect","isFinish","moveToDay","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","renderWeeks","renderDays","renderDay","selectedDate","currentMonthNumber","isDayInCurrentMonth","dayComponent","closestEnabledDate","backward","findClosestEnabledDate","loadingElement","progressContainer","nextDate","lastDate","nextMonth","lastMonth","WithUtils","withUtils","ClockPointer","toAnimateTransform","previousType","getAngleStyle","isInner","HOURS","hasSelected","animateTransform","noPoint","Clock","handleMove","SECONDS","MINUTES","minutesStep","isPointerInner","clock","squareMask","pin","touchActions","0","1","2","3","4","5","6","7","10","11","14","15","21","22","23","clockNumber","clockNumberSelected","ClockNumber","transformStyle","getHourNumbers","currentHours","hourNumbers","endHour","hour","getMinutesNumbers","ClockView","onHourChange","onMinutesChange","onSecondsChange","viewProps","currentMeridiem","updatedTimeWithMeridiem","minutesValue","updatedTime","secondsValue","yearSelected","yearDisabled","Year","staticWrapperRoot","StaticWrapper","ModalDialog","onAccept","onClear","onSetToday","okLabel","cancelLabel","clearLabel","todayLabel","clearable","showTodayButton","wider","dialogRoot","dialogRootWider","dialog","withAdditionalAction","ModalWrapper","DialogProps","DateInputProps","Enter","popoverPaper","popoverPaperWider","InlineWrapper","PopoverProps","VariantContext","getWrapperFromVariant","YearSelection","animateYearScrolling","currentVariant","selectedYearRef","behavior","onYearSelect","newDate","yearNumber","monthSelected","monthDisabled","Month","handleSelection","MonthSelection","shouldDisableMonth","utilMinDate","utilMaxDate","isBeforeFirstEnabled","isAfterLastEnabled","onMonthSelect","monthNumber","monthText","getOrientation","screen","viewsMap","containerLandscape","pickerView","pickerViewLandscape","Picker","views","disableToolbar","openTo","unparsedMinDate","unparsedMaxDate","ToolbarComponent","customOrientation","setOrientation","eventHandler","useIsLandscape","_useViews","handleChangeAndOpenNext","nextViewToOpen","useViews","useDateValues","initialFocusedDate","nowRef","useValueToDate","getDefaultFormat","usePickerState","autoOk","_onChange","_useOpenState","setIsOpenState","_useState","_useState2","isOpen","setIsOpen","newIsOpen","useOpenState","_useDateValues","pickerDate","setPickerDate","acceptDate","acceptedDate","pickerProps","validationError","parsedValue","pickerState","PureDateInput","inputVariant","_ref$TextFieldCompone","TextFieldComponent","PureDateInputProps","Rifm","_del","_handleChange","stateValue","del","noOp","local","refuse","fv","_hKD","_hKU","KeyboardDateInput","KeyboardButtonProps","InputAdornmentProps","_ref$maskChar","maskChar","_ref$refuse","keyboardIcon","rifmFormatter","inputMask","numberMaskChar","makeMaskFromFormat","maskedDateFormatter","useOptions","userFormat","pick12hOr24hFormat","DateTimePicker","getCustomProps","DefaultToolbarComponent","_props$ToolbarCompone","injectedProps","_usePickerState","makePurePicker","KeyboardDateTimePicker","_useKeyboardPickerSta","_props$format","displayDate","innerInputValue","setInnerInputValue","dateValue","parseInputString","handleKeyboardChange","innerInputProps","useKeyboardPickerState","makeKeyboardPicker","compareAsc","differenceInCalendarYears","differenceInYears","isLastYearNotFull","differenceInCalendarMonths","yearDiff","monthDiff","differenceInMonths","isLastMonthNotFull","differenceInHours","differenceInMinutes","differenceInSeconds","dateWithoutMonths","dateWithoutDays","minutestoSub","secondstoSub","mstoSub","finalDate","intervalToDuration","remainingMonths","remainingDays","remainingHours","remainingMinutes","remainingSeconds","withPreposition","usageGroup","defaultIconMapping","SuccessOutlinedIcon","ReportProblemOutlinedIcon","ErrorOutlineIcon","InfoOutlinedIcon","CloseIcon","Alert","_props$closeText","closeText","_props$iconMapping","iconMapping","_props$severity","severity","getColor","standardSuccess","standardInfo","standardWarning","standardError","outlinedSuccess","outlinedInfo","outlinedWarning","outlinedError","filledSuccess","filledInfo","filledWarning","filledError","RadioButtonUncheckedIcon","RadioButtonCheckedIcon","defaultCheckedIcon","RadioButtonIcon","defaultIcon","Radio","onChangeProp","radioGroup","ListSubheader","_props$disableSticky","disableSticky","defaultFilterOptions","_config$ignoreAccents","_config$ignoreCase","_config$matchFrom","_config$trim","filteredOptions","createFilterOptions","useAutocomplete","_props$autoComplete","_props$autoHighlight","autoHighlight","_props$autoSelect","autoSelect","_props$blurOnSelect","blurOnSelect","_props$clearOnBlur","clearOnBlur","freeSolo","_props$clearOnEscape","clearOnEscape","_props$componentName","_props$debug","_props$defaultValue","_props$disableClearab","disableClearable","_props$disableCloseOn","disableCloseOnSelect","_props$filterOptions","_props$filterSelected","filterSelectedOptions","_props$freeSolo","getOptionDisabled","_props$getOptionLabel","getOptionLabelProp","_props$getOptionSelec","getOptionSelected","_props$handleHomeEndK","handleHomeEndKeys","_props$includeInputIn","includeInputInList","inputValueProp","onHighlightChange","_props$openOnFocus","openOnFocus","_props$selectOnFocus","selectOnFocus","ignoreFocus","firstFocus","listboxRef","setAnchorEl","focusedTag","setFocusedTag","defaultHighlighted","highlightedIndexRef","_useControlled3","_useControlled4","setInputValue","resetInputValue","newInputValue","optionLabel","_useControlled5","_useControlled6","inputValueIsSelectedValue","popupOpen","value2","focusTag","tagToFocus","setHighlightedIndex","_ref2$reason","listboxNode","scrollBottom","elementBottom","changeHighlightedIndex","_ref3$direction","_ref3$reason","validOptionIndex","getNextIndex","syncHighlightedIndex","valueItem","currentOption","optionItem","handleListboxRef","handleValue","selectNewValue","reasonProp","handleFocusTag","nextTag","validTagIndex","handleClear","handleOptionMouseOver","handleOptionTouchStart","handleOptionClick","handleTagDelete","handlePopupIndicator","handleInputMouseDown","groupedOptions","getInputLabelProps","getClearProps","getPopupIndicatorProps","getTagProps","getListboxProps","getOptionProps","DisablePortal","Autocomplete","ChipProps","_props$clearText","clearText","_props$closeIcon","closeIcon","_props$forcePopupIcon","forcePopupIcon","_props$getLimitTagsTe","getLimitTagsText","_props$limitTags","limitTags","_props$ListboxCompone","ListboxComponent","ListboxProps","_props$loading","_props$loadingText","loadingText","_props$noOptionsText","noOptionsText","_props$openText","openText","PopperComponentProp","_props$popupIcon","popupIcon","renderGroupProp","renderGroup","renderOptionProp","renderOption","renderTags","_useAutocomplete","getCustomizedTagProps","tagSizeSmall","groupLabel","groupUl","renderListOption","optionProps","hasClearIcon","hasPopupIcon","clearIndicatorDirty","popupIndicator","popupIndicatorOpen","inputFocused","popperDisablePortal","noOptions","listbox","option2","_option","CheckBoxIcon","CheckBoxOutlineBlankIcon","defaultIndeterminateIcon","IndeterminateCheckBoxIcon","Checkbox","_props$checkedIcon","_props$icon","_props$indeterminate","_props$indeterminateI","indeterminateIcon","indeterminateIconProp","replaceClassName","origClass","classToRemove","removeClass","baseVal","appliedClasses","_this$resolveArgument","resolveArguments","removeClasses","addClass","_this$resolveArgument2","_this$resolveArgument3","getClassNames","isStringClassNames","baseClassName","doneClassName","phase","hasClass","_addClass","_this$appliedClasses$","setWrappedInstance","getWrappedInstance","wrappedInstance","withApollo","operationOptions","withDisplayName","WithApollo","styledWithoutDefault","Box","addHours","subHours","ToggleButtonGroup","_props$exclusive","exclusive","buttonValue","handleExclusiveChange","groupedHorizontal","borderBottomLeftRadius","borderBottomRightRadius","groupedVertical","setTranslateValue","fakeTransform","transformValues","getTranslateValue","webkitTransform","Slide","childrenRef","handleRefIntermediary","oppositeDirection","Drawer","_props$anchor","anchor","anchorProp","_props$ModalProps","ModalProps","BackdropPropsProp","_props$open","SlideProps","getAnchor","docked","slidingDrawer","paperAnchorLeft","paperAnchorRight","paperAnchorTop","paperAnchorBottom","paperAnchorDockedLeft","paperAnchorDockedTop","paperAnchorDockedRight","paperAnchorDockedBottom","TablePaginationActions","backIconButtonProps","nextIconButtonProps","onChangePage","rowsPerPage","defaultLabelDisplayedRows","defaultRowsPerPageOptions","TablePagination","_props$ActionsCompone","ActionsComponent","_props$backIconButton","backIconButtonText","colSpanProp","_props$labelDisplayed","labelDisplayedRows","_props$labelRowsPerPa","labelRowsPerPage","_props$nextIconButton","nextIconButtonText","onChangeRowsPerPage","_props$rowsPerPageOpt","rowsPerPageOptions","_props$SelectProps","selectId","spacer","selectIcon","selectRoot","rowsPerPageOption","textAlignLast","getChildMapping","getNextChildMapping","prevChildMapping","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","firstRender","currentChildMapping"],"mappings":"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5BzsK,IACF0oK,GAAa5kK,IA4BhBkmK,eAAgBA,IEpyCdwE,GAAa,CAAC,CAChB19E,KAAM,IACN29E,QAAS,mNACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,KACN29E,QAAS,yBACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,KACN29E,QAAS,mBACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,IACN29E,QAAS,6DACR,CACD39E,KAAM,IACN29E,QAAS,+EACR,CACD39E,KAAM,IACN29E,QAAS,2FACR,CACD39E,KAAM,KACN29E,QAAS,mBACR,CACD39E,KAAM,KACN29E,QAAS,mBACR,CACD39E,KAAM,IACN29E,QAAS,2LACR,CACD39E,KAAM,IACN29E,QAAS,2CACR,CACD39E,KAAM,IACN29E,QAAS,iGACR,CACD39E,KAAM,IACN29E,QAAS,2FACR,CACD39E,KAAM,IACN29E,QAAS,+HACR,CACD39E,KAAM,IACN29E,QAAS,qCACR,CACD39E,KAAM,IACN29E,QAAS,2FACR,CACD39E,KAAM,IACN29E,QAAS,mHACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,IACN29E,QAAS,uDACR,CACD39E,KAAM,IACN29E,QAAS,uGACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,IACN29E,QAAS,yQACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,IACN29E,QAAS,mEACR,CACD39E,KAAM,IACN29E,QAAS,2CACR,CACD39E,KAAM,IACN29E,QAAS,6GACR,CACD39E,KAAM,IACN29E,QAAS,6GACR,CACD39E,KAAM,IACN29E,QAAS,iGACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,IACN29E,QAAS,mNACR,CACD39E,KAAM,IACN29E,QAAS,uDACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,IACN29E,QAAS,mEACR,CACD39E,KAAM,IACN29E,QAAS,qCACR,CACD39E,KAAM,IACN29E,QAAS,iGACR,CACD39E,KAAM,IACN29E,QAAS,2FACR,CACD39E,KAAM,IACN29E,QAAS,yNACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,KACN29E,QAAS,yBACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,KACN29E,QAAS,mBACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,IACN29E,QAAS,6DACR,CACD39E,KAAM,IACN29E,QAAS,qFACR,CACD39E,KAAM,IACN29E,QAAS,2FACR,CACD39E,KAAM,KACN29E,QAAS,mBACR,CACD39E,KAAM,IACN29E,QAAS,iMACR,CACD39E,KAAM,IACN29E,QAAS,2CACR,CACD39E,KAAM,IACN29E,QAAS,iGACR,CACD39E,KAAM,IACN29E,QAAS,iGACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,IACN29E,QAAS,+HACR,CACD39E,KAAM,IACN29E,QAAS,2CACR,CACD39E,KAAM,IACN29E,QAAS,2FACR,CACD39E,KAAM,IACN29E,QAAS,yHACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,IACN29E,QAAS,uDACR,CACD39E,KAAM,IACN29E,QAAS,6GACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,IACN29E,QAAS,yQACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,KACN29E,QAAS,aACR,CACD39E,KAAM,IACN29E,QAAS,mEACR,CACD39E,KAAM,IACN29E,QAAS,2CACR,CACD39E,KAAM,IACN29E,QAAS,6G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,OAAO/+R,IAAI5S,KAAKkU,WAAY8rS,KAEtEhgT,KAAK6+S,OAAO7+S,KAAK8+S,YAAY9+S,KAAK20D,MAAMpzC,MAE5Co9R,EA3I0B,GEf1BsB,GAAS,CAChB35C,MAAO,CACH,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEJ45C,QAAS,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAuGOD,MACJ39B,GAAW,CAClB29B,GAtGkB,CAClB35C,MAAO,CACH,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEJ45C,QAAS,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGY,CAChB55C,MAAO,CACH,UACA,UACA,UACA,UACA,UACA,WAEJ45C,QAAS,CACL,UACA,UACA,UACA,UACA,UACA,YAGY,CAChB55C,MAAO,CACH,UACA,UACA,UACA,UACA,UACA,WAEJ45C,QAAS,CACL,UACA,UACA,UACA,UACA,UACA,YAGU,CACd55C,MAAO,CACH,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEJ45C,QAAS,CACL,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,aCvHJvgT,GAAuB,WAavB,SAASA,EAAMC,EAAGC,EAAGC,EAAGC,QACV,IAANA,IAAgBA,EAAI,GAExBC,KAAKJ,EAAIK,KAAKC,IAAI,EAAGD,KAAKE,IAAI,EAAGP,GAAK,IACtCI,KAAKH,EAAII,KAAKC,IAAI,EAAGD,KAAKE,IAAI,EAAGN,GAAK,IACtCG,KAAKF,EAAIG,KAAKC,IAAI,EAAGD,KAAKE,IAAI,EAAGL,GAAK,IACtCE,KAAKD,EAAIE,KAAKC,IAAI,EAAGD,KAAKE,IAAI,EAAGJ,GAAK,IA4X1C,OAjXAJ,EAAMS,WAAa,SAAUC,GAEzB,GAAIA,EAAIC,QAAQ,MAAQ,EACpB,OAAOX,EAAMY,cAAcF,GAG/B,IAAIG,EAAMb,EAAMc,UAAUJ,GAC1B,GAAIG,EACA,OA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sE,kBAAoB,CAC3B,uBACA,gCACA,6BACA,YACA,qBACA,sBACA,mBACA,iCACA,8BACA,kBACA,eACA,mBACA,kBACA,2BACA,wBACA,0BACA,gCACA,mCACA,mBACA,yBACA,4BACA,WAEJhsE,EAAWisE,iBAAmB,CAC1B,WACA,eACA,kBACA,WACA,sBACA,iBACA,SAEJjsE,EAAWksE,kBAAoB,CAC3B,WACA,QACA,WACA,WACA,gBACA,cAEJlsE,EAAWmsE,mBAAqB,CAC5B,oBACA,2BACA,2BACA,gBACA,gBACA,OACA,WACA,QACA,oBACA,0BACA,sCACA,eACA,kBACA,kBACA,iBACA,eACA,cACA,aACA,aACA,oBACA,iBACA,mBACA,iBACA,cACA,cACA,WACA,gBACA,oBACA,wBACA,UACA,YACA,aACA,WACA,YACA,mBAEJnsE,EAAWosE,oBAAsB,CAC7B,qBACA,cACA,cACA,oBACA,aACA,eACA,wBACA,wBACA,iBACA,0BACA,cACA,aACA,SACA,kBACA,wBACA,UACA,UACA,qBACA,kBACA,qBACA,gBACA,sBACA,oBACA,UACA,qBACA,mBACA,4BACA,uBACA,sBAEJpsE,EAAWC,eAAiBD,EAAWisE,iBAClC97I,OAAO6vE,EAAWgsE,mBAClB77I,OAAO6vE,EAAW+rE,mBAClB57I,OAAO6vE,EAAWksE,mBAClB/7I,OAAO6vE,EAAWosE,qBAClBj8I,OAAO6vE,EAAWmsE,oBAGvBnsE,EAAWE,qBAAuB,CAAC,SAAU,eAAgB,yBAA0B,kBACnF,WAAY,8BACTF,EApJqB,I,8BCNhC,kBAGI80C,EAHJ,SAMEA,EADkB,qBAATr2F,KACFA,KACoB,qBAAXhzB,OACTA,OACoB,qBAAXrR,EACTA,EAEAJ,EAKT,IAAIwX,EAASq5V,YAAS/1O,GACPtjH,Q,0DClBf,IAAIs5V,EAA8C,oBAAXx0U,QAA+C,oBAAfA,OAAOy0U,IAAqBz0U,OAAOy0U,IAAI,mCAAgC9uW,EAC/H6uW,O,6BCDA,SAASE,EAAkB1uW,EAAK6f,IAClC,MAAPA,GAAeA,EAAM7f,EAAIC,UAAQ4f,EAAM7f,EAAI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","file":"static/js/2.d7b6b2cf.chunk.js","sourcesContent":["'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar globalObj = typeof global === 'undefined' ? {} : global;\nglobalObj.HTMLElement = typeof HTMLElement === 'undefined' ? {} : HTMLElement;\nglobalObj.HTMLButtonElement = typeof HTMLButtonElement === 'undefined' ? {} : HTMLButtonElement;\nglobalObj.HTMLSelectElement = typeof HTMLSelectElement === 'undefined' ? {} : HTMLSelectElement;\nglobalObj.HTMLInputElement = typeof HTMLInputElement === 'undefined' ? {} : HTMLInputElement;\nglobalObj.Node = typeof Node === 'undefined' ? {} : Node;\nglobalObj.MouseEvent = typeof MouseEvent === 'undefined' ? {} : MouseEvent;\n// columnController\nexport { ColumnFactory } from \"./columnController/columnFactory\";\nexport { ColumnController } from \"./columnController/columnController\";\nexport { ColumnKeyCreator } from \"./columnController/columnKeyCreator\";\nexport { ColumnUtils } from \"./columnController/columnUtils\";\nexport { DisplayedGroupCreator } from \"./columnController/displayedGroupCreator\";\nexport { GroupInstanceIdCreator } from \"./columnController/groupInstanceIdCreator\";\n// components\nexport { ComponentUtil } from \"./components/componentUtil\";\nexport { ColDefUtil } from \"./components/colDefUtil\";\nexport { UserComponentRegistry } from \"./components/framework/userComponentRegistry\";\nexport { UserComponentFactory } from \"./components/framework/userComponentFactory\";\nexport { initialiseAgGridWithAngular1 } from \"./components/agGridNg1\";\nexport { initialiseAgGridWithWebComponents } from \"./components/agGridWebComponent\";\n// context\nexport { BeanStub } from \"./context/beanStub\";\nexport { Context, Autowired, PostConstruct, PreConstruct, Optional, Bean, Qualifier, PreDestroy } from \"./context/context\";\nexport { QuerySelector, Listener, RefSelector } from \"./widgets/componentAnnotations\";\n// dragAndDrop\nexport { DragAndDropService, DragSourceType, HDirection, VDirection } from \"./dragAndDrop/dragAndDropService\";\nexport { DragService } from \"./dragAndDrop/dragService\";\n// entities\nexport { Column } from \"./entities/column\";\nexport { ColumnGroup } from \"./entities/columnGroup\";\nexport { OriginalColumnGroup } from \"./entities/originalColumnGroup\";\nexport { RowNode } from \"./entities/rowNode\";\n// filter\nexport { FilterManager } from \"./filter/filterManager\";\nexport { ProvidedFilter } from \"./filter/provided/providedFilter\";\nexport { SimpleFilter } from \"./filter/provided/simpleFilter\";\nexport { ScalerFilter } from \"./filter/provided/scalerFilter\";\nexport { NumberFilter } from \"./filter/provided/number/numberFilter\";\nexport { TextFilter } from \"./filter/provided/text/textFilter\";\nexport { DateFilter } from \"./filter/provided/date/dateFilter\";\n// gridPanel\nexport { GridPanel } from \"./gridPanel/gridPanel\";\nexport { ScrollVisibleService } from \"./gridPanel/scrollVisibleService\";\nexport { MouseEventService } from \"./gridPanel/mouseEventService\";\n// headerRendering\nexport { BodyDropPivotTarget } from \"./headerRendering/bodyDropPivotTarget\";\nexport { BodyDropTarget } from \"./headerRendering/bodyDropTarget\";\nexport { CssClassApplier } from \"./headerRendering/cssClassApplier\";\nexport { HeaderContainer } from \"./headerRendering/headerContainer\";\nexport { HeaderRootComp } from \"./headerRendering/headerRootComp\";\nexport { HeaderRowComp } from \"./headerRendering/headerRowComp\";\nexport { HorizontalResizeService } from \"./headerRendering/horizontalResizeService\";\nexport { MoveColumnController } from \"./headerRendering/moveColumnController\";\nexport { StandardMenuFactory } from \"./headerRendering/standardMenu\";\n// layout\nexport { TabbedLayout } from \"./layout/tabbedLayout\";\n// misc\nexport { simpleHttpRequest } from \"./misc/simpleHttpRequest\";\nexport { ResizeObserverService } from \"./misc/resizeObserverService\";\nexport { LargeTextCellEditor } from \"./rendering/cellEditors/largeTextCellEditor\";\nexport { PopupEditorWrapper } from \"./rendering/cellEditors/popupEditorWrapper\";\nexport { PopupSelectCellEditor } from \"./rendering/cellEditors/popupSelectCellEditor\";\nexport { PopupTextCellEditor } from \"./rendering/cellEditors/popupTextCellEditor\";\nexport { SelectCellEditor } from \"./rendering/cellEditors/selectCellEditor\";\nexport { TextCellEditor } from \"./rendering/cellEditors/textCellEditor\";\nexport { AnimateShowChangeCellRenderer } from \"./rendering/cellRenderers/animateShowChangeCellRenderer\";\nexport { AnimateSlideCellRenderer } from \"./rendering/cellRenderers/animateSlideCellRenderer\";\nexport { GroupCellRenderer } from \"./rendering/cellRenderers/groupCellRenderer\";\n// features\nexport { SetLeftFeature } from \"./rendering/features/setLeftFeature\";\n// rendering\nexport { AutoWidthCalculator } from \"./rendering/autoWidthCalculator\";\nexport { CellRendererFactory } from \"./rendering/cellRendererFactory\";\nexport { CheckboxSelectionComponent } from \"./rendering/checkboxSelectionComponent\";\nexport { CellComp } from \"./rendering/cellComp\";\nexport { RowComp } from \"./rendering/rowComp\";\nexport { RowRenderer } from \"./rendering/rowRenderer\";\nexport { ValueFormatterService } from \"./rendering/valueFormatterService\";\n// row models\nexport { PinnedRowModel } from \"./pinnedRowModel/pinnedRowModel\";\nexport { ChangedPath } from \"./utils/changedPath\";\nexport { RowNodeBlock } from \"./modules/rowNodeCache/rowNodeBlock\";\nexport { RowNodeBlockLoader } from \"./modules/rowNodeCache/rowNodeBlockLoader\";\nexport { PaginationProxy } from \"./pagination/paginationProxy\";\nexport { RowNodeCache } from \"./modules/rowNodeCache/rowNodeCache\";\n//styling\nexport { StylingService } from \"./styling/stylingService\";\n// widgets\nexport { AgAbstractField } from \"./widgets/agAbstractField\";\nexport { AgCheckbox } from \"./widgets/agCheckbox\";\nexport { AgRadioButton } from \"./widgets/agRadioButton\";\nexport { AgToggleButton } from \"./widgets/agToggleButton\";\nexport { AgInputTextField } from \"./widgets/agInputTextField\";\nexport { AgInputTextArea } from \"./widgets/agInputTextArea\";\nexport { AgInputNumberField } from \"./widgets/agInputNumberField\";\nexport { AgInputRange } from \"./widgets/agInputRange\";\nexport { AgSelect } from \"./widgets/agSelect\";\nexport { AgSlider } from \"./widgets/agSlider\";\nexport { AgAngleSelect } from \"./widgets/agAngleSelect\";\nexport { AgColorPicker } from \"./widgets/agColorPicker\";\nexport { AgGroupComponent } from \"./widgets/agGroupComponent\";\nexport { AgDialog } from \"./widgets/agDialog\";\nexport { AgPanel } from \"./widgets/agPanel\";\nexport { MessageBox } from \"./widgets/messageBox\";\nexport { Component } from \"./widgets/component\";\nexport { PopupComponent } from \"./widgets/popupComponent\";\nexport { PopupService } from \"./widgets/popupService\";\nexport { TouchListener } from \"./widgets/touchListener\";\nexport { VirtualList } from \"./widgets/virtualList\";\n// range\nexport { CellRangeType } from \"./interfaces/iRangeController\";\n// root\nexport { VanillaFrameworkOverrides } from \"./vanillaFrameworkOverrides\";\nexport { CellNavigationService } from \"./cellNavigationService\";\nexport { AlignedGridsService } from \"./alignedGridsService\";\nexport { Constants } from \"./constants\";\nexport { Grid } from \"./grid\";\nexport { GridApi } from \"./gridApi\";\nexport { Events } from \"./eventKeys\";\nexport { FocusedCellController } from \"./focusedCellController\";\nexport { defaultGroupComparator } from \"./functions\";\nexport { GridOptionsWrapper } from \"./gridOptionsWrapper\";\nexport { EventService } from \"./eventService\";\nexport { SelectableService } from \"./rowNodes/selectableService\";\nexport { GridCore } from \"./gridCore\";\nexport { Logger } from \"./logger\";\nexport { SelectionController } from \"./selectionController\";\nexport { SortController } from \"./sortController\";\nexport { TemplateService } from \"./templateService\";\nexport { Color, Utils, NumberSequence, _, Promise } from \"./utils\";\nexport { ValueService } from \"./valueService/valueService\";\nexport { ValueCache } from \"./valueService/valueCache\";\nexport { ExpressionService } from \"./valueService/expressionService\";\nexport { LoggerFactory } from \"./logger\";\nexport { CellPositionUtils } from \"./entities/cellPosition\";\nexport { RowPositionUtils } from \"./entities/rowPosition\";\nexport { ColumnApi } from \"./columnController/columnApi\";\nexport { BaseComponentWrapper } from \"./components/framework/frameworkComponentWrapper\";\nexport { Environment } from \"./environment\";\nexport { TooltipManager } from \"./widgets/tooltipManager\";\n// charts\nexport * from \"./interfaces/iChartOptions\";\nexport { ModuleNames } from \"./modules/moduleNames\";\nexport { ModuleRegistry } from \"./modules/moduleRegistry\";\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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 /**\n * Creates an instance of the Color class from the given HSB(A) components.\n * @param h Hue in the [0, 360) range.\n * @param s Saturation in the [0, 1] range.\n * @param b Brightness in the [0, 1] range.\n * @param alpha Opacity in the [0, 1] range. Defaults to 1 (completely opaque).\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}());\nexport { Color };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport var PromiseStatus;\n(function (PromiseStatus) {\n PromiseStatus[PromiseStatus[\"IN_PROGRESS\"] = 0] = \"IN_PROGRESS\";\n PromiseStatus[PromiseStatus[\"RESOLVED\"] = 1] = \"RESOLVED\";\n})(PromiseStatus || (PromiseStatus = {}));\nvar Promise = /** @class */ (function () {\n function Promise(callback) {\n this.status = PromiseStatus.IN_PROGRESS;\n this.resolution = null;\n this.listOfWaiters = [];\n callback(this.onDone.bind(this), this.onReject.bind(this));\n }\n Promise.all = function (toCombine) {\n return new Promise(function (resolve) {\n var combinedValues = [];\n var remainingToResolve = toCombine.length;\n toCombine.forEach(function (source, index) {\n source.then(function (sourceResolved) {\n remainingToResolve--;\n combinedValues[index] = sourceResolved;\n if (remainingToResolve == 0) {\n resolve(combinedValues);\n }\n });\n combinedValues.push(null); // spl todo: review with Alberto - why?\n });\n });\n };\n Promise.resolve = function (value) {\n return new Promise(function (resolve) { return resolve(value); });\n };\n Promise.external = function () {\n var capture;\n var promise = new Promise(function (resolve) {\n capture = resolve;\n });\n return {\n promise: promise,\n resolve: function (value) {\n capture(value);\n }\n };\n };\n Promise.prototype.then = function (func) {\n if (this.status === PromiseStatus.IN_PROGRESS) {\n this.listOfWaiters.push(func);\n }\n else {\n func(this.resolution);\n }\n };\n Promise.prototype.firstOneOnly = function (func) {\n if (this.status === PromiseStatus.IN_PROGRESS) {\n if (this.listOfWaiters.length === 0) {\n this.listOfWaiters.push(func);\n }\n }\n else {\n func(this.resolution);\n }\n };\n Promise.prototype.map = function (adapter) {\n var _this = this;\n return new Promise(function (resolve) {\n _this.then(function (unmapped) {\n resolve(adapter(unmapped));\n });\n });\n };\n Promise.prototype.resolveNow = function (ifNotResolvedValue, ifResolved) {\n if (this.status == PromiseStatus.IN_PROGRESS) {\n return ifNotResolvedValue;\n }\n return ifResolved(this.resolution);\n };\n Promise.prototype.onDone = function (value) {\n this.status = PromiseStatus.RESOLVED;\n this.resolution = value;\n this.listOfWaiters.forEach(function (waiter) { return waiter(value); });\n };\n Promise.prototype.onReject = function (params) {\n console.warn('TBI');\n };\n return Promise;\n}());\nexport { Promise };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { Constants } from \"../constants\";\nvar FUNCTION_STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/mg;\nvar FUNCTION_ARGUMENT_NAMES = /([^\\s,]+)/g;\nvar AG_GRID_STOP_PROPAGATION = '__ag_Grid_Stop_Propagation';\n/**\n * HTML Escapes.\n */\nvar HTML_ESCAPES = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nvar reUnescapedHtml = /[&<>\"']/g;\nvar Utils = /** @class */ (function () {\n function Utils() {\n }\n /**\n * If the key was passed before, then doesn't execute the func\n * @param {Function} func\n * @param {string} key\n */\n Utils.doOnce = function (func, key) {\n if (this.doOnceFlags[key]) {\n return;\n }\n func();\n this.doOnceFlags[key] = true;\n };\n /**\n * Checks if event was issued by a left click\n * from https://stackoverflow.com/questions/3944122/detect-left-mouse-button-press\n * @param {MouseEvent} mouseEvent\n * @returns {boolean}\n */\n Utils.isLeftClick = function (mouseEvent) {\n if (\"buttons\" in mouseEvent) {\n return mouseEvent.buttons == 1;\n }\n var button = mouseEvent.which || mouseEvent.button;\n return button == 1;\n };\n /**\n * `True` if the event is close to the original event by X pixels either vertically or horizontally.\n * we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n * @param {MouseEvent | TouchEvent} e1\n * @param {MouseEvent | TouchEvent} e2\n * @param {number} pixelCount\n * @returns {boolean}\n */\n Utils.areEventsNear = function (e1, e2, pixelCount) {\n // by default, we wait 4 pixels before starting the drag\n if (pixelCount === 0) {\n return false;\n }\n var diffX = Math.abs(e1.clientX - e2.clientX);\n var diffY = Math.abs(e1.clientY - e2.clientY);\n return Math.max(diffX, diffY) <= pixelCount;\n };\n Utils.jsonEquals = function (val1, val2) {\n var val1Json = val1 ? JSON.stringify(val1) : null;\n var val2Json = val2 ? JSON.stringify(val2) : null;\n return val1Json === val2Json;\n };\n Utils.shallowCompare = function (arr1, arr2) {\n // if both are missing, then they are the same\n if (this.missing(arr1) && this.missing(arr2)) {\n return true;\n }\n // if one is present, but other is missing, then they are different\n if (this.missing(arr1) || this.missing(arr2)) {\n return false;\n }\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (var i = 0; i < arr1.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n };\n Utils.getNameOfClass = function (theClass) {\n var funcNameRegex = /function (.{1,})\\(/;\n var funcAsString = theClass.toString();\n var results = funcNameRegex.exec(funcAsString);\n return results && results.length > 1 ? results[1] : \"\";\n };\n Utils.getValueUsingField = function (data, field, fieldContainsDots) {\n if (!field || !data) {\n return;\n }\n // if no '.', then it's not a deep value\n if (!fieldContainsDots) {\n return data[field];\n }\n else {\n // otherwise it is a deep value, so need to dig for it\n var fields = field.split('.');\n var currentObject = data;\n for (var i = 0; i < fields.length; i++) {\n currentObject = currentObject[fields[i]];\n if (this.missing(currentObject)) {\n return null;\n }\n }\n return currentObject;\n }\n };\n Utils.getElementSize = function (el) {\n var _a = window.getComputedStyle(el), height = _a.height, width = _a.width, paddingTop = _a.paddingTop, paddingRight = _a.paddingRight, paddingBottom = _a.paddingBottom, paddingLeft = _a.paddingLeft, marginTop = _a.marginTop, marginRight = _a.marginRight, marginBottom = _a.marginBottom, marginLeft = _a.marginLeft, boxSizing = _a.boxSizing;\n return {\n height: parseFloat(height),\n width: parseFloat(width),\n paddingTop: parseFloat(paddingTop),\n paddingRight: parseFloat(paddingRight),\n paddingBottom: parseFloat(paddingBottom),\n paddingLeft: parseFloat(paddingLeft),\n marginTop: parseFloat(marginTop),\n marginRight: parseFloat(marginRight),\n marginBottom: parseFloat(marginBottom),\n marginLeft: parseFloat(marginLeft),\n boxSizing: boxSizing\n };\n };\n Utils.getInnerHeight = function (el) {\n var size = this.getElementSize(el);\n if (size.boxSizing === 'border-box') {\n return size.height - size.paddingTop - size.paddingBottom;\n }\n return size.height;\n };\n Utils.getInnerWidth = function (el) {\n var size = this.getElementSize(el);\n if (size.boxSizing === 'border-box') {\n return size.width - size.paddingLeft - size.paddingRight;\n }\n return size.width;\n };\n Utils.getAbsoluteHeight = function (el) {\n var size = this.getElementSize(el);\n var marginRight = size.marginBottom + size.marginTop;\n return Math.ceil(el.offsetHeight + marginRight);\n };\n Utils.getAbsoluteWidth = function (el) {\n var size = this.getElementSize(el);\n var marginWidth = size.marginLeft + size.marginRight;\n return Math.ceil(el.offsetWidth + marginWidth);\n };\n Utils.getScrollLeft = function (element, rtl) {\n var scrollLeft = element.scrollLeft;\n if (rtl) {\n // Absolute value - for FF that reports RTL scrolls in negative numbers\n scrollLeft = Math.abs(scrollLeft);\n // Get Chrome to return the same value as well\n if (this.isBrowserChrome()) {\n scrollLeft = element.scrollWidth - element.clientWidth - scrollLeft;\n }\n }\n return scrollLeft;\n };\n Utils.cleanNumber = function (value) {\n if (typeof value === 'string') {\n value = parseInt(value, 10);\n }\n if (typeof value === 'number') {\n value = Math.floor(value);\n }\n else {\n value = null;\n }\n return value;\n };\n Utils.setScrollLeft = function (element, value, rtl) {\n if (rtl) {\n // Chrome and Safari when doing RTL have the END position of the scroll as zero, not the start\n if (this.isBrowserSafari() || this.isBrowserChrome()) {\n value = element.scrollWidth - element.clientWidth - value;\n }\n // Firefox uses negative numbers when doing RTL scrolling\n if (this.isBrowserFirefox()) {\n value *= -1;\n }\n }\n element.scrollLeft = value;\n };\n Utils.iterateNamedNodeMap = function (map, callback) {\n if (!map) {\n return;\n }\n for (var i = 0; i < map.length; i++) {\n var attr = map[i];\n callback(attr.name, attr.value);\n }\n };\n Utils.iterateObject = function (object, callback) {\n if (!object || this.missing(object)) {\n return;\n }\n if (Array.isArray(object)) {\n object.forEach(function (value, index) { return callback(\"\" + index, value); });\n }\n else {\n Object.keys(object).forEach(function (key) { return callback(key, object[key]); });\n }\n };\n Utils.cloneObject = function (object) {\n var copy = {};\n var keys = Object.keys(object);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = object[key];\n copy[key] = value;\n }\n return copy;\n };\n /**\n * Will copy the specified properties from `source` into the equivalent properties on `target`, ignoring properties with\n * a value of `undefined`.\n */\n Utils.copyPropertiesIfPresent = function (source, target) {\n var _this = this;\n var properties = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n properties[_i - 2] = arguments[_i];\n }\n properties.forEach(function (p) { return _this.copyPropertyIfPresent(source, target, p); });\n };\n /**\n * Will copy the specified property from `source` into the equivalent property on `target`, unless the property has a\n * value of `undefined`. If a transformation is provided, it will be applied to the value before being set on `target`.\n */\n Utils.copyPropertyIfPresent = function (source, target, property, transform) {\n var value = this.getProperty(source, property);\n if (value !== undefined) {\n this.setProperty(target, property, transform ? transform(value) : value);\n }\n };\n Utils.getAllKeysInObjects = function (objects) {\n var allValues = {};\n objects.forEach(function (obj) {\n if (obj) {\n Object.keys(obj).forEach(function (key) { return allValues[key] = null; });\n }\n });\n return Object.keys(allValues);\n };\n Utils.mergeDeep = function (dest, source) {\n if (!this.exists(source)) {\n return;\n }\n this.iterateObject(source, function (key, newValue) {\n var oldValue = dest[key];\n if (oldValue === newValue) {\n return;\n }\n if (typeof oldValue === 'object' && typeof newValue === 'object') {\n Utils.mergeDeep(oldValue, newValue);\n }\n else {\n dest[key] = newValue;\n }\n });\n };\n Utils.assign = function (object) {\n var _this = this;\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n sources.forEach(function (source) {\n if (_this.exists(source)) {\n _this.iterateObject(source, function (key, value) {\n object[key] = value;\n });\n }\n });\n return object;\n };\n Utils.flatten = function (arrayOfArrays) {\n return [].concat.apply([], arrayOfArrays);\n };\n Utils.parseYyyyMmDdToDate = function (yyyyMmDd, separator) {\n try {\n if (!yyyyMmDd) {\n return null;\n }\n if (yyyyMmDd.indexOf(separator) === -1) {\n return null;\n }\n var fields = yyyyMmDd.split(separator);\n if (fields.length != 3) {\n return null;\n }\n return new Date(Number(fields[0]), Number(fields[1]) - 1, Number(fields[2]));\n }\n catch (e) {\n return null;\n }\n };\n Utils.serializeDateToYyyyMmDd = function (date, separator) {\n if (!date) {\n return null;\n }\n return date.getFullYear() + separator + this.padStart(date.getMonth() + 1, 2) + separator + this.padStart(date.getDate(), 2);\n };\n Utils.padStart = function (num, totalStringSize) {\n var asString = num + \"\";\n while (asString.length < totalStringSize) {\n asString = \"0\" + asString;\n }\n return asString;\n };\n Utils.pushAll = function (target, source) {\n if (this.missing(source) || this.missing(target)) {\n return;\n }\n source.forEach(function (func) { return target.push(func); });\n };\n Utils.createArrayOfNumbers = function (first, last) {\n var result = [];\n for (var i = first; i <= last; i++) {\n result.push(i);\n }\n return result;\n };\n Utils.getFunctionParameters = function (func) {\n var fnStr = func.toString().replace(FUNCTION_STRIP_COMMENTS, '');\n var result = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(FUNCTION_ARGUMENT_NAMES);\n if (result === null) {\n return [];\n }\n else {\n return result;\n }\n };\n Utils.find = function (collection, predicate, value) {\n if (collection === null || collection === undefined) {\n return null;\n }\n if (!Array.isArray(collection)) {\n var objToArray = this.values(collection);\n return this.find(objToArray, predicate, value);\n }\n var collectionAsArray = collection;\n var firstMatchingItem = null;\n for (var i = 0; i < collectionAsArray.length; i++) {\n var item = collectionAsArray[i];\n if (typeof predicate === 'string') {\n if (item[predicate] === value) {\n firstMatchingItem = item;\n break;\n }\n }\n else {\n var callback = predicate;\n if (callback(item)) {\n firstMatchingItem = item;\n break;\n }\n }\n }\n return firstMatchingItem;\n };\n Utils.toStrings = function (array) {\n return array.map(function (item) {\n if (item === undefined || item === null || !item.toString) {\n return null;\n }\n else {\n return item.toString();\n }\n });\n };\n Utils.findIndex = function (collection, predicate) {\n for (var i = 0; i < collection.length; i++) {\n if (predicate(collection[i], i, collection)) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Returns true if it is a DOM node\n * taken from: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n * @param {any} o\n * @return {boolean}\n */\n Utils.isNode = function (o) {\n return (typeof Node === \"function\" ? o instanceof Node :\n o && typeof o === \"object\" && typeof o.nodeType === \"number\" && typeof o.nodeName === \"string\");\n };\n //\n /**\n * Returns true if it is a DOM element\n * taken from: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n * @param {any} o\n * @returns {boolean}\n */\n Utils.isElement = function (o) {\n return (typeof HTMLElement === \"function\" ? o instanceof HTMLElement : //DOM2\n o && typeof o === \"object\" && o !== null && o.nodeType === 1 && typeof o.nodeName === \"string\");\n };\n Utils.isNodeOrElement = function (o) {\n return this.isNode(o) || this.isElement(o);\n };\n /**\n * Makes a copy of a node list into a list\n * @param {NodeList} nodeList\n * @returns {Node[]}\n */\n Utils.copyNodeList = function (nodeList) {\n var childCount = nodeList ? nodeList.length : 0;\n var res = [];\n for (var i = 0; i < childCount; i++) {\n res.push(nodeList[i]);\n }\n return res;\n };\n Utils.isEventFromPrintableCharacter = function (event) {\n var pressedChar = String.fromCharCode(event.charCode);\n // newline is an exception, as it counts as a printable character, but we don't\n // want to start editing when it is pressed. without this check, if user is in chrome\n // and editing a cell, and they press ctrl+enter, the cell stops editing, and then\n // starts editing again with a blank value (two 'key down' events are fired). to\n // test this, remove the line below, edit a cell in chrome and hit ctrl+enter while editing.\n // https://ag-grid.atlassian.net/browse/AG-605\n if (this.isKeyPressed(event, Constants.KEY_NEW_LINE)) {\n return false;\n }\n // no allowed printable chars have alt or ctrl key combinations\n if (event.altKey || event.ctrlKey) {\n return false;\n }\n if (_.exists(event.key)) {\n // modern browser will implement key, so we return if key is length 1, eg if it is 'a' for the\n // a key, or '2' for the '2' key. non-printable characters have names, eg 'Enter' or 'Backspace'.\n var printableCharacter = event.key.length === 1;\n // IE11 & Edge treat the numpad del key differently - with numlock on we get \"Del\" for key,\n // so this addition checks if its IE11/Edge and handles that specific case the same was as all other browsers\n var numpadDelWithNumlockOnForEdgeOrIe = Utils.isNumpadDelWithNumlockOnForEdgeOrIe(event);\n return printableCharacter || numpadDelWithNumlockOnForEdgeOrIe;\n }\n else {\n // otherwise, for older browsers, we test against a list of characters, which doesn't include\n // accents for non-English, but don't care much, as most users are on modern browsers\n return Utils.PRINTABLE_CHARACTERS.indexOf(pressedChar) >= 0;\n }\n };\n /**\n * Allows user to tell the grid to skip specific keyboard events\n * @param {GridOptionsWrapper} gridOptionsWrapper\n * @param {KeyboardEvent} keyboardEvent\n * @param {RowNode} rowNode\n * @param {Column} column\n * @param {boolean} editing\n * @returns {boolean}\n */\n Utils.isUserSuppressingKeyboardEvent = function (gridOptionsWrapper, keyboardEvent, rowNode, column, editing) {\n var gridOptionsFunc = gridOptionsWrapper.getSuppressKeyboardEventFunc();\n var colDefFunc = column.getColDef().suppressKeyboardEvent;\n // if no callbacks provided by user, then do nothing\n if (!gridOptionsFunc && !colDefFunc) {\n return false;\n }\n var params = {\n event: keyboardEvent,\n editing: editing,\n column: column,\n api: gridOptionsWrapper.getApi(),\n node: rowNode,\n data: rowNode.data,\n colDef: column.getColDef(),\n context: gridOptionsWrapper.getContext(),\n columnApi: gridOptionsWrapper.getColumnApi()\n };\n // colDef get first preference on suppressing events\n if (colDefFunc) {\n var colDefFuncResult = colDefFunc(params);\n // if colDef func suppressed, then return now, no need to call gridOption func\n if (colDefFuncResult) {\n return true;\n }\n }\n if (gridOptionsFunc) {\n // if gridOption func, return the result\n return gridOptionsFunc(params);\n }\n else {\n // otherwise return false, don't suppress, as colDef didn't suppress and no func on gridOptions\n return false;\n }\n };\n Utils.getCellCompForEvent = function (gridOptionsWrapper, event) {\n var sourceElement = this.getTarget(event);\n while (sourceElement) {\n var renderedCell = gridOptionsWrapper.getDomData(sourceElement, 'cellComp');\n if (renderedCell) {\n return renderedCell;\n }\n sourceElement = sourceElement.parentElement;\n }\n return null;\n };\n /**\n * Adds all type of change listeners to an element, intended to be a text field\n * @param {HTMLElement} element\n * @param {EventListener} listener\n */\n Utils.addChangeListener = function (element, listener) {\n element.addEventListener(\"changed\", listener);\n element.addEventListener(\"paste\", listener);\n element.addEventListener(\"input\", listener);\n // IE doesn't fire changed for special keys (eg delete, backspace), so need to\n // listen for this further ones\n element.addEventListener(\"keydown\", listener);\n element.addEventListener(\"keyup\", listener);\n };\n /**\n * If value is undefined, null or blank, returns null, otherwise returns the value\n * @param {T} value\n * @returns {T | null}\n */\n Utils.makeNull = function (value) {\n var valueNoType = value;\n if (value === null || value === undefined || valueNoType === \"\") {\n return null;\n }\n return value;\n };\n Utils.missing = function (value) {\n return !this.exists(value);\n };\n Utils.missingOrEmpty = function (value) {\n return !value || this.missing(value) || value.length === 0;\n };\n Utils.missingOrEmptyObject = function (value) {\n return this.missing(value) || Object.keys(value).length === 0;\n };\n Utils.exists = function (value, allowEmptyString) {\n if (allowEmptyString === void 0) { allowEmptyString = false; }\n return value != null && (value !== '' || allowEmptyString);\n };\n Utils.firstExistingValue = function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if (_.exists(value)) {\n return value;\n }\n }\n return null;\n };\n Utils.anyExists = function (values) {\n if (values) {\n for (var i = 0; i < values.length; i++) {\n if (this.exists(values[i])) {\n return true;\n }\n }\n }\n return false;\n };\n Utils.existsAndNotEmpty = function (value) {\n return value != null && this.exists(value) && value.length > 0;\n };\n Utils.clearElement = function (el) {\n while (el && el.firstChild) {\n el.removeChild(el.firstChild);\n }\n };\n Utils.removeElement = function (parent, cssSelector) {\n this.removeFromParent(parent.querySelector(cssSelector));\n };\n Utils.removeFromParent = function (node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n };\n Utils.isVisible = function (element) {\n return (element.offsetParent !== null);\n };\n Utils.callIfPresent = function (func) {\n if (func) {\n func();\n }\n };\n /**\n * Loads the template and returns it as an element. makes up for no simple way in\n * the dom api to load html directly, eg we cannot do this: document.createElement(template)\n * @param {string} template\n * @returns {HTMLElement}\n */\n Utils.loadTemplate = function (template) {\n var tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = template;\n return tempDiv.firstChild;\n };\n Utils.appendHtml = function (eContainer, htmlTemplate) {\n if (eContainer.lastChild) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML\n // we put the items at the start, so new items appear underneath old items,\n // so when expanding/collapsing groups, the new rows don't go on top of the\n // rows below that are moving our of the way\n eContainer.insertAdjacentHTML('afterbegin', htmlTemplate);\n }\n else {\n eContainer.innerHTML = htmlTemplate;\n }\n };\n Utils.addOrRemoveCssClass = function (element, className, addOrRemove) {\n if (addOrRemove) {\n this.addCssClass(element, className);\n }\n else {\n this.removeCssClass(element, className);\n }\n };\n /**\n * This method adds a class to an element and remove that class from all siblings.\n * Useful for toggling state.\n * @param {HTMLElement} element The element to receive the class\n * @param {string} className The class to be assigned to the element\n * @param {boolean} [inverted] This inverts the effect, adding the class to all siblings and\n * removing from the relevant element (useful when adding a class to hide non-selected elements).\n */\n Utils.radioCssClass = function (element, className, inverted) {\n var parent = element.parentElement;\n var sibling = parent.firstChild;\n while (sibling) {\n _.addOrRemoveCssClass(sibling, className, inverted ? (sibling !== element) : (sibling === element));\n sibling = sibling.nextSibling;\n }\n };\n Utils.addCssClass = function (element, className) {\n var _this = this;\n if (!className || className.length === 0) {\n return;\n }\n if (className.indexOf(' ') >= 0) {\n className.split(' ').forEach(function (value) { return _this.addCssClass(element, value); });\n return;\n }\n if (element.classList) {\n if (!element.classList.contains(className)) {\n element.classList.add(className);\n }\n }\n else {\n if (element.className && element.className.length > 0) {\n var cssClasses = element.className.split(' ');\n if (cssClasses.indexOf(className) < 0) {\n cssClasses.push(className);\n element.setAttribute('class', cssClasses.join(' '));\n }\n }\n else {\n // do not use element.classList = className here, it will cause\n // a read-only assignment error on some browsers (IE/Edge).\n element.setAttribute('class', className);\n }\n }\n };\n Utils.removeCssClass = function (element, className) {\n if (element.classList) {\n if (element.classList.contains(className)) {\n element.classList.remove(className);\n }\n }\n else {\n if (element.className && element.className.length > 0) {\n var cssClasses = element.className.split(' ');\n if (cssClasses.indexOf(className) >= 0) {\n // remove all instances of the item, not just the first, in case it's in more than once\n while (cssClasses.indexOf(className) >= 0) {\n cssClasses.splice(cssClasses.indexOf(className), 1);\n }\n element.setAttribute('class', cssClasses.join(' '));\n }\n }\n }\n };\n Utils.containsClass = function (element, className) {\n if (element.classList) {\n // for modern browsers\n return element.classList.contains(className);\n }\n else if (element.className) {\n // for older browsers, check against the string of class names\n // if only one class, can check for exact match\n var onlyClass = element.className === className;\n // if many classes, check for class name, we have to pad with ' ' to stop other\n // class names that are a substring of this class\n var contains = element.className.indexOf(' ' + className + ' ') >= 0;\n // the padding above then breaks when it's the first or last class names\n var startsWithClass = element.className.indexOf(className + ' ') === 0;\n var endsWithClass = element.className.lastIndexOf(' ' + className) === (element.className.length - className.length - 1);\n return onlyClass || contains || startsWithClass || endsWithClass;\n }\n else {\n // if item is not a node\n return false;\n }\n };\n Utils.getElementAttribute = function (element, attributeName) {\n if (element.attributes) {\n if (element.attributes[attributeName]) {\n var attribute = element.attributes[attributeName];\n return attribute.value;\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n };\n Utils.offsetHeight = function (element) {\n return element && element.clientHeight ? element.clientHeight : 0;\n };\n Utils.offsetWidth = function (element) {\n return element && element.clientWidth ? element.clientWidth : 0;\n };\n Utils.sortNumberArray = function (numberArray) {\n numberArray.sort(function (a, b) { return a - b; });\n };\n Utils.removeRepeatsFromArray = function (array, object) {\n if (!array) {\n return;\n }\n for (var index = array.length - 2; index >= 0; index--) {\n var thisOneMatches = array[index] === object;\n var nextOneMatches = array[index + 1] === object;\n if (thisOneMatches && nextOneMatches) {\n array.splice(index + 1, 1);\n }\n }\n };\n Utils.removeFromArray = function (array, object) {\n var index = array.indexOf(object);\n if (index >= 0) {\n array.splice(index, 1);\n }\n };\n Utils.removeAllFromArray = function (array, toRemove) {\n toRemove.forEach(function (item) {\n var index = array.indexOf(item);\n if (index >= 0) {\n array.splice(index, 1);\n }\n });\n };\n Utils.insertIntoArray = function (array, object, toIndex) {\n array.splice(toIndex, 0, object);\n };\n Utils.insertArrayIntoArray = function (dest, src, toIndex) {\n if (this.missing(dest) || this.missing(src)) {\n return;\n }\n // put items in backwards, otherwise inserted items end up in reverse order\n for (var i = src.length - 1; i >= 0; i--) {\n var item = src[i];\n this.insertIntoArray(dest, item, toIndex);\n }\n };\n Utils.moveInArray = function (array, objectsToMove, toIndex) {\n var _this = this;\n // first take out it items from the array\n objectsToMove.forEach(function (obj) {\n _this.removeFromArray(array, obj);\n });\n // now add the objects, in same order as provided to us, that means we start at the end\n // as the objects will be pushed to the right as they are inserted\n objectsToMove.slice().reverse().forEach(function (obj) {\n _this.insertIntoArray(array, obj, toIndex);\n });\n };\n Utils.defaultComparator = function (valueA, valueB, accentedCompare) {\n if (accentedCompare === void 0) { accentedCompare = false; }\n var valueAMissing = valueA === null || valueA === undefined;\n var valueBMissing = valueB === null || valueB === undefined;\n // this is for aggregations sum and avg, where the result can be a number that is wrapped.\n // if we didn't do this, then the toString() value would be used, which would result in\n // the strings getting used instead of the numbers.\n if (valueA && valueA.toNumber) {\n valueA = valueA.toNumber();\n }\n if (valueB && valueB.toNumber) {\n valueB = valueB.toNumber();\n }\n if (valueAMissing && valueBMissing) {\n return 0;\n }\n if (valueAMissing) {\n return -1;\n }\n if (valueBMissing) {\n return 1;\n }\n if (typeof valueA === \"string\") {\n if (!accentedCompare) {\n return doQuickCompare(valueA, valueB);\n }\n else {\n try {\n // using local compare also allows chinese comparisons\n return valueA.localeCompare(valueB);\n }\n catch (e) {\n // if something wrong with localeCompare, eg not supported\n // by browser, then just continue with the quick one\n return doQuickCompare(valueA, valueB);\n }\n }\n }\n if (valueA < valueB) {\n return -1;\n }\n else if (valueA > valueB) {\n return 1;\n }\n else {\n return 0;\n }\n function doQuickCompare(a, b) {\n return (a > b ? 1 : (a < b ? -1 : 0));\n }\n };\n Utils.last = function (arr) {\n if (!arr || !arr.length) {\n return undefined;\n }\n return arr[arr.length - 1];\n };\n Utils.compareArrays = function (array1, array2) {\n if (this.missing(array1) && this.missing(array2)) {\n return true;\n }\n if ((this.missing(array1) || this.missing(array2)) ||\n (!array1 || !array2)) {\n return false;\n }\n if (array1.length !== array2.length) {\n return false;\n }\n for (var i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n };\n Utils.ensureDomOrder = function (eContainer, eChild, eChildBefore) {\n // if already in right order, do nothing\n if (eChildBefore && eChildBefore.nextSibling === eChild) {\n return;\n }\n if (eChildBefore) {\n if (eChildBefore.nextSibling) {\n // insert between the eRowBefore and the row after it\n eContainer.insertBefore(eChild, eChildBefore.nextSibling);\n }\n else {\n // if nextSibling is missing, means other row is at end, so just append new row at the end\n eContainer.appendChild(eChild);\n }\n }\n else {\n // otherwise put at start\n if (eContainer.firstChild && eContainer.firstChild !== eChild) {\n // insert it at the first location\n eContainer.insertAdjacentElement('afterbegin', eChild);\n }\n }\n };\n Utils.setDomChildOrder = function (eContainer, orderedChildren) {\n for (var i = 0; i < orderedChildren.length; i++) {\n var correctCellAtIndex = orderedChildren[i];\n var actualCellAtIndex = eContainer.children[i];\n if (actualCellAtIndex !== correctCellAtIndex) {\n eContainer.insertBefore(correctCellAtIndex, actualCellAtIndex);\n }\n }\n };\n Utils.insertTemplateWithDomOrder = function (eContainer, htmlTemplate, eChildBefore) {\n var res;\n if (eChildBefore) {\n // if previous element exists, just slot in after the previous element\n eChildBefore.insertAdjacentHTML('afterend', htmlTemplate);\n res = eChildBefore.nextSibling;\n }\n else {\n if (eContainer.firstChild) {\n // insert it at the first location\n eContainer.insertAdjacentHTML('afterbegin', htmlTemplate);\n }\n else {\n // otherwise eContainer is empty, so just append it\n eContainer.innerHTML = htmlTemplate;\n }\n res = eContainer.firstChild;\n }\n return res;\n };\n Utils.every = function (items, callback) {\n if (!items || items.length === 0) {\n return true;\n }\n for (var i = 0; i < items.length; i++) {\n if (!callback(items[i])) {\n return false;\n }\n }\n return true;\n };\n Utils.toStringOrNull = function (value) {\n if (this.exists(value) && value.toString) {\n return value.toString();\n }\n else {\n return null;\n }\n };\n Utils.formatSize = function (size) {\n if (typeof size === \"number\") {\n return size + \"px\";\n }\n else {\n return size;\n }\n };\n Utils.formatNumberTwoDecimalPlacesAndCommas = function (value) {\n if (typeof value !== 'number') {\n return '';\n }\n // took this from: http://blog.tompawlak.org/number-currency-formatting-javascript\n return (Math.round(value * 100) / 100).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n };\n Utils.findLineByLeastSquares = function (values) {\n var len = values.length;\n if (len <= 1) {\n return values;\n }\n var sum_x = 0;\n var sum_y = 0;\n var sum_xy = 0;\n var sum_xx = 0;\n var y = 0;\n for (var x = 0; x < len; x++) {\n y = values[x];\n sum_x += x;\n sum_y += y;\n sum_xx += x * x;\n sum_xy += x * y;\n }\n var m = (len * sum_xy - sum_x * sum_y) / (len * sum_xx - sum_x * sum_x);\n var b = (sum_y / len) - (m * sum_x) / len;\n var result = [];\n for (var x = 0; x <= len; x++) {\n result.push(x * m + b);\n }\n return result;\n };\n /**\n * the native method number.toLocaleString(undefined, {minimumFractionDigits: 0})\n * puts in decimal places in IE, so we use this method instead\n * from: http://blog.tompawlak.org/number-currency-formatting-javascript\n * @param {number} value\n * @returns {string}\n */\n Utils.formatNumberCommas = function (value) {\n if (typeof value !== 'number') {\n return '';\n }\n return value.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n };\n Utils.prependDC = function (parent, documentFragment) {\n if (this.exists(parent.firstChild)) {\n parent.insertBefore(documentFragment, parent.firstChild);\n }\n else {\n parent.appendChild(documentFragment);\n }\n };\n /**\n * If icon provided, use this (either a string, or a function callback).\n * if not, then use the default icon from the theme\n * @param {string} iconName\n * @param {GridOptionsWrapper} gridOptionsWrapper\n * @param {Column | null} [column]\n * @returns {HTMLElement}\n */\n Utils.createIcon = function (iconName, gridOptionsWrapper, column) {\n var iconContents = this.createIconNoSpan(iconName, gridOptionsWrapper, column);\n if (iconContents.className.indexOf('ag-icon') > -1) {\n return iconContents;\n }\n else {\n var eResult = document.createElement('span');\n eResult.appendChild(iconContents);\n return eResult;\n }\n };\n Utils.createIconNoSpan = function (iconName, gridOptionsWrapper, column, forceCreate) {\n var userProvidedIcon = null;\n // check col for icon first\n var icons = column && column.getColDef().icons;\n if (icons) {\n userProvidedIcon = icons[iconName];\n }\n // if not in col, try grid options\n if (gridOptionsWrapper && !userProvidedIcon) {\n var optionsIcons = gridOptionsWrapper.getIcons();\n if (optionsIcons) {\n userProvidedIcon = optionsIcons[iconName];\n }\n }\n // now if user provided, use it\n if (userProvidedIcon) {\n var rendererResult = void 0;\n if (typeof userProvidedIcon === 'function') {\n rendererResult = userProvidedIcon();\n }\n else if (typeof userProvidedIcon === 'string') {\n rendererResult = userProvidedIcon;\n }\n else {\n throw new Error('icon from grid options needs to be a string or a function');\n }\n if (typeof rendererResult === 'string') {\n return this.loadTemplate(rendererResult);\n }\n else if (this.isNodeOrElement(rendererResult)) {\n return rendererResult;\n }\n else {\n console.warn('ag-Grid: iconRenderer should return back a string or a dom object');\n }\n }\n else {\n var span = document.createElement('span');\n var cssClass = this.iconNameClassMap[iconName];\n if (!cssClass) {\n if (!forceCreate) {\n console.warn(\"ag-Grid: Did not find icon \" + iconName);\n cssClass = '';\n }\n else {\n cssClass = iconName;\n }\n }\n span.setAttribute(\"class\", \"ag-icon ag-icon-\" + cssClass);\n span.setAttribute(\"unselectable\", \"on\");\n return span;\n }\n };\n Utils.addStylesToElement = function (eElement, styles) {\n var _this = this;\n if (!styles) {\n return;\n }\n Object.keys(styles).forEach(function (key) {\n var keyCamelCase = _this.hyphenToCamelCase(key);\n if (keyCamelCase) {\n eElement.style[keyCamelCase] = styles[key];\n }\n });\n };\n Utils.isHorizontalScrollShowing = function (element) {\n return element.clientWidth < element.scrollWidth;\n };\n Utils.isVerticalScrollShowing = function (element) {\n return element.clientHeight < element.scrollHeight;\n };\n Utils.getMaxDivHeight = function () {\n if (!document.body) {\n return -1;\n }\n var res = 1000000;\n // FF reports the height back but still renders blank after ~6M px\n var testUpTo = navigator.userAgent.toLowerCase().match(/firefox/) ? 6000000 : 1000000000;\n var div = this.loadTemplate(\"
\");\n document.body.appendChild(div);\n while (true) {\n var test = res * 2;\n div.style.height = test + 'px';\n if (test > testUpTo || div.clientHeight !== test) {\n break;\n }\n else {\n res = test;\n }\n }\n document.body.removeChild(div);\n return res;\n };\n Utils.getScrollbarWidth = function () {\n var body = document.body;\n var div = document.createElement(\"div\");\n div.style.width = div.style.height = \"100px\";\n div.style.opacity = \"0\";\n div.style.overflow = \"scroll\";\n div.style.msOverflowStyle = \"scrollbar\"; // needed for WinJS apps\n div.style.position = \"absolute\";\n body.appendChild(div);\n var width = div.offsetWidth - div.clientWidth;\n // remove divs\n if (div.parentNode) {\n div.parentNode.removeChild(div);\n }\n return width;\n };\n Utils.hasOverflowScrolling = function () {\n var prefixes = ['webkit', 'moz', 'o', 'ms'];\n var div = document.createElement('div');\n var body = document.getElementsByTagName('body')[0];\n var found = false;\n var p;\n body.appendChild(div);\n div.setAttribute('style', prefixes.map(function (prefix) { return \"-\" + prefix + \"-overflow-scrolling: touch\"; }).concat('overflow-scrolling: touch').join(';'));\n var computedStyle = window.getComputedStyle(div);\n if (computedStyle.overflowScrolling === 'touch') {\n found = true;\n }\n if (!found) {\n for (var _i = 0, prefixes_1 = prefixes; _i < prefixes_1.length; _i++) {\n p = prefixes_1[_i];\n if (computedStyle[p + \"OverflowScrolling\"] === 'touch') {\n found = true;\n break;\n }\n }\n }\n if (div.parentNode) {\n div.parentNode.removeChild(div);\n }\n return found;\n };\n Utils.isKeyPressed = function (event, keyToCheck) {\n var pressedKey = event.which || event.keyCode;\n return pressedKey === keyToCheck;\n };\n Utils.isCharacterKey = function (event) {\n // from: https://stackoverflow.com/questions/4179708/how-to-detect-if-the-pressed-key-will-produce-a-character-inside-an-input-text\n var which = event.which;\n if (typeof which === 'number' && which) {\n return !event.ctrlKey && !event.metaKey && !event.altKey && event.which !== 8 && event.which !== 16;\n }\n return which === undefined;\n };\n Utils.setDisplayed = function (element, displayed) {\n this.addOrRemoveCssClass(element, 'ag-hidden', !displayed);\n };\n Utils.setVisible = function (element, visible) {\n this.addOrRemoveCssClass(element, 'ag-invisible', !visible);\n };\n Utils.setElementWidth = function (element, width) {\n if (width === 'flex') {\n element.style.width = null;\n element.style.minWidth = null;\n element.style.maxWidth = null;\n element.style.flex = '1 1 auto';\n }\n else {\n this.setFixedWidth(element, width);\n }\n };\n Utils.setFixedWidth = function (element, width) {\n width = this.formatSize(width);\n element.style.width = width;\n element.style.maxWidth = width;\n element.style.minWidth = width;\n };\n Utils.setElementHeight = function (element, height) {\n if (height === 'flex') {\n element.style.height = null;\n element.style.minHeight = null;\n element.style.maxHeight = null;\n element.style.flex = '1 1 auto';\n }\n else {\n this.setFixedHeight(element, height);\n }\n };\n Utils.setFixedHeight = function (element, height) {\n height = this.formatSize(height);\n element.style.height = height;\n element.style.maxHeight = height;\n element.style.minHeight = height;\n };\n Utils.isBrowserIE = function () {\n if (this.isIE === undefined) {\n this.isIE = /*@cc_on!@*/ false || !!document.documentMode; // At least IE6\n }\n return this.isIE;\n };\n Utils.isBrowserEdge = function () {\n if (this.isEdge === undefined) {\n this.isEdge = !this.isBrowserIE() && !!window.StyleMedia;\n }\n return this.isEdge;\n };\n Utils.isBrowserSafari = function () {\n if (this.isSafari === undefined) {\n var anyWindow = window;\n // taken from https://github.com/ag-grid/ag-grid/issues/550\n this.isSafari = Object.prototype.toString.call(anyWindow.HTMLElement).indexOf('Constructor') > 0\n || (function (p) {\n return p ? p.toString() === \"[object SafariRemoteNotification]\" : false;\n })(!anyWindow.safari || anyWindow.safari.pushNotification);\n }\n return this.isSafari;\n };\n Utils.isBrowserChrome = function () {\n if (this.isChrome === undefined) {\n var win = window;\n this.isChrome = (!!win.chrome && (!!win.chrome.webstore || !!win.chrome.runtime)) ||\n (/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor));\n }\n return this.isChrome;\n };\n Utils.isBrowserFirefox = function () {\n if (this.isFirefox === undefined) {\n var win = window;\n this.isFirefox = typeof win.InstallTrigger !== 'undefined';\n }\n return this.isFirefox;\n };\n Utils.isIOSUserAgent = function () {\n if (this.isIOS === undefined) {\n // taken from https://stackoverflow.com/a/58064481/1388233\n this.isIOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||\n // eslint-disable-next-line\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) &&\n !window.MSStream;\n }\n return this.isIOS;\n };\n /**\n * srcElement is only available in IE. In all other browsers it is target\n * http://stackoverflow.com/questions/5301643/how-can-i-make-event-srcelement-work-in-firefox-and-what-does-it-mean\n * @param {Event} event\n * @returns {Element}\n */\n Utils.getTarget = function (event) {\n var eventNoType = event;\n return eventNoType.target || eventNoType.srcElement;\n };\n Utils.isElementChildOfClass = function (element, cls, maxNest) {\n var counter = 0;\n while (element) {\n if (this.containsClass(element, cls)) {\n return true;\n }\n element = element.parentElement;\n if (maxNest && ++counter > maxNest) {\n break;\n }\n }\n return false;\n };\n Utils.isElementInEventPath = function (element, event) {\n if (!event || !element) {\n return false;\n }\n var path = _.getEventPath(event);\n return path.indexOf(element) >= 0;\n };\n Utils.isFunction = function (val) {\n return !!(val && val.constructor && val.call && val.apply);\n };\n Utils.createEventPath = function (event) {\n var res = [];\n var pointer = _.getTarget(event);\n while (pointer) {\n res.push(pointer);\n pointer = pointer.parentElement;\n }\n return res;\n };\n /**\n * firefox doesn't have event.path set, or any alternative to it, so we hack\n * it in. this is needed as it's to late to work out the path when the item is\n * removed from the dom. used by MouseEventService, where it works out if a click\n * was from the current grid, or a detail grid (master / detail).\n * @param {Event} event\n */\n Utils.addAgGridEventPath = function (event) {\n event.__agGridEventPath = this.getEventPath(event);\n };\n /**\n * Gets the path for an Event.\n * https://stackoverflow.com/questions/39245488/event-path-undefined-with-firefox-and-vue-js\n * https://developer.mozilla.org/en-US/docs/Web/API/Event\n * @param {Event} event\n * @returns {EventTarget[]}\n */\n Utils.getEventPath = function (event) {\n var eventNoType = event;\n if (eventNoType.deepPath) {\n // IE supports deep path\n return eventNoType.deepPath();\n }\n else if (eventNoType.path) {\n // Chrome supports path\n return eventNoType.path;\n }\n else if (eventNoType.composedPath) {\n // Firefox supports composePath\n return eventNoType.composedPath();\n }\n else if (eventNoType.__agGridEventPath) {\n // Firefox supports composePath\n return eventNoType.__agGridEventPath;\n }\n else {\n // and finally, if none of the above worked,\n // we create the path ourselves\n return this.createEventPath(event);\n }\n };\n Utils.forEachSnapshotFirst = function (list, callback) {\n if (list) {\n var arrayCopy = list.slice(0);\n arrayCopy.forEach(callback);\n }\n };\n /**\n * Gets the document body width\n * from: http://stackoverflow.com/questions/1038727/how-to-get-browser-width-using-javascript-code\n * @returns {number}\n */\n Utils.getBodyWidth = function () {\n if (document.body) {\n return document.body.clientWidth;\n }\n if (window.innerHeight) {\n return window.innerWidth;\n }\n if (document.documentElement && document.documentElement.clientWidth) {\n return document.documentElement.clientWidth;\n }\n return -1;\n };\n /**\n * Gets the body height\n * from: http://stackoverflow.com/questions/1038727/how-to-get-browser-width-using-javascript-code\n * @returns {number}\n */\n Utils.getBodyHeight = function () {\n if (document.body) {\n return document.body.clientHeight;\n }\n if (window.innerHeight) {\n return window.innerHeight;\n }\n if (document.documentElement && document.documentElement.clientHeight) {\n return document.documentElement.clientHeight;\n }\n return -1;\n };\n Utils.setCheckboxState = function (eCheckbox, state) {\n if (typeof state === 'boolean') {\n eCheckbox.checked = state;\n eCheckbox.indeterminate = false;\n }\n else {\n // isNodeSelected returns back undefined if it's a group and the children\n // are a mix of selected and unselected\n eCheckbox.indeterminate = true;\n }\n };\n Utils.traverseNodesWithKey = function (nodes, callback) {\n var keyParts = [];\n recursiveSearchNodes(nodes);\n function recursiveSearchNodes(currentNodes) {\n currentNodes.forEach(function (node) {\n // also checking for children for tree data\n if (node.group || node.hasChildren()) {\n keyParts.push(node.key);\n var key = keyParts.join('|');\n callback(node, key);\n recursiveSearchNodes(node.childrenAfterGroup);\n keyParts.pop();\n }\n });\n }\n };\n /**\n * Converts a camelCase string into hyphenated string\n * from https://gist.github.com/youssman/745578062609e8acac9f\n * @param {string} str\n * @return {string}\n */\n Utils.camelCaseToHyphen = function (str) {\n if (str === null || str === undefined) {\n return null;\n }\n return str.replace(/([A-Z])/g, function (g) { return '-' + g[0].toLowerCase(); });\n };\n /**\n * Converts a hyphenated string into camelCase string\n * from https://stackoverflow.com/questions/6660977/convert-hyphens-to-camel-case-camelcase\n * @param {string} str\n * @return {string}\n */\n Utils.hyphenToCamelCase = function (str) {\n if (str === null || str === undefined) {\n return null;\n }\n return str.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });\n };\n Utils.capitalise = function (str) {\n return str[0].toUpperCase() + str.substr(1).toLowerCase();\n };\n /**\n * Converts a CSS object into string\n * @param {Object} stylesToUse an object eg: {color: 'black', top: '25px'}\n * @return {string} A string like \"color: black; top: 25px;\" for html\n */\n Utils.cssStyleObjectToMarkup = function (stylesToUse) {\n var _this = this;\n if (!stylesToUse) {\n return '';\n }\n var resParts = [];\n this.iterateObject(stylesToUse, function (styleKey, styleValue) {\n var styleKeyDashed = _this.camelCaseToHyphen(styleKey);\n resParts.push(styleKeyDashed + \": \" + styleValue + \";\");\n });\n return resParts.join(' ');\n };\n /**\n * Check if a value is numeric\n * from http://stackoverflow.com/questions/9716468/is-there-any-function-like-isnumeric-in-javascript-to-validate-numbers\n * @param {any} value\n * @return {boolean}\n */\n Utils.isNumeric = function (value) {\n if (value === '') {\n return false;\n }\n return !isNaN(parseFloat(value)) && isFinite(value);\n };\n Utils.escape = function (toEscape) {\n if (toEscape === null || toEscape === undefined || !toEscape.replace) {\n return toEscape;\n }\n return toEscape.replace(reUnescapedHtml, function (chr) { return HTML_ESCAPES[chr]; });\n };\n /**\n * Mouse wheel (and 2-finger trackpad) support on the web sucks. It is\n * complicated, thus this doc is long and (hopefully) detailed enough to answer\n * your questions.\n *\n * If you need to react to the mouse wheel in a predictable way, this code is\n * like your bestest friend. * hugs *\n *\n * As of today, there are 4 DOM event types you can listen to:\n *\n * 'wheel' -- Chrome(31+), FF(17+), IE(9+)\n * 'mousewheel' -- Chrome, IE(6+), Opera, Safari\n * 'MozMousePixelScroll' -- FF(3.5 only!) (2010-2013) -- don't bother!\n * 'DOMMouseScroll' -- FF(0.9.7+) since 2003\n *\n * So what to do? The is the best:\n *\n * normalizeWheel.getEventType();\n *\n * In your event callback, use this code to get sane interpretation of the\n * deltas. This code will return an object with properties:\n *\n * spinX -- normalized spin speed (use for zoom) - x plane\n * spinY -- \" - y plane\n * pixelX -- normalized distance (to pixels) - x plane\n * pixelY -- \" - y plane\n *\n * Wheel values are provided by the browser assuming you are using the wheel to\n * scroll a web page by a number of lines or pixels (or pages). Values can vary\n * significantly on different platforms and browsers, forgetting that you can\n * scroll at different speeds. Some devices (like trackpads) emit more events\n * at smaller increments with fine granularity, and some emit massive jumps with\n * linear speed or acceleration.\n *\n * This code does its best to normalize the deltas for you:\n *\n * - spin is trying to normalize how far the wheel was spun (or trackpad\n * dragged). This is super useful for zoom support where you want to\n * throw away the chunky scroll steps on the PC and make those equal to\n * the slow and smooth tiny steps on the Mac. Key data: This code tries to\n * resolve a single slow step on a wheel to 1.\n *\n * - pixel is normalizing the desired scroll delta in pixel units. You'll\n * get the crazy differences between browsers, but at least it'll be in\n * pixels!\n *\n * - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT. This\n * should translate to positive value zooming IN, negative zooming OUT.\n * This matches the newer 'wheel' event.\n *\n * Why are there spinX, spinY (or pixels)?\n *\n * - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn\n * with a mouse. It results in side-scrolling in the browser by default.\n *\n * - spinY is what you expect -- it's the classic axis of a mouse wheel.\n *\n * - I dropped spinZ/pixelZ. It is supported by the DOM 3 'wheel' event and\n * probably is by browsers in conjunction with fancy 3D controllers .. but\n * you know.\n *\n * Implementation info:\n *\n * Examples of 'wheel' event if you scroll slowly (down) by one step with an\n * average mouse:\n *\n * OS X + Chrome (mouse) - 4 pixel delta (wheelDelta -120)\n * OS X + Safari (mouse) - N/A pixel delta (wheelDelta -12)\n * OS X + Firefox (mouse) - 0.1 line delta (wheelDelta N/A)\n * Win8 + Chrome (mouse) - 100 pixel delta (wheelDelta -120)\n * Win8 + Firefox (mouse) - 3 line delta (wheelDelta -120)\n *\n * On the trackpad:\n *\n * OS X + Chrome (trackpad) - 2 pixel delta (wheelDelta -6)\n * OS X + Firefox (trackpad) - 1 pixel delta (wheelDelta N/A)\n *\n * On other/older browsers.. it's more complicated as there can be multiple and\n * also missing delta values.\n *\n * The 'wheel' event is more standard:\n *\n * http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents\n *\n * The basics is that it includes a unit, deltaMode (pixels, lines, pages), and\n * deltaX, deltaY and deltaZ. Some browsers provide other values to maintain\n * backward compatibility with older events. Those other values help us\n * better normalize spin speed. Example of what the browsers provide:\n *\n * | event.wheelDelta | event.detail\n * ------------------+------------------+--------------\n * Safari v5/OS X | -120 | 0\n * Safari v5/Win7 | -120 | 0\n * Chrome v17/OS X | -120 | 0\n * Chrome v17/Win7 | -120 | 0\n * IE9/Win7 | -120 | undefined\n * Firefox v4/OS X | undefined | 1\n * Firefox v4/Win7 | undefined | 3\n *\n * from: https://github.com/facebook/fixed-data-table/blob/master/src/vendor_upstream/dom/normalizeWheel.js\n * @param {any} event\n * @return {any}\n */\n Utils.normalizeWheel = function (event) {\n var PIXEL_STEP = 10;\n var LINE_HEIGHT = 40;\n var PAGE_HEIGHT = 800;\n // spinX, spinY\n var sX = 0;\n var sY = 0;\n // pixelX, pixelY\n var pX = 0;\n var pY = 0;\n // Legacy\n if ('detail' in event) {\n sY = event.detail;\n }\n if ('wheelDelta' in event) {\n sY = -event.wheelDelta / 120;\n }\n if ('wheelDeltaY' in event) {\n sY = -event.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in event) {\n sX = -event.wheelDeltaX / 120;\n }\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in event && event.axis === event.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in event) {\n pY = event.deltaY;\n }\n if ('deltaX' in event) {\n pX = event.deltaX;\n }\n if ((pX || pY) && event.deltaMode) {\n if (event.deltaMode == 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n }\n else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n };\n /**\n * from https://stackoverflow.com/questions/24004791/can-someone-explain-the-debounce-function-in-javascript\n * @param {Function} func The function to be debounced\n * @param {number} wait The time in ms to debounce\n * @param {boolean} immediate If it should run immediately or wait for the initial debounce delay\n * @return {Function} The debounced function\n */\n Utils.debounce = function (func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n // 'private' variable for instance\n // The returned function will be able to reference this due to closure.\n // Each call to the returned function will share this common timer.\n var timeout;\n // Calling debounce returns a new anonymous function\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // reference the context and args for the setTimeout function\n var context = this;\n // Should the function be called now? If immediate is true\n // and not already in a timeout then the answer is: Yes\n var callNow = immediate && !timeout;\n // This is the basic debounce behaviour where you can call this\n // function several times, but it will only execute once\n // [before or after imposing a delay].\n // Each time the returned function is called, the timer starts over.\n window.clearTimeout(timeout);\n // Set the new timeout\n timeout = window.setTimeout(function () {\n // Inside the timeout function, clear the timeout variable\n // which will let the next execution run when in 'immediate' mode\n timeout = null;\n // Check if the function already ran with the immediate flag\n if (!immediate) {\n // Call the original function with apply\n // apply lets you define the 'this' object as well as the arguments\n // (both captured before setTimeout)\n func.apply(context, args);\n }\n }, wait);\n // Immediate mode and no wait timer? Execute the function..\n if (callNow) {\n func.apply(context, args);\n }\n };\n };\n /**\n * a user once raised an issue - they said that when you opened a popup (eg context menu)\n * and then clicked on a selection checkbox, the popup wasn't closed. this is because the\n * popup listens for clicks on the body, however ag-grid WAS stopping propagation on the\n * checkbox clicks (so the rows didn't pick them up as row selection selection clicks).\n * to get around this, we have a pattern to stop propagation for the purposes of ag-Grid,\n * but we still let the event pass back to teh body.\n * @param {Event} event\n */\n Utils.stopPropagationForAgGrid = function (event) {\n event[AG_GRID_STOP_PROPAGATION] = true;\n };\n Utils.isStopPropagationForAgGrid = function (event) {\n return event[AG_GRID_STOP_PROPAGATION] === true;\n };\n Utils.executeInAWhile = function (funcs) {\n this.executeAfter(funcs, 400);\n };\n Utils.executeNextVMTurn = function (funcs) {\n this.executeAfter(funcs, 0);\n };\n Utils.executeAfter = function (funcs, millis) {\n if (funcs.length > 0) {\n window.setTimeout(function () {\n funcs.forEach(function (func) { return func(); });\n }, millis);\n }\n };\n Utils.referenceCompare = function (left, right) {\n if (left == null && right == null) {\n return true;\n }\n if (left == null && right) {\n return false;\n }\n if (left && right == null) {\n return false;\n }\n return left === right;\n };\n Utils.get = function (source, expression, defaultValue) {\n if (source == null) {\n return defaultValue;\n }\n var keys = expression.split(\".\");\n var objectToRead = source;\n while (keys.length > 1) {\n objectToRead = objectToRead[keys.shift()];\n if (objectToRead == null) {\n return defaultValue;\n }\n }\n var value = objectToRead[keys[0]];\n return value != null ? value : defaultValue;\n };\n Utils.set = function (target, expression, value) {\n if (target == null) {\n return;\n }\n var keys = expression.split(\".\");\n var objectToUpdate = target;\n while (keys.length > 1) {\n objectToUpdate = objectToUpdate[keys.shift()];\n if (objectToUpdate == null) {\n return;\n }\n }\n objectToUpdate[keys[0]] = value;\n };\n Utils.addSafePassiveEventListener = function (frameworkOverrides, eElement, event, listener) {\n var isPassive = Utils.PASSIVE_EVENTS.indexOf(event) >= 0;\n var isOutsideAngular = Utils.OUTSIDE_ANGULAR_EVENTS.indexOf(event) >= 0;\n var options = isPassive ? { passive: true } : undefined;\n if (isOutsideAngular) {\n frameworkOverrides.addEventListenerOutsideAngular(eElement, event, listener, options);\n }\n else {\n eElement.addEventListener(event, listener, options);\n }\n };\n /**\n * Converts a camelCase string into regular text\n * from: https://stackoverflow.com/questions/15369566/putting-space-in-camel-case-string-using-regular-expression\n * @param {string} camelCase\n * @return {string}\n */\n Utils.camelCaseToHumanText = function (camelCase) {\n if (!camelCase || camelCase == null) {\n return null;\n }\n var rex = /([A-Z])([A-Z])([a-z])|([a-z])([A-Z])/g;\n var words = camelCase.replace(rex, '$1$4 $2$3$5').replace('.', ' ').split(' ');\n return words.map(function (word) { return word.substring(0, 1).toUpperCase() + ((word.length > 1) ? word.substring(1, word.length) : ''); }).join(' ');\n };\n /**\n * Displays a message to the browser. this is useful in iPad, where you can't easily see the console.\n * so the javascript code can use this to give feedback. this is NOT intended to be called in production.\n * it is intended the ag-Grid developer calls this to troubleshoot, but then takes out the calls before\n * checking in.\n * @param {string} msg\n */\n Utils.message = function (msg) {\n var eMessage = document.createElement('div');\n eMessage.innerHTML = msg;\n var eBox = document.querySelector('#__ag__message');\n if (!eBox) {\n var template = \"
\";\n eBox = this.loadTemplate(template);\n if (document.body) {\n document.body.appendChild(eBox);\n }\n }\n eBox.insertBefore(eMessage, eBox.children[0]);\n };\n /**\n * Gets called by: a) ClientSideNodeManager and b) GroupStage to do sorting.\n * when in ClientSideNodeManager we always have indexes (as this sorts the items the\n * user provided) but when in GroupStage, the nodes can contain filler nodes that\n * don't have order id's\n * @param {RowNode[]} rowNodes\n * @param {Object} rowNodeOrder\n */\n Utils.sortRowNodesByOrder = function (rowNodes, rowNodeOrder) {\n if (!rowNodes) {\n return;\n }\n var comparator = function (nodeA, nodeB) {\n var positionA = rowNodeOrder[nodeA.id];\n var positionB = rowNodeOrder[nodeB.id];\n var aHasIndex = positionA !== undefined;\n var bHasIndex = positionB !== undefined;\n var bothNodesAreUserNodes = aHasIndex && bHasIndex;\n var bothNodesAreFillerNodes = !aHasIndex && !bHasIndex;\n if (bothNodesAreUserNodes) {\n // when comparing two nodes the user has provided, they always\n // have indexes\n return positionA - positionB;\n }\n else if (bothNodesAreFillerNodes) {\n // when comparing two filler nodes, we have no index to compare them\n // against, however we want this sorting to be deterministic, so that\n // the rows don't jump around as the user does delta updates. so we\n // want the same sort result. so we use the __objectId - which doesn't make sense\n // from a sorting point of view, but does give consistent behaviour between\n // calls. otherwise groups jump around as delta updates are done.\n // note: previously here we used nodeId, however this gave a strange order\n // as string ordering of numbers is wrong, so using id based on creation order\n // as least gives better looking order.\n return nodeA.__objectId - nodeB.__objectId;\n }\n else if (aHasIndex) {\n return 1;\n }\n return -1;\n };\n // check if the list first needs sorting\n var rowNodeA;\n var rowNodeB;\n var atLeastOneOutOfOrder = false;\n for (var i = 0; i < rowNodes.length - 1; i++) {\n rowNodeA = rowNodes[i];\n rowNodeB = rowNodes[i + 1];\n if (comparator(rowNodeA, rowNodeB) > 0) {\n atLeastOneOutOfOrder = true;\n break;\n }\n }\n if (atLeastOneOutOfOrder) {\n rowNodes.sort(comparator);\n }\n };\n Utils.fuzzyCheckStrings = function (inputValues, validValues, allSuggestions) {\n var _this = this;\n var fuzzyMatches = {};\n var invalidInputs = inputValues.filter(function (inputValue) {\n return !validValues.some(function (validValue) { return validValue === inputValue; });\n });\n if (invalidInputs.length > 0) {\n invalidInputs.forEach(function (invalidInput) {\n return fuzzyMatches[invalidInput] = _this.fuzzySuggestions(invalidInput, allSuggestions);\n });\n }\n return fuzzyMatches;\n };\n /**\n *\n * @param {String} inputValue The value to be compared against a list of strings\n * @param allSuggestions The list of strings to be compared against\n * @param hideIrrelevant By default, fuzzy suggestions will just sort the allSuggestions list, set this to true\n * to filter out the irrelevant values\n * @param weighted Set this to true, to make letters matched in the order they were typed have priority in the results.\n */\n Utils.fuzzySuggestions = function (inputValue, allSuggestions, hideIrrelevant, weighted) {\n var search = weighted ? _.string_weighted_distances : _.string_distances;\n var thisSuggestions = allSuggestions.map(function (text) { return ({\n value: text,\n relevance: search(inputValue.toLowerCase(), text.toLocaleLowerCase())\n }); });\n thisSuggestions.sort(function (a, b) { return b.relevance - a.relevance; });\n if (hideIrrelevant) {\n thisSuggestions = thisSuggestions.filter(function (suggestion) { return suggestion.relevance !== 0; });\n }\n return thisSuggestions.map(function (suggestion) { return suggestion.value; });\n };\n /**\n * Algorithm to do fuzzy search\n * from https://stackoverflow.com/questions/23305000/javascript-fuzzy-search-that-makes-sense\n * @param {string} from\n * @return {[]}\n */\n Utils.get_bigrams = function (from) {\n var s = from.toLowerCase();\n var v = new Array(s.length - 1);\n var i;\n var j;\n var ref;\n for (i = j = 0, ref = v.length; j <= ref; i = j += 1) {\n v[i] = s.slice(i, i + 2);\n }\n return v;\n };\n Utils.string_distances = function (str1, str2) {\n if (str1.length === 0 && str2.length === 0) {\n return 0;\n }\n var pairs1 = _.get_bigrams(str1);\n var pairs2 = _.get_bigrams(str2);\n var union = pairs1.length + pairs2.length;\n var hit_count = 0;\n var j;\n var len;\n for (j = 0, len = pairs1.length; j < len; j++) {\n var x = pairs1[j];\n var k = void 0;\n var len1 = void 0;\n for (k = 0, len1 = pairs2.length; k < len1; k++) {\n var y = pairs2[k];\n if (x === y) {\n hit_count++;\n }\n }\n }\n return hit_count > 0 ? (2 * hit_count) / union : 0;\n };\n Utils.string_weighted_distances = function (str1, str2) {\n var a = str1.replace(/\\s/g, '');\n var b = str2.replace(/\\s/g, '');\n var weight = 0;\n var lastIndex = 0;\n for (var i = 0; i < a.length; i++) {\n var idx = b.indexOf(a[i]);\n if (idx === -1) {\n continue;\n }\n lastIndex = idx;\n weight += ((b.length - lastIndex) * 100) / b.length;\n weight *= weight;\n }\n return weight;\n };\n Utils.isNumpadDelWithNumlockOnForEdgeOrIe = function (event) {\n if (Utils.isBrowserEdge() || Utils.isBrowserIE()) {\n return event.key === Utils.NUMPAD_DEL_NUMLOCK_ON_KEY &&\n event.charCode === Utils.NUMPAD_DEL_NUMLOCK_ON_CHARCODE;\n }\n return false;\n };\n /**\n * cell renderers are used in a few places. they bind to dom slightly differently to other cell renderes as they\n * can return back strings (instead of html elemnt) in the getGui() method. common code placed here to handle that.\n * @param {Promise} cellRendererPromise\n * @param {HTMLElement} eTarget\n */\n Utils.bindCellRendererToHtmlElement = function (cellRendererPromise, eTarget) {\n cellRendererPromise.then(function (cellRenderer) {\n var gui = cellRenderer.getGui();\n if (gui != null) {\n if (typeof gui == 'object') {\n eTarget.appendChild(gui);\n }\n else {\n eTarget.innerHTML = gui;\n }\n }\n });\n };\n Utils.PASSIVE_EVENTS = ['touchstart', 'touchend', 'touchmove', 'touchcancel'];\n Utils.OUTSIDE_ANGULAR_EVENTS = ['mouseover', 'mouseout', 'mouseenter', 'mouseleave'];\n Utils.PRINTABLE_CHARACTERS = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890!\"£$%^&*()_+-=[];\\'#,./\\\\|<>?:@~{}';\n Utils.NUMPAD_DEL_NUMLOCK_ON_KEY = 'Del';\n Utils.NUMPAD_DEL_NUMLOCK_ON_CHARCODE = 46;\n Utils.doOnceFlags = {};\n Utils.supports = {};\n Utils.isEventSupported = (function () {\n var tags = {\n select: 'input',\n change: 'input',\n submit: 'form',\n reset: 'form',\n error: 'img',\n load: 'img',\n abort: 'img'\n };\n var isEventSupported = function (eventName) {\n if (typeof Utils.supports[eventName] === 'boolean') {\n return Utils.supports[eventName];\n }\n var el = document.createElement(tags[eventName] || 'div');\n eventName = 'on' + eventName;\n var isSupported = (eventName in el);\n if (!isSupported) {\n el.setAttribute(eventName, 'return;');\n isSupported = typeof el[eventName] == 'function';\n }\n el = null;\n return Utils.supports[eventName] = isSupported;\n };\n return isEventSupported;\n })();\n Utils.areEqual = function (a, b) {\n return a.length === b.length && a.every(function (value, index) { return b[index] === value; });\n };\n Utils.keys = function (map) {\n var keys = [];\n map.forEach(function (_, key) { return keys.push(key); });\n return keys;\n };\n Utils.values = function (object) { return Object.keys(object).map(function (key) { return object[key]; }); };\n Utils.includes = function (array, value) { return array.indexOf(value) > -1; };\n Utils.compose = function () {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return function (arg) { return fns.reduce(function (composed, f) { return f(composed); }, arg); };\n };\n Utils.decToHex = function (number, bytes) {\n var hex = '';\n for (var i = 0; i < bytes; i++) {\n hex += String.fromCharCode(number & 0xff);\n number >>>= 8;\n }\n return hex;\n };\n /**\n * It encodes any string in UTF-8 format\n * taken from https://github.com/mathiasbynens/utf8.js\n * @param {string} s\n * @returns {string}\n */\n Utils.utf8_encode = function (s) {\n var stringFromCharCode = String.fromCharCode;\n function ucs2decode(string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n var value;\n var extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n }\n else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n }\n else {\n output.push(value);\n }\n }\n return output;\n }\n function checkScalarValue(codePoint) {\n if (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n throw Error('Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n ' is not a scalar value');\n }\n }\n function createByte(codePoint, shift) {\n return stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n }\n function encodeCodePoint(codePoint) {\n if ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n return stringFromCharCode(codePoint);\n }\n var symbol = '';\n if ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n symbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n }\n else if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n checkScalarValue(codePoint);\n symbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n symbol += createByte(codePoint, 6);\n }\n else if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n symbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n symbol += createByte(codePoint, 12);\n symbol += createByte(codePoint, 6);\n }\n symbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n return symbol;\n }\n var codePoints = ucs2decode(s);\n var length = codePoints.length;\n var index = -1;\n var codePoint;\n var byteString = '';\n while (++index < length) {\n codePoint = codePoints[index];\n byteString += encodeCodePoint(codePoint);\n }\n return byteString;\n };\n Utils.deepCloneObject = function (object) { return JSON.parse(JSON.stringify(object)); };\n Utils.getProperty = function (object, key) { return object[key]; };\n Utils.setProperty = function (object, key, value) { return object[key] = value; };\n Utils.iconNameClassMap = {\n columnGroupOpened: 'expanded',\n columnGroupClosed: 'contracted',\n columnSelectClosed: 'tree-closed',\n columnSelectOpen: 'tree-open',\n columnSelectIndeterminate: 'tree-indeterminate',\n columnMovePin: 'pin',\n columnMoveAdd: 'plus',\n columnMoveHide: 'eye-slash',\n columnMoveMove: 'arrows',\n columnMoveLeft: 'left',\n columnMoveRight: 'right',\n columnMoveGroup: 'group',\n columnMoveValue: 'aggregation',\n columnMovePivot: 'pivot',\n dropNotAllowed: 'not-allowed',\n groupContracted: 'contracted',\n groupExpanded: 'expanded',\n chart: 'chart',\n close: 'cross',\n cancel: 'cancel',\n check: 'tick',\n checkboxChecked: 'checkbox-checked',\n checkboxUnchecked: 'checkbox-unchecked',\n checkboxIndeterminate: 'checkbox-indeterminate',\n checkboxCheckedReadOnly: 'checkbox-checked-readonly',\n checkboxUncheckedReadOnly: 'checkbox-unchecked-readonly',\n checkboxIndeterminateReadOnly: 'checkbox-indeterminate-readonly',\n first: 'first',\n previous: 'previous',\n next: 'next',\n last: 'last',\n linked: 'linked',\n unlinked: 'unlinked',\n colorPicker: 'color-picker',\n radioButtonOn: 'radio-button-on',\n radioButtonOff: 'radio-button-off',\n groupLoading: 'loading',\n data: 'data',\n menu: 'menu',\n filter: 'filter',\n columns: 'columns',\n maximize: 'maximize',\n minimize: 'minimize',\n menuPin: 'pin',\n menuValue: 'aggregation',\n menuAddRowGroup: 'group',\n menuRemoveRowGroup: 'group',\n clipboardCopy: 'copy',\n clipboardCut: 'cut',\n clipboardPaste: 'paste',\n pivotPanel: 'pivot',\n rowGroupPanel: 'group',\n valuePanel: 'aggregation',\n columnDrag: 'grip',\n rowDrag: 'grip',\n save: 'save',\n smallLeft: 'small-left',\n smallRight: 'small-right',\n smallUp: 'small-up',\n smallDown: 'small-down',\n sortAscending: 'asc',\n sortDescending: 'desc',\n sortUnSort: 'none'\n };\n return Utils;\n}());\nexport { Utils };\nvar NumberSequence = /** @class */ (function () {\n function NumberSequence(initValue, step) {\n if (initValue === void 0) { initValue = 0; }\n if (step === void 0) { step = 1; }\n this.nextValue = initValue;\n this.step = step;\n }\n NumberSequence.prototype.next = function () {\n var valToReturn = this.nextValue;\n this.nextValue += this.step;\n return valToReturn;\n };\n NumberSequence.prototype.peek = function () {\n return this.nextValue;\n };\n NumberSequence.prototype.skip = function (count) {\n this.nextValue += count;\n };\n return NumberSequence;\n}());\nexport { NumberSequence };\nexport var _ = Utils;\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/**\n * A Util Class only used when debugging for printing time to console\n */\nvar Timer = /** @class */ (function () {\n function Timer() {\n this.timestamp = new Date().getTime();\n }\n Timer.prototype.print = function (msg) {\n var duration = (new Date().getTime()) - this.timestamp;\n console.info(msg + \" = \" + duration);\n this.timestamp = new Date().getTime();\n };\n return Timer;\n}());\nexport { Timer };\n","function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nimport React from 'react';\nimport { defaultTranslateOptions } from './localize';\n\n\nexport var getLocalizedElement = function getLocalizedElement(options) {\n var translation = options.translation,\n data = options.data,\n renderInnerHtml = options.renderInnerHtml;\n\n\n var translatedValueOrArray = templater(translation, data);\n\n // if result of templater is string, do the usual stuff\n if (typeof translatedValueOrArray === 'string') {\n return renderInnerHtml === true && hasHtmlTags(translatedValueOrArray) ? React.createElement('span', {\n dangerouslySetInnerHTML: { __html: translatedValueOrArray }\n }) : translatedValueOrArray;\n }\n\n // at this point we know we have react components;\n // check if there are HTMLTags in the translation (not allowed)\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = translatedValueOrArray[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var portion = _step.value;\n\n if (typeof portion === 'string' && hasHtmlTags(portion)) {\n warning('HTML tags in the translation string are not supported when passing React components as arguments to the translation.');\n return '';\n }\n }\n\n // return as Element\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return React.createElement.apply(React, ['span', null].concat(_toConsumableArray(translatedValueOrArray)));\n};\n\nexport var hasHtmlTags = function hasHtmlTags(value) {\n var pattern = /(&[^\\s]*;|<\\/?\\w+((\\s+\\w+(\\s*=\\s*(?:\".*?\"|'.*?'|[\\^'\">\\s]+))?)+\\s*|\\s*)\\/?>)/;\n return value.search(pattern) >= 0;\n};\n\n/**\n * @func templater\n * @desc A poor mans template parser\n * @param {string} strings The template string\n * @param {object} data The data that should be inserted in template\n * @return {string} The template string with the data merged in\n */\nexport var templater = function templater(strings) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!strings) return '';\n\n // ${**}\n // brackets to include it in the result of .split()\n var genericPlaceholderPattern = '(\\\\${\\\\s*[^\\\\s}]+\\\\s*})';\n\n // split: from 'Hey ${name}' -> ['Hey', '${name}']\n // filter: clean empty strings\n // map: replace ${prop} with data[prop]\n var splitStrings = strings.split(new RegExp(genericPlaceholderPattern, 'gmi')).filter(function (str) {\n return !!str;\n }).map(function (templatePortion) {\n var matched = void 0;\n for (var prop in data) {\n if (matched) break;\n var pattern = '\\\\${\\\\s*' + prop + '\\\\s*}';\n var regex = new RegExp(pattern, 'gmi');\n if (regex.test(templatePortion)) matched = data[prop];\n }\n if (typeof matched === 'undefined') return templatePortion;\n return matched;\n });\n\n // if there is a React element, return as array\n if (splitStrings.some(function (portion) {\n return React.isValidElement(portion);\n })) {\n return splitStrings;\n }\n\n // otherwise concatenate all portions into the translated value\n return splitStrings.reduce(function (translated, portion) {\n return translated + ('' + portion);\n }, '');\n};\n\nexport var getIndexForLanguageCode = function getIndexForLanguageCode(code, languages) {\n return languages.map(function (language) {\n return language.code;\n }).indexOf(code);\n};\n\nexport var objectValuesToString = function objectValuesToString(data) {\n return !Object.values ? Object.keys(data).map(function (key) {\n return data[key].toString();\n }).toString() : Object.values(data).toString();\n};\n\nexport var validateOptions = function validateOptions(options) {\n if (options.onMissingTranslation !== undefined && typeof options.onMissingTranslation !== 'function') {\n throw new Error('react-localize-redux: an invalid onMissingTranslation function was provided.');\n }\n\n if (options.renderToStaticMarkup !== false && typeof options.renderToStaticMarkup !== 'function') {\n throw new Error('\\n react-localize-redux: initialize option renderToStaticMarkup is invalid.\\n Please see https://ryandrewjohnson.github.io/react-localize-redux-docs/#initialize.\\n ');\n }\n\n return options;\n};\n\nexport var getTranslationsForLanguage = function getTranslationsForLanguage(language, languages, translations) {\n // no language! return no translations\n if (!language) {\n return {};\n }\n\n var languageCode = language.code;\n\n var languageIndex = getIndexForLanguageCode(languageCode, languages);\n var keys = Object.keys(translations);\n var totalKeys = keys.length;\n var translationsForLanguage = {};\n\n for (var i = 0; i < totalKeys; i++) {\n var key = keys[i];\n translationsForLanguage[key] = translations[key][languageIndex];\n }\n\n return translationsForLanguage;\n};\n\nexport var storeDidChange = function storeDidChange(store, onChange) {\n var currentState = void 0;\n\n function handleChange() {\n var nextState = store.getState();\n if (nextState !== currentState) {\n onChange(currentState);\n currentState = nextState;\n }\n }\n\n var unsubscribe = store.subscribe(handleChange);\n handleChange();\n return unsubscribe;\n};\n\nexport var getSingleToMultilanguageTranslation = function getSingleToMultilanguageTranslation(language, languageCodes, flattenedTranslations, existingTranslations) {\n var languageIndex = languageCodes.indexOf(language);\n var translations = languageIndex >= 0 ? flattenedTranslations : {};\n var keys = Object.keys(translations);\n var totalKeys = keys.length;\n var singleLanguageTranslations = {};\n\n var _loop = function _loop(i) {\n var key = keys[i];\n // loop through each language, and for languages that don't match languageIndex\n // keep existing translation data, and for languageIndex store new translation data\n var translationValues = languageCodes.map(function (code, index) {\n var existingValues = existingTranslations[key] || [];\n\n return index === languageIndex ? flattenedTranslations[key] : existingValues[index];\n });\n\n singleLanguageTranslations[key] = translationValues;\n };\n\n for (var i = 0; i < totalKeys; i++) {\n _loop(i);\n }\n\n return singleLanguageTranslations;\n};\n\nexport var get = function get(obj, path) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n var pathArr = path.split('.').filter(Boolean);\n return pathArr.reduce(function (ret, key) {\n return ret && ret[key] ? ret[key] : defaultValue;\n }, obj);\n};\n\n// Thanks react-redux for utility function\n// https://github.com/reactjs/react-redux/blob/master/src/utils/warning.js\nexport var warning = function warning(message) {\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {}\n};","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport * as React from 'react';\nimport { flatten } from 'flat';\nimport { createSelector, createSelectorCreator, defaultMemoize } from 'reselect';\nimport { getLocalizedElement, getIndexForLanguageCode, objectValuesToString, validateOptions, getTranslationsForLanguage, warning, getSingleToMultilanguageTranslation } from './utils';\n\n/**\n * TYPES\n */\n\n\n// This is to get around the whole default options issue with Flow\n// I tried using the $Diff approach, but with no luck so for now stuck with this terd.\n// Because sometimes you just want flow to shut up!\n\n\n/**\n * ACTIONS\n */\nexport var INITIALIZE = '@@localize/INITIALIZE';\nexport var ADD_TRANSLATION = '@@localize/ADD_TRANSLATION';\nexport var ADD_TRANSLATION_FOR_LANGUAGE = '@@localize/ADD_TRANSLATION_FOR_LANGUAGE';\nexport var SET_ACTIVE_LANGUAGE = '@@localize/SET_ACTIVE_LANGUAGE';\nexport var TRANSLATE = '@@localize/TRANSLATE';\n\n/**\n * REDUCERS\n */\nexport function languages() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var action = arguments[1];\n\n switch (action.type) {\n case INITIALIZE:\n var _options = action.payload.options || {};\n return action.payload.languages.map(function (language, index) {\n var isActive = function isActive(code) {\n return _options.defaultLanguage !== undefined ? code === _options.defaultLanguage : index === 0;\n };\n // check if it's using array of Language objects, or array of language codes\n return typeof language === 'string' ? { code: language, active: isActive(language) // language codes\n } : _extends({}, language, { active: isActive(language.code) }); // language objects\n });\n case SET_ACTIVE_LANGUAGE:\n return state.map(function (language) {\n return language.code === action.payload.languageCode ? _extends({}, language, { active: true }) : _extends({}, language, { active: false });\n });\n default:\n return state;\n }\n}\n\nexport function translations() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n var flattenedTranslations = void 0;\n var translationWithTransform = void 0;\n\n switch (action.type) {\n case INITIALIZE:\n if (!action.payload.translation) {\n return state;\n }\n\n flattenedTranslations = flatten(action.payload.translation, {\n safe: true\n });\n var _options2 = action.payload.options || {};\n var firstLanguage = typeof action.payload.languages[0] === 'string' ? action.payload.languages[0] : action.payload.languages[0].code;\n var _defaultLanguage = _options2.defaultLanguage || firstLanguage;\n var isMultiLanguageTranslation = Object.keys(flattenedTranslations).some(function (item) {\n return Array.isArray(flattenedTranslations[item]);\n });\n\n // add translation based on whether it is single vs multi language translation data\n var newTranslation = isMultiLanguageTranslation ? flattenedTranslations : getSingleToMultilanguageTranslation(_defaultLanguage, action.languageCodes, flattenedTranslations, state);\n\n return _extends({}, state, newTranslation);\n case ADD_TRANSLATION:\n translationWithTransform = action.payload.translationOptions && action.payload.translationOptions.translationTransform !== undefined ? action.payload.translationOptions.translationTransform(action.payload.translation || {}, action.languageCodes) : action.payload.translation;\n return _extends({}, state, flatten(translationWithTransform, { safe: true }));\n case ADD_TRANSLATION_FOR_LANGUAGE:\n flattenedTranslations = flatten(action.payload.translation, {\n safe: true\n });\n return _extends({}, state, getSingleToMultilanguageTranslation(action.payload.language, action.languageCodes, flattenedTranslations, state));\n default:\n return state;\n }\n}\n\nexport function options() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultTranslateOptions;\n var action = arguments[1];\n\n switch (action.type) {\n case INITIALIZE:\n var _options3 = action.payload.options || {};\n var _defaultLanguage2 = _options3.defaultLanguage || action.languageCodes[0];\n return _extends({}, state, validateOptions(_options3), { defaultLanguage: _defaultLanguage2 });\n default:\n return state;\n }\n}\n\nexport var defaultTranslateOptions = {\n renderToStaticMarkup: false,\n renderInnerHtml: false,\n ignoreTranslateChildren: false,\n defaultLanguage: '',\n onMissingTranslation: function onMissingTranslation(_ref) {\n var translationId = _ref.translationId,\n languageCode = _ref.languageCode;\n return 'Missing translationId: ${ translationId } for language: ${ languageCode }';\n }\n};\n\nvar initialState = {\n languages: [],\n translations: {},\n options: defaultTranslateOptions\n};\n\nexport var localizeReducer = function localizeReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments[1];\n\n // execute the languages reducer first as we need access to those values for other reducers\n var languagesState = languages(state.languages, action);\n var languageCodes = languagesState.map(function (language) {\n return language.code;\n });\n\n return {\n languages: languagesState,\n translations: translations(state.translations, _extends({}, action, {\n languageCodes: languageCodes\n })),\n options: options(state.options, _extends({}, action, { languageCodes: languageCodes }))\n };\n};\n\n/**\n * ACTION CREATORS\n */\nexport var initialize = function initialize(payload) {\n return {\n type: INITIALIZE,\n payload: payload\n };\n};\n\nexport var addTranslation = function addTranslation(translation, options) {\n return {\n type: ADD_TRANSLATION,\n payload: {\n translation: translation,\n translationOptions: options\n }\n };\n};\n\nexport var addTranslationForLanguage = function addTranslationForLanguage(translation, language) {\n return {\n type: ADD_TRANSLATION_FOR_LANGUAGE,\n payload: { translation: translation, language: language }\n };\n};\n\nexport var setActiveLanguage = function setActiveLanguage(languageCode) {\n return {\n type: SET_ACTIVE_LANGUAGE,\n payload: { languageCode: languageCode }\n };\n};\n\n/**\n * SELECTORS\n */\nexport var getTranslations = function getTranslations(state) {\n return state.translations;\n};\n\nexport var getLanguages = function getLanguages(state) {\n return state.languages;\n};\n\nexport var getOptions = function getOptions(state) {\n return state.options;\n};\n\nexport var getActiveLanguage = function getActiveLanguage(state) {\n var languages = getLanguages(state);\n return languages.filter(function (language) {\n return language.active === true;\n })[0];\n};\n\n/**\n * A custom equality checker that checker that compares an objects keys and values instead of === comparison\n * e.g. {name: 'Ted', sport: 'hockey'} would result in 'name,sport - Ted,hocker' which would be used for comparison\n *\n * NOTE: This works with activeLanguage, languages, and translations data types.\n * If a new data type is added to selector this would need to be updated to accomodate\n */\nexport var translationsEqualSelector = createSelectorCreator(defaultMemoize, function (prev, cur) {\n var prevKeys = (typeof prev === 'undefined' ? 'undefined' : _typeof(prev)) === 'object' ? Object.keys(prev).toString() : undefined;\n var curKeys = (typeof cur === 'undefined' ? 'undefined' : _typeof(cur)) === 'object' ? Object.keys(cur).toString() : undefined;\n\n var prevValues = (typeof prev === 'undefined' ? 'undefined' : _typeof(prev)) === 'object' ? objectValuesToString(prev) : undefined;\n var curValues = (typeof cur === 'undefined' ? 'undefined' : _typeof(cur)) === 'object' ? objectValuesToString(cur) : undefined;\n\n var prevCacheValue = prevKeys !== undefined && prevValues !== undefined ? prevKeys + ' - ' + prevValues : prev;\n\n var curCacheValue = curKeys !== undefined && curValues !== undefined ? curKeys + ' - ' + curValues : cur;\n\n return prevCacheValue === curCacheValue;\n});\n\nexport var getTranslationsForActiveLanguage = translationsEqualSelector(getActiveLanguage, getLanguages, getTranslations, getTranslationsForLanguage);\n\nexport var getTranslationsForSpecificLanguage = translationsEqualSelector(getLanguages, getTranslations, function (languages, translations) {\n return defaultMemoize(function (languageCode) {\n return getTranslationsForLanguage({ code: languageCode, active: false }, languages, translations);\n });\n});\n\nvar getTranslate = createSelector(getTranslationsForActiveLanguage, getTranslationsForSpecificLanguage, getActiveLanguage, getOptions, function (translationsForActiveLanguage, getTranslationsForLanguage, activeLanguage, initializeOptions) {\n return function (value) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var translateOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var defaultLanguage = initializeOptions.defaultLanguage,\n defaultOptions = _objectWithoutProperties(initializeOptions, ['defaultLanguage']);\n\n var overrideLanguage = translateOptions.language;\n\n var translations = overrideLanguage !== undefined ? getTranslationsForLanguage(overrideLanguage) : translationsForActiveLanguage;\n\n var defaultTranslations = activeLanguage && activeLanguage.code === defaultLanguage ? translationsForActiveLanguage : getTranslationsForLanguage(defaultLanguage);\n\n var languageCode = overrideLanguage !== undefined ? overrideLanguage : activeLanguage && activeLanguage.code;\n\n var mergedOptions = _extends({}, defaultOptions, translateOptions);\n\n var getTranslation = function getTranslation(translationId) {\n var hasValidTranslation = translations[translationId] !== undefined;\n var hasValidDefaultTranslation = defaultTranslations[translationId] !== undefined;\n\n var defaultTranslation = hasValidDefaultTranslation ? getLocalizedElement({\n translation: defaultTranslations[translationId],\n data: data,\n renderInnerHtml: mergedOptions.renderInnerHtml\n }) : \"No default translation found! Ensure you've added translations for your default langauge.\";\n\n // if translation is not valid then generate the on missing translation message in it's place\n var translation = hasValidTranslation ? translations[translationId] : mergedOptions.onMissingTranslation({\n translationId: translationId,\n languageCode: languageCode,\n defaultTranslation: defaultTranslation\n });\n\n // if translations are missing than ovrride data to include translationId, languageCode\n // as these will be needed to render missing translations message\n var translationData = hasValidTranslation ? data : { translationId: translationId, languageCode: languageCode };\n\n return getLocalizedElement({\n translation: translation,\n data: translationData,\n languageCode: languageCode,\n renderInnerHtml: mergedOptions.renderInnerHtml\n });\n };\n\n if (typeof value === 'string') {\n return getTranslation(value);\n } else if (Array.isArray(value)) {\n return value.reduce(function (prev, cur) {\n return _extends({}, prev, _defineProperty({}, cur, getTranslation(cur)));\n }, {});\n } else {\n throw new Error('react-localize-redux: Invalid key passed to getTranslate.');\n }\n };\n});\nexport { getTranslate };","import React from 'react';\nimport createReactContext from 'create-react-context';\nimport { createSelector } from 'reselect';\nimport { defaultTranslateOptions } from './localize';\nimport { localizeReducer, getTranslate, initialize, addTranslation, addTranslationForLanguage, setActiveLanguage, getLanguages, getActiveLanguage, getOptions } from './localize';\n\nvar dispatchInitialize = function dispatchInitialize(dispatch) {\n return function (payload) {\n return dispatch(initialize(payload));\n };\n};\n\nvar dispatchAddTranslation = function dispatchAddTranslation(dispatch) {\n return function (translation) {\n return dispatch(addTranslation(translation));\n };\n};\n\nvar dispatchAddTranslationForLanguage = function dispatchAddTranslationForLanguage(dispatch) {\n return function (translation, language) {\n return dispatch(addTranslationForLanguage(translation, language));\n };\n};\n\nvar dispatchSetActiveLanguage = function dispatchSetActiveLanguage(dispatch) {\n return function (languageCode) {\n return dispatch(setActiveLanguage(languageCode));\n };\n};\n\nexport var getContextPropsFromState = function getContextPropsFromState(dispatch) {\n return createSelector(getTranslate, getLanguages, getActiveLanguage, getOptions, function (translate, languages, activeLanguage, options) {\n var defaultLanguage = options.defaultLanguage || languages[0] && languages[0].code;\n var renderToStaticMarkup = options.renderToStaticMarkup;\n var ignoreTranslateChildren = options.ignoreTranslateChildren !== undefined ? options.ignoreTranslateChildren : defaultTranslateOptions.ignoreTranslateChildren;\n\n return {\n translate: translate,\n languages: languages,\n defaultLanguage: defaultLanguage,\n activeLanguage: activeLanguage,\n initialize: dispatchInitialize(dispatch),\n addTranslation: dispatchAddTranslation(dispatch),\n addTranslationForLanguage: dispatchAddTranslationForLanguage(dispatch),\n setActiveLanguage: dispatchSetActiveLanguage(dispatch),\n renderToStaticMarkup: renderToStaticMarkup,\n ignoreTranslateChildren: ignoreTranslateChildren\n };\n });\n};\n\nvar defaultLocalizeState = localizeReducer(undefined, {});\nvar defaultContext = getContextPropsFromState(function () {})(defaultLocalizeState);\n\nexport var LocalizeContext = createReactContext(defaultContext);","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component } from 'react';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\nimport { LocalizeContext } from './LocalizeContext';\n\nexport function withLocalize(WrappedComponent) {\n var LocalizedComponent = function (_Component) {\n _inherits(LocalizedComponent, _Component);\n\n function LocalizedComponent() {\n _classCallCheck(this, LocalizedComponent);\n\n return _possibleConstructorReturn(this, (LocalizedComponent.__proto__ || Object.getPrototypeOf(LocalizedComponent)).apply(this, arguments));\n }\n\n _createClass(LocalizedComponent, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n return React.createElement(\n LocalizeContext.Consumer,\n null,\n function (context) {\n return React.createElement(WrappedComponent, _extends({}, context, _this2.props));\n }\n );\n }\n }]);\n\n return LocalizedComponent;\n }(Component);\n\n hoistNonReactStatic(LocalizedComponent, WrappedComponent);\n return LocalizedComponent;\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { getTranslate, addTranslationForLanguage, getLanguages, getOptions, getActiveLanguage, getTranslationsForActiveLanguage } from './localize';\nimport { get, storeDidChange } from './utils';\nimport { LocalizeContext } from './LocalizeContext';\nimport { withLocalize } from './withLocalize';\n\nvar WrappedTranslate = function (_React$Component) {\n _inherits(WrappedTranslate, _React$Component);\n\n function WrappedTranslate() {\n _classCallCheck(this, WrappedTranslate);\n\n return _possibleConstructorReturn(this, (WrappedTranslate.__proto__ || Object.getPrototypeOf(WrappedTranslate)).apply(this, arguments));\n }\n\n _createClass(WrappedTranslate, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.addDefaultTranslation();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n var idChanged = this.props.id && prevProps.id !== this.props.id;\n\n var noDefaultLanguage = !get(prevProps, 'context.defaultLanguage') && !get(prevProps, 'options.language');\n var incomingLanguage = get(this.props, 'context.defaultLanguage') || get(this.props, 'options.language');\n\n var defaultLanguageSet = noDefaultLanguage && incomingLanguage;\n\n if (idChanged || defaultLanguageSet) {\n this.addDefaultTranslation();\n }\n }\n }, {\n key: 'addDefaultTranslation',\n value: function addDefaultTranslation() {\n var _props = this.props,\n context = _props.context,\n id = _props.id,\n children = _props.children,\n _props$options = _props.options,\n options = _props$options === undefined ? {} : _props$options;\n\n var defaultLanguage = options.language || context.defaultLanguage;\n var fallbackRenderToStaticMarkup = function fallbackRenderToStaticMarkup(value) {\n return value;\n };\n var renderToStaticMarkup = context.renderToStaticMarkup || fallbackRenderToStaticMarkup;\n var hasId = id !== undefined;\n var hasDefaultLanguage = defaultLanguage !== undefined;\n var hasChildren = children !== undefined;\n var hasFunctionAsChild = typeof children === 'function';\n\n var ignoreTranslateChildren = options.ignoreTranslateChildren !== undefined ? options.ignoreTranslateChildren : context.ignoreTranslateChildren;\n\n var isValidDefaultTranslation = hasChildren && hasId && hasDefaultLanguage;\n\n var shouldAddDefaultTranslation = isValidDefaultTranslation && !hasFunctionAsChild && !ignoreTranslateChildren;\n\n if (shouldAddDefaultTranslation) {\n var translation = renderToStaticMarkup(children);\n context.addTranslationForLanguage && context.addTranslationForLanguage(_defineProperty({}, id, translation), defaultLanguage);\n }\n }\n }, {\n key: 'renderChildren',\n value: function renderChildren() {\n var _props2 = this.props,\n context = _props2.context,\n _props2$id = _props2.id,\n id = _props2$id === undefined ? '' : _props2$id,\n options = _props2.options,\n data = _props2.data;\n\n\n return typeof this.props.children === 'function' ? this.props.children(context) : context.translate && context.translate(id, data, options);\n }\n }, {\n key: 'render',\n value: function render() {\n return this.renderChildren();\n }\n }]);\n\n return WrappedTranslate;\n}(React.Component);\n\nexport var Translate = function Translate(props) {\n return React.createElement(\n LocalizeContext.Consumer,\n null,\n function (context) {\n return React.createElement(WrappedTranslate, _extends({}, props, { context: context }));\n }\n );\n};","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component } from 'react';\nimport { localizeReducer, getActiveLanguage, getOptions, getTranslationsForActiveLanguage, initialize as initializeAC, INITIALIZE, InitializePayload } from './localize';\nimport { LocalizeContext, getContextPropsFromState } from './LocalizeContext';\nimport { storeDidChange } from './utils';\n\nexport var LocalizeProvider = function (_Component) {\n _inherits(LocalizeProvider, _Component);\n\n function LocalizeProvider(props) {\n _classCallCheck(this, LocalizeProvider);\n\n var _this = _possibleConstructorReturn(this, (LocalizeProvider.__proto__ || Object.getPrototypeOf(LocalizeProvider)).call(this, props));\n\n var dispatch = _this.props.store ? _this.props.store.dispatch : _this.dispatch.bind(_this);\n\n _this.getContextPropsSelector = getContextPropsFromState(dispatch);\n\n var initialState = _this.props.initialize !== undefined ? localizeReducer(undefined, {\n type: INITIALIZE,\n payload: _this.props.initialize\n }) : localizeReducer(undefined, {});\n\n _this.state = {\n localize: initialState\n };\n return _this;\n }\n\n _createClass(LocalizeProvider, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.initExternalStore();\n this.subscribeToExternalStore();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unsubscribeFromStore && this.unsubscribeFromStore();\n }\n }, {\n key: 'initExternalStore',\n value: function initExternalStore() {\n var _props = this.props,\n store = _props.store,\n initialize = _props.initialize;\n\n if (store && initialize) {\n store.dispatch(initializeAC(initialize));\n }\n }\n }, {\n key: 'subscribeToExternalStore',\n value: function subscribeToExternalStore() {\n var store = this.props.store;\n\n if (store) {\n this.unsubscribeFromStore = storeDidChange(store, this.onStateDidChange.bind(this));\n }\n }\n }, {\n key: 'onStateDidChange',\n value: function onStateDidChange(prevState) {\n if (!this.props.store) {\n return;\n }\n var getState = this.props.getState || function (state) {\n return state.localize;\n };\n\n var prevLocalizeState = prevState && getState(prevState);\n var curLocalizeState = getState(this.props.store.getState());\n\n var prevActiveLanguage = prevState && getActiveLanguage(prevLocalizeState);\n var curActiveLanguage = getActiveLanguage(curLocalizeState);\n\n var prevOptions = prevState && getOptions(prevLocalizeState);\n var curOptions = getOptions(curLocalizeState);\n\n var prevTranslations = prevState && getTranslationsForActiveLanguage(prevLocalizeState);\n var curTranslations = getTranslationsForActiveLanguage(curLocalizeState);\n\n var hasActiveLangaugeChanged = (prevActiveLanguage && prevActiveLanguage.code) !== (curActiveLanguage && curActiveLanguage.code);\n var hasOptionsChanged = prevOptions !== curOptions;\n var hasTranslationsChanged = prevTranslations !== curTranslations;\n\n if (hasActiveLangaugeChanged || hasOptionsChanged || hasTranslationsChanged) {\n this.setState({ localize: curLocalizeState });\n }\n }\n }, {\n key: 'dispatch',\n value: function dispatch(action) {\n this.setState(function (prevState) {\n return {\n localize: localizeReducer(prevState.localize, action)\n };\n });\n }\n }, {\n key: 'render',\n value: function render() {\n this.contextProps = this.getContextPropsSelector(this.state.localize);\n\n return React.createElement(\n LocalizeContext.Provider,\n { value: this.contextProps },\n this.props.children\n );\n }\n }]);\n\n return LocalizeProvider;\n}(Component);","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { _ } from \"../utils\";\nvar Context = /** @class */ (function () {\n function Context(params, logger) {\n this.beanWrappers = {};\n this.componentsMappedByName = {};\n this.destroyed = false;\n if (!params || !params.beanClasses) {\n return;\n }\n this.contextParams = params;\n this.logger = logger;\n this.logger.log(\">> creating ag-Application Context\");\n this.setupComponents();\n this.createBeans();\n var beanInstances = this.getBeanInstances();\n this.wireBeans(beanInstances);\n this.logger.log(\">> ag-Application Context ready - component is alive\");\n }\n Context.prototype.getBeanInstances = function () {\n return _.values(this.beanWrappers).map(function (beanEntry) { return beanEntry.beanInstance; });\n };\n Context.prototype.setupComponents = function () {\n var _this = this;\n if (this.contextParams.components) {\n this.contextParams.components.forEach(function (componentMeta) { return _this.addComponent(componentMeta); });\n }\n };\n Context.prototype.addComponent = function (componentMeta) {\n // get name of the class as a string\n // let className = _.getNameOfClass(ComponentClass);\n // insert a dash after every capital letter\n // let classEscaped = className.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n var classEscaped = componentMeta.componentName.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n // put all to upper case\n var classUpperCase = classEscaped.toUpperCase();\n // finally store\n this.componentsMappedByName[classUpperCase] = componentMeta.componentClass;\n };\n Context.prototype.createComponentFromElement = function (element, afterPreCreateCallback) {\n var key = element.nodeName;\n return this.createComponent(key, afterPreCreateCallback);\n };\n Context.prototype.createComponent = function (key, afterPreCreateCallback) {\n if (this.componentsMappedByName && this.componentsMappedByName[key]) {\n var newComponent = new this.componentsMappedByName[key]();\n this.wireBean(newComponent, afterPreCreateCallback);\n return newComponent;\n }\n return null;\n };\n Context.prototype.wireBean = function (bean, afterPreCreateCallback) {\n if (!bean) {\n throw Error(\"Can't wire to bean since it is null\");\n }\n this.wireBeans([bean], afterPreCreateCallback);\n };\n Context.prototype.wireBeans = function (beanInstances, afterPreCreateCallback) {\n this.autoWireBeans(beanInstances);\n this.methodWireBeans(beanInstances);\n this.callLifeCycleMethods(beanInstances, 'preConstructMethods');\n // the callback sets the attributes, so the component has access to attributes\n // before postConstruct methods in the component are executed\n if (_.exists(afterPreCreateCallback)) {\n beanInstances.forEach(afterPreCreateCallback);\n }\n this.callLifeCycleMethods(beanInstances, 'postConstructMethods');\n };\n Context.prototype.createBeans = function () {\n var _this = this;\n // register all normal beans\n this.contextParams.beanClasses.forEach(this.createBeanWrapper.bind(this));\n // register override beans, these will overwrite beans above of same name\n // instantiate all beans - overridden beans will be left out\n _.iterateObject(this.beanWrappers, function (key, beanEntry) {\n var constructorParamsMeta;\n if (beanEntry.bean.__agBeanMetaData && beanEntry.bean.__agBeanMetaData.autowireMethods && beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor) {\n constructorParamsMeta = beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor;\n }\n var constructorParams = _this.getBeansForParameters(constructorParamsMeta, beanEntry.bean.name);\n var newInstance = applyToConstructor(beanEntry.bean, constructorParams);\n beanEntry.beanInstance = newInstance;\n });\n var createdBeanNames = Object.keys(this.beanWrappers).join(', ');\n this.logger.log(\"created beans: \" + createdBeanNames);\n };\n // tslint:disable-next-line\n Context.prototype.createBeanWrapper = function (Bean) {\n var metaData = Bean.__agBeanMetaData;\n if (!metaData) {\n var beanName = void 0;\n if (Bean.prototype.constructor) {\n beanName = Bean.prototype.constructor.name;\n }\n else {\n beanName = \"\" + Bean;\n }\n console.error(\"context item \" + beanName + \" is not a bean\");\n return;\n }\n var beanEntry = {\n bean: Bean,\n beanInstance: null,\n beanName: metaData.beanName\n };\n /*\n if (this.beanWrappers[metaData.beanName]) {\n this.logger.log(`overriding bean ${metaData.beanName}`);\n console.log('old', this.beanWrappers[metaData.beanName]);\n console.log('new', beanEntry);\n }\n */\n this.beanWrappers[metaData.beanName] = beanEntry;\n };\n Context.prototype.autoWireBeans = function (beanInstances) {\n var _this = this;\n beanInstances.forEach(function (beanInstance) {\n _this.forEachMetaDataInHierarchy(beanInstance, function (metaData, beanName) {\n var attributes = metaData.agClassAttributes;\n if (!attributes) {\n return;\n }\n attributes.forEach(function (attribute) {\n var otherBean = _this.lookupBeanInstance(beanName, attribute.beanName, attribute.optional);\n beanInstance[attribute.attributeName] = otherBean;\n });\n });\n });\n };\n Context.prototype.methodWireBeans = function (beanInstances) {\n var _this = this;\n beanInstances.forEach(function (beanInstance) {\n _this.forEachMetaDataInHierarchy(beanInstance, function (metaData, beanName) {\n _.iterateObject(metaData.autowireMethods, function (methodName, wireParams) {\n // skip constructor, as this is dealt with elsewhere\n if (methodName === \"agConstructor\") {\n return;\n }\n var initParams = _this.getBeansForParameters(wireParams, beanName);\n beanInstance[methodName].apply(beanInstance, initParams);\n });\n });\n });\n };\n Context.prototype.forEachMetaDataInHierarchy = function (beanInstance, callback) {\n var prototype = Object.getPrototypeOf(beanInstance);\n while (prototype != null) {\n var constructor = prototype.constructor;\n if (constructor.hasOwnProperty('__agBeanMetaData')) {\n var metaData = constructor.__agBeanMetaData;\n var beanName = this.getBeanName(constructor);\n callback(metaData, beanName);\n }\n prototype = Object.getPrototypeOf(prototype);\n }\n };\n Context.prototype.getBeanName = function (constructor) {\n if (constructor.__agBeanMetaData && constructor.__agBeanMetaData.beanName) {\n return constructor.__agBeanMetaData.beanName;\n }\n var constructorString = constructor.toString();\n var beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n return beanName;\n };\n Context.prototype.getBeansForParameters = function (parameters, beanName) {\n var _this = this;\n var beansList = [];\n if (parameters) {\n _.iterateObject(parameters, function (paramIndex, otherBeanName) {\n var otherBean = _this.lookupBeanInstance(beanName, otherBeanName);\n beansList[Number(paramIndex)] = otherBean;\n });\n }\n return beansList;\n };\n Context.prototype.lookupBeanInstance = function (wiringBean, beanName, optional) {\n if (optional === void 0) { optional = false; }\n if (beanName === \"context\") {\n return this;\n }\n else if (this.contextParams.providedBeanInstances && this.contextParams.providedBeanInstances.hasOwnProperty(beanName)) {\n return this.contextParams.providedBeanInstances[beanName];\n }\n else {\n var beanEntry = this.beanWrappers[beanName];\n if (beanEntry) {\n return beanEntry.beanInstance;\n }\n if (!optional) {\n console.error(\"ag-Grid: unable to find bean reference \" + beanName + \" while initialising \" + wiringBean);\n }\n return null;\n }\n };\n Context.prototype.callLifeCycleMethods = function (beanInstances, lifeCycleMethod) {\n var _this = this;\n beanInstances.forEach(function (beanInstance) {\n _this.forEachMetaDataInHierarchy(beanInstance, function (metaData) {\n var methods = metaData[lifeCycleMethod];\n if (!methods) {\n return;\n }\n methods.forEach(function (methodName) { return beanInstance[methodName](); });\n });\n });\n };\n Context.prototype.getBean = function (name) {\n return this.lookupBeanInstance(\"getBean\", name, true);\n };\n Context.prototype.destroy = function () {\n // should only be able to destroy once\n if (this.destroyed) {\n return;\n }\n this.logger.log(\">> Shutting down ag-Application Context\");\n var beanInstances = this.getBeanInstances();\n this.callLifeCycleMethods(beanInstances, 'preDestroyMethods');\n this.contextParams.providedBeanInstances = null;\n this.destroyed = true;\n this.logger.log(\">> ag-Application Context shut down - component is dead\");\n };\n return Context;\n}());\nexport { Context };\n// taken from: http://stackoverflow.com/questions/3362471/how-can-i-call-a-javascript-constructor-using-call-or-apply\n// allows calling 'apply' on a constructor\nfunction applyToConstructor(constructor, argArray) {\n var args = [null].concat(argArray);\n var factoryFunction = constructor.bind.apply(constructor, args);\n return new factoryFunction();\n}\nexport function PreConstruct(target, methodName, descriptor) {\n var props = getOrCreateProps(target.constructor);\n if (!props.postConstructMethods) {\n props.preConstructMethods = [];\n }\n props.preConstructMethods.push(methodName);\n}\nexport function PostConstruct(target, methodName, descriptor) {\n var props = getOrCreateProps(target.constructor);\n if (!props.postConstructMethods) {\n props.postConstructMethods = [];\n }\n props.postConstructMethods.push(methodName);\n}\nexport function PreDestroy(target, methodName, descriptor) {\n var props = getOrCreateProps(target.constructor);\n if (!props.preDestroyMethods) {\n props.preDestroyMethods = [];\n }\n props.preDestroyMethods.push(methodName);\n}\nexport function Bean(beanName) {\n return function (classConstructor) {\n var props = getOrCreateProps(classConstructor);\n props.beanName = beanName;\n };\n}\nexport function Autowired(name) {\n return function (target, propertyKey, descriptor) {\n autowiredFunc(target, name, false, target, propertyKey, null);\n };\n}\nexport function Optional(name) {\n return function (target, propertyKey, descriptor) {\n autowiredFunc(target, name, true, target, propertyKey, null);\n };\n}\nfunction autowiredFunc(target, name, optional, classPrototype, methodOrAttributeName, index) {\n if (name === null) {\n console.error(\"ag-Grid: Autowired name should not be null\");\n return;\n }\n if (typeof index === \"number\") {\n console.error(\"ag-Grid: Autowired should be on an attribute\");\n return;\n }\n // it's an attribute on the class\n var props = getOrCreateProps(target.constructor);\n if (!props.agClassAttributes) {\n props.agClassAttributes = [];\n }\n props.agClassAttributes.push({\n attributeName: methodOrAttributeName,\n beanName: name,\n optional: optional\n });\n}\nexport function Qualifier(name) {\n return function (classPrototype, methodOrAttributeName, index) {\n var constructor = typeof classPrototype == \"function\" ? classPrototype : classPrototype.constructor;\n var props;\n if (typeof index === \"number\") {\n // it's a parameter on a method\n var methodName = void 0;\n if (methodOrAttributeName) {\n props = getOrCreateProps(constructor);\n methodName = methodOrAttributeName;\n }\n else {\n props = getOrCreateProps(constructor);\n methodName = \"agConstructor\";\n }\n if (!props.autowireMethods) {\n props.autowireMethods = {};\n }\n if (!props.autowireMethods[methodName]) {\n props.autowireMethods[methodName] = {};\n }\n props.autowireMethods[methodName][index] = name;\n }\n };\n}\nfunction getOrCreateProps(target) {\n if (!target.hasOwnProperty(\"__agBeanMetaData\")) {\n target.__agBeanMetaData = {};\n }\n return target.__agBeanMetaData;\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar Constants = /** @class */ (function () {\n function Constants() {\n }\n Constants.STEP_EVERYTHING = 0;\n Constants.STEP_FILTER = 1;\n Constants.STEP_SORT = 2;\n Constants.STEP_MAP = 3;\n Constants.STEP_AGGREGATE = 4;\n Constants.STEP_PIVOT = 5;\n Constants.ROW_BUFFER_SIZE = 10;\n Constants.LAYOUT_INTERVAL = 500;\n Constants.BATCH_WAIT_MILLIS = 50;\n Constants.EXPORT_TYPE_DRAG_COPY = 'dragCopy';\n Constants.EXPORT_TYPE_CLIPBOARD = 'clipboard';\n Constants.EXPORT_TYPE_EXCEL = 'excel';\n Constants.EXPORT_TYPE_CSV = 'csv';\n Constants.KEY_BACKSPACE = 8;\n Constants.KEY_TAB = 9;\n Constants.KEY_NEW_LINE = 10;\n Constants.KEY_ENTER = 13;\n Constants.KEY_SHIFT = 16;\n Constants.KEY_ESCAPE = 27;\n Constants.KEY_SPACE = 32;\n Constants.KEY_LEFT = 37;\n Constants.KEY_UP = 38;\n Constants.KEY_RIGHT = 39;\n Constants.KEY_DOWN = 40;\n Constants.KEY_DELETE = 46;\n Constants.KEY_A = 65;\n Constants.KEY_C = 67;\n Constants.KEY_V = 86;\n Constants.KEY_D = 68;\n Constants.KEY_F2 = 113;\n Constants.KEY_PAGE_UP = 33;\n Constants.KEY_PAGE_DOWN = 34;\n Constants.KEY_PAGE_HOME = 36;\n Constants.KEY_PAGE_END = 35;\n Constants.ROW_MODEL_TYPE_INFINITE = 'infinite';\n Constants.ROW_MODEL_TYPE_VIEWPORT = 'viewport';\n Constants.ROW_MODEL_TYPE_CLIENT_SIDE = 'clientSide';\n Constants.ROW_MODEL_TYPE_SERVER_SIDE = 'serverSide';\n Constants.DEPRECATED_ROW_MODEL_TYPE_NORMAL = 'normal';\n Constants.ALWAYS = 'always';\n Constants.ONLY_WHEN_GROUPING = 'onlyWhenGrouping';\n Constants.PINNED_TOP = 'top';\n Constants.PINNED_BOTTOM = 'bottom';\n Constants.DOM_LAYOUT_NORMAL = 'normal';\n Constants.DOM_LAYOUT_PRINT = 'print';\n Constants.DOM_LAYOUT_AUTO_HEIGHT = 'autoHeight';\n Constants.GROUP_AUTO_COLUMN_ID = 'ag-Grid-AutoColumn';\n Constants.SOURCE_PASTE = 'paste';\n Constants.PINNED_RIGHT = 'right';\n Constants.PINNED_LEFT = 'left';\n Constants.SORT_ASC = 'asc';\n Constants.SORT_DESC = 'desc';\n return Constants;\n}());\nexport { Constants };\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","function toVal(mix) {\n\tvar k, y, str='';\n\tif (mix) {\n\t\tif (typeof mix === 'object') {\n\t\t\tif (!!mix.push) {\n\t\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\t\tif (mix[k] && (y = toVal(mix[k]))) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (k in mix) {\n\t\t\t\t\tif (mix[k] && (y = toVal(k))) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (typeof mix !== 'boolean' && !mix.call) {\n\t\t\tstr && (str += ' ');\n\t\t\tstr += mix;\n\t\t}\n\t}\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (x = toVal(arguments[i++])) {\n\t\t\tstr && (str += ' ');\n\t\t\tstr += x\n\t\t}\n\t}\n\treturn str;\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","var parser = require('graphql/language/parser');\n\nvar parse = parser.parse;\n\n// Strip insignificant whitespace\n// Note that this could do a lot more, such as reorder fields etc.\nfunction normalize(string) {\n return string.replace(/[\\s,]+/g, ' ').trim();\n}\n\n// A map docString -> graphql document\nvar docCache = {};\n\n// A map fragmentName -> [normalized source]\nvar fragmentSourceMap = {};\n\nfunction cacheKeyFromLoc(loc) {\n return normalize(loc.source.body.substring(loc.start, loc.end));\n}\n\n// For testing.\nfunction resetCaches() {\n docCache = {};\n fragmentSourceMap = {};\n}\n\n// Take a unstripped parsed document (query/mutation or even fragment), and\n// check all fragment definitions, checking for name->source uniqueness.\n// We also want to make sure only unique fragments exist in the document.\nvar printFragmentWarnings = true;\nfunction processFragments(ast) {\n var astFragmentMap = {};\n var definitions = [];\n\n for (var i = 0; i < ast.definitions.length; i++) {\n var fragmentDefinition = ast.definitions[i];\n\n if (fragmentDefinition.kind === 'FragmentDefinition') {\n var fragmentName = fragmentDefinition.name.value;\n var sourceKey = cacheKeyFromLoc(fragmentDefinition.loc);\n\n // We know something about this fragment\n if (fragmentSourceMap.hasOwnProperty(fragmentName) && !fragmentSourceMap[fragmentName][sourceKey]) {\n\n // this is a problem because the app developer is trying to register another fragment with\n // the same name as one previously registered. So, we tell them about it.\n if (printFragmentWarnings) {\n console.warn(\"Warning: fragment with name \" + fragmentName + \" already exists.\\n\"\n + \"graphql-tag enforces all fragment names across your application to be unique; read more about\\n\"\n + \"this in the docs: http://dev.apollodata.com/core/fragments.html#unique-names\");\n }\n\n fragmentSourceMap[fragmentName][sourceKey] = true;\n\n } else if (!fragmentSourceMap.hasOwnProperty(fragmentName)) {\n fragmentSourceMap[fragmentName] = {};\n fragmentSourceMap[fragmentName][sourceKey] = true;\n }\n\n if (!astFragmentMap[sourceKey]) {\n astFragmentMap[sourceKey] = true;\n definitions.push(fragmentDefinition);\n }\n } else {\n definitions.push(fragmentDefinition);\n }\n }\n\n ast.definitions = definitions;\n return ast;\n}\n\nfunction disableFragmentWarnings() {\n printFragmentWarnings = false;\n}\n\nfunction stripLoc(doc, removeLocAtThisLevel) {\n var docType = Object.prototype.toString.call(doc);\n\n if (docType === '[object Array]') {\n return doc.map(function (d) {\n return stripLoc(d, removeLocAtThisLevel);\n });\n }\n\n if (docType !== '[object Object]') {\n throw new Error('Unexpected input.');\n }\n\n // We don't want to remove the root loc field so we can use it\n // for fragment substitution (see below)\n if (removeLocAtThisLevel && doc.loc) {\n delete doc.loc;\n }\n\n // https://github.com/apollographql/graphql-tag/issues/40\n if (doc.loc) {\n delete doc.loc.startToken;\n delete doc.loc.endToken;\n }\n\n var keys = Object.keys(doc);\n var key;\n var value;\n var valueType;\n\n for (key in keys) {\n if (keys.hasOwnProperty(key)) {\n value = doc[keys[key]];\n valueType = Object.prototype.toString.call(value);\n\n if (valueType === '[object Object]' || valueType === '[object Array]') {\n doc[keys[key]] = stripLoc(value, true);\n }\n }\n }\n\n return doc;\n}\n\nvar experimentalFragmentVariables = false;\nfunction parseDocument(doc) {\n var cacheKey = normalize(doc);\n\n if (docCache[cacheKey]) {\n return docCache[cacheKey];\n }\n\n var parsed = parse(doc, { experimentalFragmentVariables: experimentalFragmentVariables });\n if (!parsed || parsed.kind !== 'Document') {\n throw new Error('Not a valid GraphQL document.');\n }\n\n // check that all \"new\" fragments inside the documents are consistent with\n // existing fragments of the same name\n parsed = processFragments(parsed);\n parsed = stripLoc(parsed, false);\n docCache[cacheKey] = parsed;\n\n return parsed;\n}\n\nfunction enableExperimentalFragmentVariables() {\n experimentalFragmentVariables = true;\n}\n\nfunction disableExperimentalFragmentVariables() {\n experimentalFragmentVariables = false;\n}\n\n// XXX This should eventually disallow arbitrary string interpolation, like Relay does\nfunction gql(/* arguments */) {\n var args = Array.prototype.slice.call(arguments);\n\n var literals = args[0];\n\n // We always get literals[0] and then matching post literals for each arg given\n var result = (typeof(literals) === \"string\") ? literals : literals[0];\n\n for (var i = 1; i < args.length; i++) {\n if (args[i] && args[i].kind && args[i].kind === 'Document') {\n result += args[i].loc.source.body;\n } else {\n result += args[i];\n }\n\n result += literals[i];\n }\n\n return parseDocument(result);\n}\n\n// Support typescript, which isn't as nice as Babel about default exports\ngql.default = gql;\ngql.resetCaches = resetCaches;\ngql.disableFragmentWarnings = disableFragmentWarnings;\ngql.enableExperimentalFragmentVariables = enableExperimentalFragmentVariables;\ngql.disableExperimentalFragmentVariables = disableExperimentalFragmentVariables;\n\nmodule.exports = gql;\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport { Events } from './eventKeys';\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport function QuerySelector(selector) {\n return querySelectorFunc.bind(this, selector);\n}\nexport function RefSelector(ref) {\n return querySelectorFunc.bind(this, \"[ref=\" + ref + \"]\");\n}\nfunction querySelectorFunc(selector, classPrototype, methodOrAttributeName, index) {\n if (selector === null) {\n console.error(\"ag-Grid: QuerySelector selector should not be null\");\n return;\n }\n if (typeof index === \"number\") {\n console.error(\"ag-Grid: QuerySelector should be on an attribute\");\n return;\n }\n addToObjectProps(classPrototype, 'querySelectors', {\n attributeName: methodOrAttributeName,\n querySelector: selector\n });\n}\n// think we should take this out, put property bindings on the\nexport function Listener(eventName) {\n return listenerFunc.bind(this, eventName);\n}\nfunction listenerFunc(eventName, target, methodName) {\n if (eventName === null) {\n console.error(\"ag-Grid: EventListener eventName should not be null\");\n return;\n }\n addToObjectProps(target, 'listenerMethods', {\n methodName: methodName,\n eventName: eventName\n });\n}\n// think we should take this out, put property bindings on the\nexport function Method(eventName) {\n return methodFunc.bind(this, eventName);\n}\nfunction methodFunc(alias, target, methodName) {\n if (alias === null) {\n console.error(\"ag-Grid: EventListener eventName should not be null\");\n return;\n }\n addToObjectProps(target, 'methods', {\n methodName: methodName,\n alias: alias\n });\n}\nfunction addToObjectProps(target, key, value) {\n // it's an attribute on the class\n var props = getOrCreateProps(target, target.constructor.name);\n if (!props[key]) {\n props[key] = [];\n }\n props[key].push(value);\n}\nfunction getOrCreateProps(target, instanceName) {\n if (!target.__agComponentMetaData) {\n target.__agComponentMetaData = {};\n }\n if (!target.__agComponentMetaData[instanceName]) {\n target.__agComponentMetaData[instanceName] = {};\n }\n return target.__agComponentMetaData[instanceName];\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { withStyles as withStylesWithoutDefault } from '@material-ui/styles';\nimport defaultTheme from './defaultTheme';\n\nfunction withStyles(stylesOrCreator, options) {\n return withStylesWithoutDefault(stylesOrCreator, _extends({\n defaultTheme: defaultTheme\n }, options));\n}\n\nexport default withStyles;","import defineProperty from \"./defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","import { ApolloClient } from 'apollo-client';\nimport { equal as isEqual } from '@wry/equality';\nimport { invariant } from 'ts-invariant';\nimport {\n ApolloContextValue,\n parser,\n DocumentType,\n operationName\n} from '@apollo/react-common';\nimport { DocumentNode } from 'graphql';\n\nimport { CommonOptions } from '../types';\n\nexport abstract class OperationData {\n public isMounted: boolean = false;\n public previousOptions: CommonOptions = {} as CommonOptions<\n TOptions\n >;\n public context: ApolloContextValue = {};\n public client: ApolloClient | undefined;\n\n private options: CommonOptions = {} as CommonOptions;\n\n constructor(options?: CommonOptions, context?: ApolloContextValue) {\n this.options = options || ({} as CommonOptions);\n this.context = context || {};\n }\n\n public getOptions(): CommonOptions {\n return this.options;\n }\n\n public setOptions(\n newOptions: CommonOptions,\n storePrevious: boolean = false\n ) {\n if (storePrevious && !isEqual(this.options, newOptions)) {\n this.previousOptions = this.options;\n }\n this.options = newOptions;\n }\n\n public abstract execute(...args: any): any;\n public abstract afterExecute(...args: any): void | (() => void);\n public abstract cleanup(): void;\n\n protected unmount() {\n this.isMounted = false;\n }\n\n protected refreshClient() {\n const client =\n (this.options && this.options.client) ||\n (this.context && this.context.client);\n\n invariant(\n !!client,\n 'Could not find \"client\" in the context or passed in as an option. ' +\n 'Wrap the root component in an , or pass an ' +\n 'ApolloClient instance in via options.'\n );\n\n let isNew = false;\n if (client !== this.client) {\n isNew = true;\n this.client = client;\n this.cleanup();\n }\n return {\n client: this.client as ApolloClient,\n isNew\n };\n }\n\n protected verifyDocumentType(document: DocumentNode, type: DocumentType) {\n const operation = parser(document);\n const requiredOperationName = operationName(type);\n const usedOperationName = operationName(operation.type);\n invariant(\n operation.type === type,\n `Running a ${requiredOperationName} requires a graphql ` +\n `${requiredOperationName}, but a ${usedOperationName} was used instead.`\n );\n }\n}\n","import {\n ApolloQueryResult,\n ApolloError,\n NetworkStatus,\n FetchMoreOptions,\n FetchMoreQueryOptions,\n UpdateQueryOptions,\n SubscribeToMoreOptions\n} from 'apollo-client';\nimport { equal as isEqual } from '@wry/equality';\nimport {\n ApolloContextValue,\n DocumentType,\n QueryResult,\n ObservableQueryFields\n} from '@apollo/react-common';\n\nimport {\n QueryPreviousData,\n QueryOptions,\n QueryCurrentObservable,\n QueryTuple,\n QueryLazyOptions\n} from '../types';\nimport { OperationData } from './OperationData';\n\nexport class QueryData extends OperationData {\n private previousData: QueryPreviousData = {};\n private currentObservable: QueryCurrentObservable = {};\n private forceUpdate: any;\n\n private runLazy: boolean = false;\n private lazyOptions?: QueryLazyOptions;\n\n constructor({\n options,\n context,\n forceUpdate\n }: {\n options: QueryOptions;\n context: ApolloContextValue;\n forceUpdate: any;\n }) {\n super(options, context);\n this.forceUpdate = forceUpdate;\n }\n\n public execute(): QueryResult {\n this.refreshClient();\n\n const { skip, query } = this.getOptions();\n if (skip || query !== this.previousData.query) {\n this.removeQuerySubscription();\n this.previousData.query = query;\n }\n\n this.updateObservableQuery();\n\n if (this.isMounted) this.startQuerySubscription();\n\n return this.getExecuteSsrResult() || this.getExecuteResult();\n }\n\n public executeLazy(): QueryTuple {\n return !this.runLazy\n ? [\n this.runLazyQuery,\n {\n loading: false,\n networkStatus: NetworkStatus.ready,\n called: false,\n data: undefined\n } as QueryResult\n ]\n : [this.runLazyQuery, this.execute()];\n }\n\n // For server-side rendering\n public fetchData(): Promise> | boolean {\n const options = this.getOptions();\n if (options.skip || options.ssr === false) return false;\n\n // currentObservable.query is already assigned the registered SSR observable in initializeObservableQuery.\n const obs = this.currentObservable.query!;\n const currentResult = obs.getCurrentResult();\n return currentResult.loading ? obs.result() : false;\n }\n\n public afterExecute({ lazy = false }: { lazy?: boolean } = {}) {\n this.isMounted = true;\n\n if (!lazy || this.runLazy) {\n this.handleErrorOrCompleted();\n\n // When the component is done rendering stored query errors, we'll\n // remove those errors from the `ObservableQuery` query store, so they\n // aren't re-displayed on subsequent (potentially error free)\n // requests/responses.\n setTimeout(() => {\n this.currentObservable.query &&\n this.currentObservable.query.resetQueryStoreErrors();\n });\n }\n\n this.previousOptions = this.getOptions();\n return this.unmount.bind(this);\n }\n\n public cleanup() {\n this.removeQuerySubscription();\n delete this.currentObservable.query;\n delete this.previousData.result;\n }\n\n public getOptions() {\n const options = super.getOptions();\n\n if (this.lazyOptions) {\n options.variables = {\n ...options.variables,\n ...this.lazyOptions.variables\n };\n options.context = {\n ...options.context,\n ...this.lazyOptions.context\n };\n }\n\n // skip is not supported when using lazy query execution.\n if (this.runLazy) {\n delete options.skip;\n }\n\n return options;\n }\n\n private runLazyQuery = (options?: QueryLazyOptions) => {\n this.cleanup();\n\n this.runLazy = true;\n this.lazyOptions = options;\n this.forceUpdate();\n };\n\n private getExecuteResult = (): QueryResult => {\n const result = this.getQueryResult();\n this.startQuerySubscription();\n return result;\n };\n\n private getExecuteSsrResult() {\n const treeRenderingInitiated = this.context && this.context.renderPromises;\n const ssrDisabled = this.getOptions().ssr === false;\n const fetchDisabled = this.refreshClient().client.disableNetworkFetches;\n\n const ssrLoading = {\n loading: true,\n networkStatus: NetworkStatus.loading,\n called: true,\n data: undefined\n } as QueryResult;\n\n // If SSR has been explicitly disabled, and this function has been called\n // on the server side, return the default loading state.\n if (ssrDisabled && (treeRenderingInitiated || fetchDisabled)) {\n return ssrLoading;\n }\n\n let result;\n if (treeRenderingInitiated) {\n result =\n this.context.renderPromises!.addQueryPromise(\n this,\n this.getExecuteResult\n ) || ssrLoading;\n }\n\n return result;\n }\n\n private prepareObservableQueryOptions() {\n const options = this.getOptions();\n this.verifyDocumentType(options.query, DocumentType.Query);\n const displayName = options.displayName || 'Query';\n\n // Set the fetchPolicy to cache-first for network-only and cache-and-network\n // fetches for server side renders.\n if (\n this.context &&\n this.context.renderPromises &&\n (options.fetchPolicy === 'network-only' ||\n options.fetchPolicy === 'cache-and-network')\n ) {\n options.fetchPolicy = 'cache-first';\n }\n\n return {\n ...options,\n displayName,\n context: options.context,\n metadata: { reactComponent: { displayName } }\n };\n }\n\n private initializeObservableQuery() {\n // See if there is an existing observable that was used to fetch the same\n // data and if so, use it instead since it will contain the proper queryId\n // to fetch the result set. This is used during SSR.\n if (this.context && this.context.renderPromises) {\n this.currentObservable.query = this.context.renderPromises.getSSRObservable(\n this.getOptions()\n );\n }\n\n if (!this.currentObservable.query) {\n const observableQueryOptions = this.prepareObservableQueryOptions();\n\n this.previousData.observableQueryOptions = {\n ...observableQueryOptions,\n children: null\n };\n this.currentObservable.query = this.refreshClient().client.watchQuery({\n ...observableQueryOptions\n });\n\n if (this.context && this.context.renderPromises) {\n this.context.renderPromises.registerSSRObservable(\n this.currentObservable.query,\n observableQueryOptions\n );\n }\n }\n }\n\n private updateObservableQuery() {\n // If we skipped initially, we may not have yet created the observable\n if (!this.currentObservable.query) {\n this.initializeObservableQuery();\n return;\n }\n\n const newObservableQueryOptions = {\n ...this.prepareObservableQueryOptions(),\n children: null\n };\n\n if (\n !isEqual(\n newObservableQueryOptions,\n this.previousData.observableQueryOptions\n )\n ) {\n this.previousData.observableQueryOptions = newObservableQueryOptions;\n this.currentObservable\n .query!.setOptions(newObservableQueryOptions)\n // The error will be passed to the child container, so we don't\n // need to log it here. We could conceivably log something if\n // an option was set. OTOH we don't log errors w/ the original\n // query. See https://github.com/apollostack/react-apollo/issues/404\n .catch(() => {});\n }\n }\n\n private startQuerySubscription() {\n if (this.currentObservable.subscription || this.getOptions().skip) return;\n\n const obsQuery = this.currentObservable.query!;\n this.currentObservable.subscription = obsQuery.subscribe({\n next: ({ loading, networkStatus, data }) => {\n const previousResult = this.previousData.result;\n\n // Make sure we're not attempting to re-render similar results\n if (\n previousResult &&\n previousResult.loading === loading &&\n previousResult.networkStatus === networkStatus &&\n isEqual(previousResult.data, data)\n ) {\n return;\n }\n\n this.forceUpdate();\n },\n error: error => {\n this.resubscribeToQuery();\n if (!error.hasOwnProperty('graphQLErrors')) throw error;\n\n const previousResult = this.previousData.result;\n if (\n (previousResult && previousResult.loading) ||\n !isEqual(error, this.previousData.error)\n ) {\n this.previousData.error = error;\n this.forceUpdate();\n }\n }\n });\n }\n\n private resubscribeToQuery() {\n this.removeQuerySubscription();\n\n // Unfortunately, if `lastError` is set in the current\n // `observableQuery` when the subscription is re-created,\n // the subscription will immediately receive the error, which will\n // cause it to terminate again. To avoid this, we first clear\n // the last error/result from the `observableQuery` before re-starting\n // the subscription, and restore it afterwards (so the subscription\n // has a chance to stay open).\n const lastError = this.currentObservable.query!.getLastError();\n const lastResult = this.currentObservable.query!.getLastResult();\n this.currentObservable.query!.resetLastResults();\n this.startQuerySubscription();\n Object.assign(this.currentObservable.query!, {\n lastError,\n lastResult\n });\n }\n\n private getQueryResult(): QueryResult {\n let result: any = this.observableQueryFields();\n const options = this.getOptions();\n\n // When skipping a query (ie. we're not querying for data but still want\n // to render children), make sure the `data` is cleared out and\n // `loading` is set to `false` (since we aren't loading anything).\n if (options.skip) {\n result = {\n ...result,\n data: undefined,\n error: undefined,\n loading: false,\n called: true\n };\n } else {\n // Fetch the current result (if any) from the store.\n const currentResult = this.currentObservable.query!.getCurrentResult();\n const { loading, partial, networkStatus, errors } = currentResult;\n let { error, data } = currentResult;\n\n // Until a set naming convention for networkError and graphQLErrors is\n // decided upon, we map errors (graphQLErrors) to the error options.\n if (errors && errors.length > 0) {\n error = new ApolloError({ graphQLErrors: errors });\n }\n\n result = {\n ...result,\n loading,\n networkStatus,\n error,\n called: true\n };\n\n if (loading) {\n const previousData =\n this.previousData.result && this.previousData.result.data;\n result.data =\n previousData && data\n ? {\n ...previousData,\n ...data\n }\n : previousData || data;\n } else if (error) {\n Object.assign(result, {\n data: (this.currentObservable.query!.getLastResult() || ({} as any))\n .data\n });\n } else {\n const { fetchPolicy } = this.currentObservable.query!.options;\n const { partialRefetch } = options;\n if (\n partialRefetch &&\n !data &&\n partial &&\n fetchPolicy !== 'cache-only'\n ) {\n // When a `Query` component is mounted, and a mutation is executed\n // that returns the same ID as the mounted `Query`, but has less\n // fields in its result, Apollo Client's `QueryManager` returns the\n // data as `undefined` since a hit can't be found in the cache.\n // This can lead to application errors when the UI elements rendered by\n // the original `Query` component are expecting certain data values to\n // exist, and they're all of a sudden stripped away. To help avoid\n // this we'll attempt to refetch the `Query` data.\n Object.assign(result, {\n loading: true,\n networkStatus: NetworkStatus.loading\n });\n result.refetch();\n return result;\n }\n\n result.data = data;\n }\n }\n\n result.client = this.client;\n this.previousData.loading =\n (this.previousData.result && this.previousData.result.loading) || false;\n this.previousData.result = result;\n return result;\n }\n\n private handleErrorOrCompleted() {\n const obsQuery = this.currentObservable.query;\n if (!obsQuery) return;\n\n const { data, loading, error } = obsQuery.getCurrentResult();\n\n if (!loading) {\n const { query, variables, onCompleted, onError } = this.getOptions();\n\n // No changes, so we won't call onError/onCompleted.\n if (\n this.previousOptions &&\n !this.previousData.loading &&\n isEqual(this.previousOptions.query, query) &&\n isEqual(this.previousOptions.variables, variables)\n ) {\n return;\n }\n\n if (onCompleted && !error) {\n onCompleted(data);\n } else if (onError && error) {\n onError(error);\n }\n }\n }\n\n private removeQuerySubscription() {\n if (this.currentObservable.subscription) {\n this.currentObservable.subscription.unsubscribe();\n delete this.currentObservable.subscription;\n }\n }\n\n private obsRefetch = (variables?: TVariables) =>\n this.currentObservable.query!.refetch(variables);\n\n private obsFetchMore = (\n fetchMoreOptions: FetchMoreQueryOptions &\n FetchMoreOptions\n ) => this.currentObservable.query!.fetchMore(fetchMoreOptions);\n\n private obsUpdateQuery = (\n mapFn: (\n previousQueryResult: TData,\n options: UpdateQueryOptions\n ) => TData\n ) => this.currentObservable.query!.updateQuery(mapFn);\n\n private obsStartPolling = (pollInterval: number) => {\n this.currentObservable &&\n this.currentObservable.query! &&\n this.currentObservable.query!.startPolling(pollInterval);\n };\n\n private obsStopPolling = () => {\n this.currentObservable &&\n this.currentObservable.query! &&\n this.currentObservable.query!.stopPolling();\n };\n\n private obsSubscribeToMore = <\n TSubscriptionData = TData,\n TSubscriptionVariables = TVariables\n >(\n options: SubscribeToMoreOptions<\n TData,\n TSubscriptionVariables,\n TSubscriptionData\n >\n ) => this.currentObservable.query!.subscribeToMore(options);\n\n private observableQueryFields() {\n const observable = this.currentObservable.query!;\n return {\n variables: observable.variables,\n refetch: this.obsRefetch,\n fetchMore: this.obsFetchMore,\n updateQuery: this.obsUpdateQuery,\n startPolling: this.obsStartPolling,\n stopPolling: this.obsStopPolling,\n subscribeToMore: this.obsSubscribeToMore\n } as ObservableQueryFields;\n }\n}\n","import { useContext, useEffect, useReducer, useRef } from 'react';\nimport {\n getApolloContext,\n OperationVariables,\n QueryResult\n} from '@apollo/react-common';\nimport { DocumentNode } from 'graphql';\n\nimport { QueryHookOptions, QueryOptions, QueryTuple } from '../types';\nimport { QueryData } from '../data/QueryData';\nimport { useDeepMemo } from './useDeepMemo';\n\nexport function useBaseQuery(\n query: DocumentNode,\n options?: QueryHookOptions,\n lazy = false\n) {\n const context = useContext(getApolloContext());\n const [tick, forceUpdate] = useReducer(x => x + 1, 0);\n const updatedOptions = options ? { ...options, query } : { query };\n\n const queryDataRef = useRef>();\n\n if (!queryDataRef.current) {\n queryDataRef.current = new QueryData({\n options: updatedOptions as QueryOptions,\n context,\n forceUpdate\n });\n }\n\n const queryData = queryDataRef.current;\n queryData.setOptions(updatedOptions);\n queryData.context = context;\n\n // `onError` and `onCompleted` callback functions will not always have a\n // stable identity, so we'll exclude them from the memoization key to\n // prevent `afterExecute` from being triggered un-necessarily.\n const memo = {\n options: { ...updatedOptions, onError: undefined, onCompleted: undefined },\n context,\n tick\n };\n\n const result = useDeepMemo(\n () => (lazy ? queryData.executeLazy() : queryData.execute()),\n memo\n );\n\n const queryResult = lazy\n ? (result as QueryTuple)[1]\n : (result as QueryResult);\n\n useEffect(() => queryData.afterExecute({ lazy }), [\n queryResult.loading,\n queryResult.networkStatus,\n queryResult.error,\n queryResult.data\n ]);\n\n useEffect(() => {\n return () => queryData.cleanup();\n }, []);\n\n return result;\n}\n","import { useRef } from 'react';\nimport { equal as isEqual } from '@wry/equality';\n\n/**\n * Memoize a result using deep equality. This hook has two advantages over\n * React.useMemo: it uses deep equality to compare memo keys, and it guarantees\n * that the memo function will only be called if the keys are unequal.\n * React.useMemo cannot be relied on to do this, since it is only a performance\n * optimization (see https://reactjs.org/docs/hooks-reference.html#usememo).\n */\nexport function useDeepMemo(\n memoFn: () => TValue,\n key: TKey\n): TValue {\n const ref = useRef<{ key: TKey; value: TValue }>();\n\n if (!ref.current || !isEqual(key, ref.current.key)) {\n ref.current = { key, value: memoFn() };\n }\n\n return ref.current.value;\n}\n","import { OperationVariables, QueryResult } from '@apollo/react-common';\nimport { DocumentNode } from 'graphql';\n\nimport { QueryHookOptions } from './types';\nimport { useBaseQuery } from './utils/useBaseQuery';\n\nexport function useQuery(\n query: DocumentNode,\n options?: QueryHookOptions\n) {\n return useBaseQuery(query, options, false) as QueryResult<\n TData,\n TVariables\n >;\n}\n","import { OperationVariables } from '@apollo/react-common';\nimport { DocumentNode } from 'graphql';\n\nimport { LazyQueryHookOptions, QueryTuple } from './types';\nimport { useBaseQuery } from './utils/useBaseQuery';\n\nexport function useLazyQuery(\n query: DocumentNode,\n options?: LazyQueryHookOptions\n) {\n return useBaseQuery(query, options, true) as QueryTuple<\n TData,\n TVariables\n >;\n}\n","import { ApolloError } from 'apollo-client';\nimport { equal as isEqual } from '@wry/equality';\nimport {\n ApolloContextValue,\n DocumentType,\n OperationVariables,\n ExecutionResult,\n MutationFunctionOptions,\n MutationResult\n} from '@apollo/react-common';\n\nimport { MutationOptions, MutationTuple } from '../types';\nimport { OperationData } from './OperationData';\n\nexport class MutationData<\n TData = any,\n TVariables = OperationVariables\n> extends OperationData {\n private mostRecentMutationId: number;\n private result: MutationResult;\n private previousResult?: MutationResult;\n private setResult: (result: MutationResult) => any;\n\n constructor({\n options,\n context,\n result,\n setResult\n }: {\n options: MutationOptions;\n context: ApolloContextValue;\n result: MutationResult;\n setResult: (result: MutationResult) => any;\n }) {\n super(options, context);\n this.verifyDocumentType(options.mutation, DocumentType.Mutation);\n this.result = result;\n this.setResult = setResult;\n this.mostRecentMutationId = 0;\n }\n\n public execute(result: MutationResult) {\n this.isMounted = true;\n this.verifyDocumentType(this.getOptions().mutation, DocumentType.Mutation);\n result.client = this.refreshClient().client;\n return [this.runMutation, result] as MutationTuple;\n }\n\n public afterExecute() {\n this.isMounted = true;\n return this.unmount.bind(this);\n }\n\n public cleanup() {\n // No cleanup required.\n }\n\n private runMutation = (\n mutationFunctionOptions: MutationFunctionOptions<\n TData,\n TVariables\n > = {} as MutationFunctionOptions\n ) => {\n this.onMutationStart();\n const mutationId = this.generateNewMutationId();\n\n return this.mutate(mutationFunctionOptions)\n .then((response: ExecutionResult) => {\n this.onMutationCompleted(response, mutationId);\n return response;\n })\n .catch((error: ApolloError) => {\n this.onMutationError(error, mutationId);\n if (!this.getOptions().onError) throw error;\n });\n };\n\n private mutate(\n mutationFunctionOptions: MutationFunctionOptions\n ) {\n const {\n mutation,\n variables,\n optimisticResponse,\n update,\n context: mutationContext = {},\n awaitRefetchQueries = false,\n fetchPolicy\n } = this.getOptions();\n const mutateOptions = { ...mutationFunctionOptions };\n\n const mutateVariables = Object.assign(\n {},\n variables,\n mutateOptions.variables\n );\n delete mutateOptions.variables;\n\n return this.refreshClient().client.mutate({\n mutation,\n optimisticResponse,\n refetchQueries:\n mutateOptions.refetchQueries || this.getOptions().refetchQueries,\n awaitRefetchQueries,\n update,\n context: mutationContext,\n fetchPolicy,\n variables: mutateVariables,\n ...mutateOptions\n });\n }\n\n private onMutationStart() {\n if (!this.result.loading && !this.getOptions().ignoreResults) {\n this.updateResult({\n loading: true,\n error: undefined,\n data: undefined,\n called: true\n });\n }\n }\n\n private onMutationCompleted(\n response: ExecutionResult,\n mutationId: number\n ) {\n const { onCompleted, ignoreResults } = this.getOptions();\n\n const { data, errors } = response;\n const error =\n errors && errors.length > 0\n ? new ApolloError({ graphQLErrors: errors })\n : undefined;\n\n const callOncomplete = () =>\n onCompleted ? onCompleted(data as TData) : null;\n\n if (this.isMostRecentMutation(mutationId) && !ignoreResults) {\n this.updateResult({\n called: true,\n loading: false,\n data,\n error\n });\n }\n callOncomplete();\n }\n\n private onMutationError(error: ApolloError, mutationId: number) {\n const { onError } = this.getOptions();\n\n if (this.isMostRecentMutation(mutationId)) {\n this.updateResult({\n loading: false,\n error,\n data: undefined,\n called: true\n });\n }\n\n if (onError) {\n onError(error);\n }\n }\n\n private generateNewMutationId(): number {\n return ++this.mostRecentMutationId;\n }\n\n private isMostRecentMutation(mutationId: number) {\n return this.mostRecentMutationId === mutationId;\n }\n\n private updateResult(result: MutationResult) {\n if (\n this.isMounted &&\n (!this.previousResult || !isEqual(this.previousResult, result))\n ) {\n this.setResult(result);\n this.previousResult = result;\n }\n }\n}\n","import { useContext, useState, useRef, useEffect } from 'react';\nimport { getApolloContext, OperationVariables } from '@apollo/react-common';\nimport { DocumentNode } from 'graphql';\n\nimport { MutationHookOptions, MutationTuple } from './types';\nimport { MutationData } from './data/MutationData';\n\nexport function useMutation(\n mutation: DocumentNode,\n options?: MutationHookOptions\n): MutationTuple {\n const context = useContext(getApolloContext());\n const [result, setResult] = useState({ called: false, loading: false });\n const updatedOptions = options ? { ...options, mutation } : { mutation };\n\n const mutationDataRef = useRef>();\n function getMutationDataRef() {\n if (!mutationDataRef.current) {\n mutationDataRef.current = new MutationData({\n options: updatedOptions,\n context,\n result,\n setResult\n });\n }\n return mutationDataRef.current;\n }\n\n const mutationData = getMutationDataRef();\n mutationData.setOptions(updatedOptions);\n mutationData.context = context;\n\n useEffect(() => mutationData.afterExecute());\n\n return mutationData.execute(result);\n}\n","import { equal as isEqual } from '@wry/equality';\nimport { ApolloContextValue, SubscriptionResult } from '@apollo/react-common';\n\nimport { OperationData } from './OperationData';\nimport { SubscriptionCurrentObservable, SubscriptionOptions } from '../types';\n\nexport class SubscriptionData<\n TData = any,\n TVariables = any\n> extends OperationData> {\n private setResult: any;\n private currentObservable: SubscriptionCurrentObservable = {};\n\n constructor({\n options,\n context,\n setResult\n }: {\n options: SubscriptionOptions;\n context: ApolloContextValue;\n setResult: any;\n }) {\n super(options, context);\n this.setResult = setResult;\n this.initialize(options);\n }\n\n public execute(result: SubscriptionResult) {\n if (this.getOptions().skip === true) {\n this.cleanup();\n return {\n loading: false,\n error: undefined,\n data: undefined,\n variables: this.getOptions().variables\n };\n }\n\n let currentResult = result;\n if (this.refreshClient().isNew) {\n currentResult = this.getLoadingResult();\n }\n\n let { shouldResubscribe } = this.getOptions();\n if (typeof shouldResubscribe === 'function') {\n shouldResubscribe = !!shouldResubscribe(this.getOptions());\n }\n\n if (\n shouldResubscribe !== false &&\n this.previousOptions &&\n Object.keys(this.previousOptions).length > 0 &&\n (this.previousOptions.subscription !== this.getOptions().subscription ||\n !isEqual(this.previousOptions.variables, this.getOptions().variables) ||\n this.previousOptions.skip !== this.getOptions().skip)\n ) {\n this.cleanup();\n currentResult = this.getLoadingResult();\n }\n\n this.initialize(this.getOptions());\n this.startSubscription();\n\n this.previousOptions = this.getOptions();\n return { ...currentResult, variables: this.getOptions().variables };\n }\n\n public afterExecute() {\n this.isMounted = true;\n }\n\n public cleanup() {\n this.endSubscription();\n delete this.currentObservable.query;\n }\n\n private initialize(options: SubscriptionOptions) {\n if (this.currentObservable.query || this.getOptions().skip === true) return;\n this.currentObservable.query = this.refreshClient().client.subscribe({\n query: options.subscription,\n variables: options.variables,\n fetchPolicy: options.fetchPolicy\n });\n }\n\n private startSubscription() {\n if (this.currentObservable.subscription) return;\n this.currentObservable.subscription = this.currentObservable.query!.subscribe(\n {\n next: this.updateCurrentData.bind(this),\n error: this.updateError.bind(this),\n complete: this.completeSubscription.bind(this)\n }\n );\n }\n\n private getLoadingResult() {\n return {\n loading: true,\n error: undefined,\n data: undefined\n };\n }\n\n private updateResult(result: SubscriptionResult) {\n if (this.isMounted) {\n this.setResult(result);\n }\n }\n\n private updateCurrentData(result: SubscriptionResult) {\n const { onSubscriptionData } = this.getOptions();\n\n this.updateResult({\n data: result.data,\n loading: false,\n error: undefined\n });\n\n if (onSubscriptionData) {\n onSubscriptionData({\n client: this.refreshClient().client,\n subscriptionData: result\n });\n }\n }\n\n private updateError(error: any) {\n this.updateResult({\n error,\n loading: false\n });\n }\n\n private completeSubscription() {\n const { onSubscriptionComplete } = this.getOptions();\n if (onSubscriptionComplete) onSubscriptionComplete();\n this.endSubscription();\n }\n\n private endSubscription() {\n if (this.currentObservable.subscription) {\n this.currentObservable.subscription.unsubscribe();\n delete this.currentObservable.subscription;\n }\n }\n}\n","import { useContext, useState, useRef, useEffect } from 'react';\nimport { DocumentNode } from 'graphql';\nimport { getApolloContext, OperationVariables } from '@apollo/react-common';\n\nimport { SubscriptionHookOptions } from './types';\nimport { SubscriptionData } from './data/SubscriptionData';\n\nexport function useSubscription(\n subscription: DocumentNode,\n options?: SubscriptionHookOptions\n) {\n const context = useContext(getApolloContext());\n const updatedOptions = options\n ? { ...options, subscription }\n : { subscription };\n const [result, setResult] = useState({\n loading: !updatedOptions.skip,\n error: undefined,\n data: undefined\n });\n\n const subscriptionDataRef = useRef>();\n function getSubscriptionDataRef() {\n if (!subscriptionDataRef.current) {\n subscriptionDataRef.current = new SubscriptionData({\n options: updatedOptions,\n context,\n setResult\n });\n }\n return subscriptionDataRef.current;\n }\n\n const subscriptionData = getSubscriptionDataRef();\n subscriptionData.setOptions(updatedOptions, true);\n subscriptionData.context = context;\n\n useEffect(() => subscriptionData.afterExecute());\n useEffect(() => subscriptionData.cleanup.bind(subscriptionData), []);\n\n return subscriptionData.execute(result);\n}\n","import React from 'react';\nimport { invariant } from 'ts-invariant';\nimport { getApolloContext } from '@apollo/react-common';\nimport ApolloClient from 'apollo-client';\n\nexport function useApolloClient(): ApolloClient {\n const { client } = React.useContext(getApolloContext());\n invariant(\n client,\n 'No Apollo Client instance can be found. Please ensure that you ' +\n 'have called `ApolloProvider` higher up in your tree.'\n );\n return client!;\n}\n","import { ObservableQuery } from 'apollo-client';\nimport { QueryOptions } from '../types';\nimport { DocumentNode } from 'graphql';\nimport { QueryData } from '../data/QueryData';\n\ntype QueryInfo = {\n seen: boolean;\n observable: ObservableQuery | null;\n};\n\nfunction makeDefaultQueryInfo(): QueryInfo {\n return {\n seen: false,\n observable: null\n };\n}\n\nexport class RenderPromises {\n // Map from Query component instances to pending fetchData promises.\n private queryPromises = new Map, Promise>();\n\n // Two-layered map from (query document, stringified variables) to QueryInfo\n // objects. These QueryInfo objects are intended to survive through the whole\n // getMarkupFromTree process, whereas specific Query instances do not survive\n // beyond a single call to renderToStaticMarkup.\n private queryInfoTrie = new Map>();\n\n // Registers the server side rendered observable.\n public registerSSRObservable(\n observable: ObservableQuery,\n props: QueryOptions\n ) {\n this.lookupQueryInfo(props).observable = observable;\n }\n\n // Get's the cached observable that matches the SSR Query instances query and variables.\n public getSSRObservable(\n props: QueryOptions\n ) {\n return this.lookupQueryInfo(props).observable;\n }\n\n public addQueryPromise(\n queryInstance: QueryData,\n finish: () => React.ReactNode\n ): React.ReactNode {\n const info = this.lookupQueryInfo(queryInstance.getOptions());\n if (!info.seen) {\n this.queryPromises.set(\n queryInstance.getOptions(),\n new Promise(resolve => {\n resolve(queryInstance.fetchData());\n })\n );\n // Render null to abandon this subtree for this rendering, so that we\n // can wait for the data to arrive.\n return null;\n }\n return finish();\n }\n\n public hasPromises() {\n return this.queryPromises.size > 0;\n }\n\n public consumeAndAwaitPromises() {\n const promises: Promise[] = [];\n this.queryPromises.forEach((promise, queryInstance) => {\n // Make sure we never try to call fetchData for this query document and\n // these variables again. Since the queryInstance objects change with\n // every rendering, deduplicating them by query and variables is the\n // best we can do. If a different Query component happens to have the\n // same query document and variables, it will be immediately rendered\n // by calling finish() in addQueryPromise, which could result in the\n // rendering of an unwanted loading state, but that's not nearly as bad\n // as getting stuck in an infinite rendering loop because we kept calling\n // queryInstance.fetchData for the same Query component indefinitely.\n this.lookupQueryInfo(queryInstance).seen = true;\n promises.push(promise);\n });\n this.queryPromises.clear();\n return Promise.all(promises);\n }\n\n private lookupQueryInfo(\n props: QueryOptions\n ): QueryInfo {\n const { queryInfoTrie } = this;\n const { query, variables } = props;\n const varMap = queryInfoTrie.get(query) || new Map();\n if (!queryInfoTrie.has(query)) queryInfoTrie.set(query, varMap);\n const variablesString = JSON.stringify(variables);\n const info = varMap.get(variablesString) || makeDefaultQueryInfo();\n if (!varMap.has(variablesString)) varMap.set(variablesString, info);\n return info;\n }\n}\n","import requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","import React from 'react';\nexport var ReactReduxContext = React.createContext(null);\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nvar CLEARED = null;\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n var batch = getBatch(); // the current/next pattern is copied from redux's createStore code.\n // TODO: refactor+expose that code to be reusable here?\n\n var current = [];\n var next = [];\n return {\n clear: function clear() {\n next = CLEARED;\n current = CLEARED;\n },\n notify: function notify() {\n var listeners = current = next;\n batch(function () {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n });\n },\n get: function get() {\n return next;\n },\n subscribe: function subscribe(listener) {\n var isSubscribed = true;\n if (next === current) next = current.slice();\n next.push(listener);\n return function unsubscribe() {\n if (!isSubscribed || current === CLEARED) return;\n isSubscribed = false;\n if (next === current) next = current.slice();\n next.splice(next.indexOf(listener), 1);\n };\n }\n };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(store, parentSub) {\n this.store = store;\n this.parentSub = parentSub;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n this.handleChangeWrapper = this.handleChangeWrapper.bind(this);\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.handleChangeWrapper = function handleChangeWrapper() {\n if (this.onStateChange) {\n this.onStateChange();\n }\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.handleChangeWrapper) : this.store.subscribe(this.handleChangeWrapper);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };","import React, { useMemo, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport Subscription from '../utils/Subscription';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = new Subscription(store);\n subscription.onStateChange = subscription.notifyNestedSubs;\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useEffect(function () {\n var subscription = contextValue.subscription;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nProvider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n};\nexport default Provider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport React, { useContext, useMemo, useEffect, useLayoutEffect, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n}; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect because we want\n// `connect` to perform sync updates to a ref to save the latest props after\n// a render is actually committed to the DOM.\n\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"]);\n\n invariant(renderCountProp === undefined, \"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n invariant(!withRef, 'withRef is removed. To access the wrapped instance, use a ref on the connected component');\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: . ' + 'You may also pass a {context : MyContext} option to connect';\n invariant(storeKey === 'store', 'storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production') {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = useMemo(function () {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n var forwardedRef = props.forwardedRef,\n wrapperProps = _objectWithoutPropertiesLoose(props, [\"forwardedRef\"]);\n\n return [props.context, forwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n forwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = useMemo(function () {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && isContextConsumer(React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context\n\n var didStoreComeFromProps = Boolean(props.store);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n invariant(didStoreComeFromProps || didStoreComeFromContext, \"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + \"or pass a custom React context provider to and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n var store = props.store || contextValue.store;\n var childPropsSelector = useMemo(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = useMemo(function () {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n var subscription = new Subscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n\n var overriddenContextValue = useMemo(function () {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function () {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n useIsomorphicLayoutEffect(function () {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n }); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffect(function () {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n latestStoreState: latestStoreState,\n error: error\n }\n });\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n var unsubscribeWrapper = function unsubscribeWrapper() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n }, [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n var renderedWrappedComponent = useMemo(function () {\n return React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: forwardedRef\n }));\n }, [forwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n var renderedChild = useMemo(function () {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return React.createElement(Connect, _extends({}, props, {\n forwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, {}, stateProps, {}, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default createConnect();","import { useContext } from 'react';\nimport invariant from 'invariant';\nimport { ReactReduxContext } from '../components/Context';\n/**\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\n * hook that you should usually not need to call directly.\n *\n * @returns {any} the value of the `ReactReduxContext`\n *\n * @example\n *\n * import React from 'react'\n * import { useReduxContext } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n * const { store } = useReduxContext()\n * return
{store.getState()}
\n * }\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n invariant(contextValue, 'could not find react-redux context value; please ensure the component is wrapped in a ');\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\n * Hook factory, which creates a `useStore` hook bound to a given context.\n *\n * @param {Function} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useStore` hook bound to the specified context.\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\n * A hook to access the redux store.\n *\n * @returns {any} the redux store\n *\n * @example\n *\n * import React from 'react'\n * import { useStore } from 'react-redux'\n *\n * export const ExampleComponent = () => {\n * const store = useStore()\n * return
{store.getState()}
\n * }\n */\n\nexport var useStore = createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\n *\n * @param {Function} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useDispatch` hook bound to the specified context.\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\n * A hook to access the redux `dispatch` function.\n *\n * @returns {any|function} redux store's `dispatch` function\n *\n * @example\n *\n * import React, { useCallback } from 'react'\n * import { useDispatch } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n * const dispatch = useDispatch()\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\n * return (\n *
\n * {value}\n * \n *
\n * )\n * }\n */\n\nexport var useDispatch = createDispatchHook();","import { useReducer, useRef, useEffect, useMemo, useLayoutEffect, useContext } from 'react';\nimport invariant from 'invariant';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport Subscription from '../utils/Subscription';\nimport { ReactReduxContext } from '../components/Context'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return new Subscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestSelectedState = useRef();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || latestSubscriptionCallbackError.current) {\n selectedState = selector(store.getState());\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n var errorMessage = \"An error occured while selecting the store state: \" + err.message + \".\";\n\n if (latestSubscriptionCallbackError.current) {\n errorMessage += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\nOriginal stack trace:\";\n }\n\n throw new Error(errorMessage);\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newSelectedState = latestSelector.current(store.getState());\n\n if (equalityFn(newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = newSelectedState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender({});\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\n * Hook factory, which creates a `useSelector` hook bound to a given context.\n *\n * @param {Function} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useSelector` hook bound to the specified context.\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n invariant(selector, \"You must pass a selector to useSelectors\");\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n return useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n };\n}\n/**\n * A hook to access the redux store's state. This hook takes a selector function\n * as an argument. The selector is called with the store state.\n *\n * This hook takes an optional equality comparison function as the second parameter\n * that allows you to customize the way the selected state is compared to determine\n * whether the component needs to be re-rendered.\n *\n * @param {Function} selector the selector function\n * @param {Function=} equalityFn the function that will be used to determine equality\n *\n * @returns {any} the selected state\n *\n * @example\n *\n * import React from 'react'\n * import { useSelector } from 'react-redux'\n *\n * export const CounterComponent = () => {\n * const counter = useSelector(state => state.counter)\n * return
{counter}
\n * }\n */\n\nexport var useSelector = createSelectorHook();","import Provider from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport { ReactReduxContext } from './components/Context';\nimport connect from './connect/connect';\nimport { useDispatch, createDispatchHook } from './hooks/useDispatch';\nimport { useSelector, createSelectorHook } from './hooks/useSelector';\nimport { useStore, createStoreHook } from './hooks/useStore';\nimport { setBatch } from './utils/batch';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport shallowEqual from './utils/shallowEqual';\nsetBatch(batch);\nexport { Provider, connectAdvanced, ReactReduxContext, connect, batch, useDispatch, createDispatchHook, useSelector, createSelectorHook, useStore, createStoreHook, shallowEqual };","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","import addLeadingZeros from '../../addLeadingZeros/index.js';\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function (date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import lightFormatters from '../lightFormatters/index.js';\nimport getUTCDayOfYear from '../../../_lib/getUTCDayOfYear/index.js';\nimport getUTCISOWeek from '../../../_lib/getUTCISOWeek/index.js';\nimport getUTCISOWeekYear from '../../../_lib/getUTCISOWeekYear/index.js';\nimport getUTCWeek from '../../../_lib/getUTCWeek/index.js';\nimport getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js';\nimport addLeadingZeros from '../../addLeadingZeros/index.js';\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n /*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\n};\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","import toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js';\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import isValid from '../isValid/index.js';\nimport defaultLocale from '../locale/en-US/index.js';\nimport subMilliseconds from '../subMilliseconds/index.js';\nimport toDate from '../toDate/index.js';\nimport formatters from '../_lib/format/formatters/index.js';\nimport longFormatters from '../_lib/format/longFormatters/index.js';\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from '../_lib/protectedTokens/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js'; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import {\n DirectiveNode,\n FieldNode,\n IntValueNode,\n FloatValueNode,\n StringValueNode,\n BooleanValueNode,\n ObjectValueNode,\n ListValueNode,\n EnumValueNode,\n NullValueNode,\n VariableNode,\n InlineFragmentNode,\n ValueNode,\n SelectionNode,\n NameNode,\n} from 'graphql';\n\nimport stringify from 'fast-json-stable-stringify';\nimport { InvariantError } from 'ts-invariant';\n\nexport interface IdValue {\n type: 'id';\n id: string;\n generated: boolean;\n typename: string | undefined;\n}\n\nexport interface JsonValue {\n type: 'json';\n json: any;\n}\n\nexport type ListValue = Array;\n\nexport type StoreValue =\n | number\n | string\n | string[]\n | IdValue\n | ListValue\n | JsonValue\n | null\n | undefined\n | void\n | Object;\n\nexport type ScalarValue = StringValueNode | BooleanValueNode | EnumValueNode;\n\nexport function isScalarValue(value: ValueNode): value is ScalarValue {\n return ['StringValue', 'BooleanValue', 'EnumValue'].indexOf(value.kind) > -1;\n}\n\nexport type NumberValue = IntValueNode | FloatValueNode;\n\nexport function isNumberValue(value: ValueNode): value is NumberValue {\n return ['IntValue', 'FloatValue'].indexOf(value.kind) > -1;\n}\n\nfunction isStringValue(value: ValueNode): value is StringValueNode {\n return value.kind === 'StringValue';\n}\n\nfunction isBooleanValue(value: ValueNode): value is BooleanValueNode {\n return value.kind === 'BooleanValue';\n}\n\nfunction isIntValue(value: ValueNode): value is IntValueNode {\n return value.kind === 'IntValue';\n}\n\nfunction isFloatValue(value: ValueNode): value is FloatValueNode {\n return value.kind === 'FloatValue';\n}\n\nfunction isVariable(value: ValueNode): value is VariableNode {\n return value.kind === 'Variable';\n}\n\nfunction isObjectValue(value: ValueNode): value is ObjectValueNode {\n return value.kind === 'ObjectValue';\n}\n\nfunction isListValue(value: ValueNode): value is ListValueNode {\n return value.kind === 'ListValue';\n}\n\nfunction isEnumValue(value: ValueNode): value is EnumValueNode {\n return value.kind === 'EnumValue';\n}\n\nfunction isNullValue(value: ValueNode): value is NullValueNode {\n return value.kind === 'NullValue';\n}\n\nexport function valueToObjectRepresentation(\n argObj: any,\n name: NameNode,\n value: ValueNode,\n variables?: Object,\n) {\n if (isIntValue(value) || isFloatValue(value)) {\n argObj[name.value] = Number(value.value);\n } else if (isBooleanValue(value) || isStringValue(value)) {\n argObj[name.value] = value.value;\n } else if (isObjectValue(value)) {\n const nestedArgObj = {};\n value.fields.map(obj =>\n valueToObjectRepresentation(nestedArgObj, obj.name, obj.value, variables),\n );\n argObj[name.value] = nestedArgObj;\n } else if (isVariable(value)) {\n const variableValue = (variables || ({} as any))[value.name.value];\n argObj[name.value] = variableValue;\n } else if (isListValue(value)) {\n argObj[name.value] = value.values.map(listValue => {\n const nestedArgArrayObj = {};\n valueToObjectRepresentation(\n nestedArgArrayObj,\n name,\n listValue,\n variables,\n );\n return (nestedArgArrayObj as any)[name.value];\n });\n } else if (isEnumValue(value)) {\n argObj[name.value] = (value as EnumValueNode).value;\n } else if (isNullValue(value)) {\n argObj[name.value] = null;\n } else {\n throw new InvariantError(\n `The inline argument \"${name.value}\" of kind \"${(value as any).kind}\"` +\n 'is not supported. Use variables instead of inline arguments to ' +\n 'overcome this limitation.',\n );\n }\n}\n\nexport function storeKeyNameFromField(\n field: FieldNode,\n variables?: Object,\n): string {\n let directivesObj: any = null;\n if (field.directives) {\n directivesObj = {};\n field.directives.forEach(directive => {\n directivesObj[directive.name.value] = {};\n\n if (directive.arguments) {\n directive.arguments.forEach(({ name, value }) =>\n valueToObjectRepresentation(\n directivesObj[directive.name.value],\n name,\n value,\n variables,\n ),\n );\n }\n });\n }\n\n let argObj: any = null;\n if (field.arguments && field.arguments.length) {\n argObj = {};\n field.arguments.forEach(({ name, value }) =>\n valueToObjectRepresentation(argObj, name, value, variables),\n );\n }\n\n return getStoreKeyName(field.name.value, argObj, directivesObj);\n}\n\nexport type Directives = {\n [directiveName: string]: {\n [argName: string]: any;\n };\n};\n\nconst KNOWN_DIRECTIVES: string[] = [\n 'connection',\n 'include',\n 'skip',\n 'client',\n 'rest',\n 'export',\n];\n\nexport function getStoreKeyName(\n fieldName: string,\n args?: Object,\n directives?: Directives,\n): string {\n if (\n directives &&\n directives['connection'] &&\n directives['connection']['key']\n ) {\n if (\n directives['connection']['filter'] &&\n (directives['connection']['filter'] as string[]).length > 0\n ) {\n const filterKeys = directives['connection']['filter']\n ? (directives['connection']['filter'] as string[])\n : [];\n filterKeys.sort();\n\n const queryArgs = args as { [key: string]: any };\n const filteredArgs = {} as { [key: string]: any };\n filterKeys.forEach(key => {\n filteredArgs[key] = queryArgs[key];\n });\n\n return `${directives['connection']['key']}(${JSON.stringify(\n filteredArgs,\n )})`;\n } else {\n return directives['connection']['key'];\n }\n }\n\n let completeFieldName: string = fieldName;\n\n if (args) {\n // We can't use `JSON.stringify` here since it's non-deterministic,\n // and can lead to different store key names being created even though\n // the `args` object used during creation has the same properties/values.\n const stringifiedArgs: string = stringify(args);\n completeFieldName += `(${stringifiedArgs})`;\n }\n\n if (directives) {\n Object.keys(directives).forEach(key => {\n if (KNOWN_DIRECTIVES.indexOf(key) !== -1) return;\n if (directives[key] && Object.keys(directives[key]).length) {\n completeFieldName += `@${key}(${JSON.stringify(directives[key])})`;\n } else {\n completeFieldName += `@${key}`;\n }\n });\n }\n\n return completeFieldName;\n}\n\nexport function argumentsObjectFromField(\n field: FieldNode | DirectiveNode,\n variables: Object,\n): Object {\n if (field.arguments && field.arguments.length) {\n const argObj: Object = {};\n field.arguments.forEach(({ name, value }) =>\n valueToObjectRepresentation(argObj, name, value, variables),\n );\n return argObj;\n }\n\n return null;\n}\n\nexport function resultKeyNameFromField(field: FieldNode): string {\n return field.alias ? field.alias.value : field.name.value;\n}\n\nexport function isField(selection: SelectionNode): selection is FieldNode {\n return selection.kind === 'Field';\n}\n\nexport function isInlineFragment(\n selection: SelectionNode,\n): selection is InlineFragmentNode {\n return selection.kind === 'InlineFragment';\n}\n\nexport function isIdValue(idObject: StoreValue): idObject is IdValue {\n return idObject &&\n (idObject as IdValue | JsonValue).type === 'id' &&\n typeof (idObject as IdValue).generated === 'boolean';\n}\n\nexport type IdConfig = {\n id: string;\n typename: string | undefined;\n};\n\nexport function toIdValue(\n idConfig: string | IdConfig,\n generated = false,\n): IdValue {\n return {\n type: 'id',\n generated,\n ...(typeof idConfig === 'string'\n ? { id: idConfig, typename: undefined }\n : idConfig),\n };\n}\n\nexport function isJsonValue(jsonObject: StoreValue): jsonObject is JsonValue {\n return (\n jsonObject != null &&\n typeof jsonObject === 'object' &&\n (jsonObject as IdValue | JsonValue).type === 'json'\n );\n}\n\nfunction defaultValueFromVariable(node: VariableNode) {\n throw new InvariantError(`Variable nodes are not supported by valueFromNode`);\n}\n\nexport type VariableValue = (node: VariableNode) => any;\n\n/**\n * Evaluate a ValueNode and yield its value in its natural JS form.\n */\nexport function valueFromNode(\n node: ValueNode,\n onVariable: VariableValue = defaultValueFromVariable,\n): any {\n switch (node.kind) {\n case 'Variable':\n return onVariable(node);\n case 'NullValue':\n return null;\n case 'IntValue':\n return parseInt(node.value, 10);\n case 'FloatValue':\n return parseFloat(node.value);\n case 'ListValue':\n return node.values.map(v => valueFromNode(v, onVariable));\n case 'ObjectValue': {\n const value: { [key: string]: any } = {};\n for (const field of node.fields) {\n value[field.name.value] = valueFromNode(field.value, onVariable);\n }\n return value;\n }\n default:\n return node.value;\n }\n}\n","// Provides the methods that allow QueryManager to handle the `skip` and\n// `include` directives within GraphQL.\nimport {\n FieldNode,\n SelectionNode,\n VariableNode,\n BooleanValueNode,\n DirectiveNode,\n DocumentNode,\n ArgumentNode,\n ValueNode,\n} from 'graphql';\n\nimport { visit } from 'graphql/language/visitor';\n\nimport { invariant } from 'ts-invariant';\n\nimport { argumentsObjectFromField } from './storeUtils';\n\nexport type DirectiveInfo = {\n [fieldName: string]: { [argName: string]: any };\n};\n\nexport function getDirectiveInfoFromField(\n field: FieldNode,\n variables: Object,\n): DirectiveInfo {\n if (field.directives && field.directives.length) {\n const directiveObj: DirectiveInfo = {};\n field.directives.forEach((directive: DirectiveNode) => {\n directiveObj[directive.name.value] = argumentsObjectFromField(\n directive,\n variables,\n );\n });\n return directiveObj;\n }\n return null;\n}\n\nexport function shouldInclude(\n selection: SelectionNode,\n variables: { [name: string]: any } = {},\n): boolean {\n return getInclusionDirectives(\n selection.directives,\n ).every(({ directive, ifArgument }) => {\n let evaledValue: boolean = false;\n if (ifArgument.value.kind === 'Variable') {\n evaledValue = variables[(ifArgument.value as VariableNode).name.value];\n invariant(\n evaledValue !== void 0,\n `Invalid variable referenced in @${directive.name.value} directive.`,\n );\n } else {\n evaledValue = (ifArgument.value as BooleanValueNode).value;\n }\n return directive.name.value === 'skip' ? !evaledValue : evaledValue;\n });\n}\n\nexport function getDirectiveNames(doc: DocumentNode) {\n const names: string[] = [];\n\n visit(doc, {\n Directive(node) {\n names.push(node.name.value);\n },\n });\n\n return names;\n}\n\nexport function hasDirectives(names: string[], doc: DocumentNode) {\n return getDirectiveNames(doc).some(\n (name: string) => names.indexOf(name) > -1,\n );\n}\n\nexport function hasClientExports(document: DocumentNode) {\n return (\n document &&\n hasDirectives(['client'], document) &&\n hasDirectives(['export'], document)\n );\n}\n\nexport type InclusionDirectives = Array<{\n directive: DirectiveNode;\n ifArgument: ArgumentNode;\n}>;\n\nfunction isInclusionDirective({ name: { value } }: DirectiveNode): boolean {\n return value === 'skip' || value === 'include';\n}\n\nexport function getInclusionDirectives(\n directives: ReadonlyArray,\n): InclusionDirectives {\n return directives ? directives.filter(isInclusionDirective).map(directive => {\n const directiveArguments = directive.arguments;\n const directiveName = directive.name.value;\n\n invariant(\n directiveArguments && directiveArguments.length === 1,\n `Incorrect number of arguments for the @${directiveName} directive.`,\n );\n\n const ifArgument = directiveArguments[0];\n invariant(\n ifArgument.name && ifArgument.name.value === 'if',\n `Invalid argument for the @${directiveName} directive.`,\n );\n\n const ifValue: ValueNode = ifArgument.value;\n\n // means it has to be a variable value if this is a valid @skip or @include directive\n invariant(\n ifValue &&\n (ifValue.kind === 'Variable' || ifValue.kind === 'BooleanValue'),\n `Argument for the @${directiveName} directive must be a variable or a boolean value.`,\n );\n\n return { directive, ifArgument };\n }) : [];\n}\n\n","import { DocumentNode, FragmentDefinitionNode } from 'graphql';\nimport { invariant, InvariantError } from 'ts-invariant';\n\n/**\n * Returns a query document which adds a single query operation that only\n * spreads the target fragment inside of it.\n *\n * So for example a document of:\n *\n * ```graphql\n * fragment foo on Foo { a b c }\n * ```\n *\n * Turns into:\n *\n * ```graphql\n * { ...foo }\n *\n * fragment foo on Foo { a b c }\n * ```\n *\n * The target fragment will either be the only fragment in the document, or a\n * fragment specified by the provided `fragmentName`. If there is more than one\n * fragment, but a `fragmentName` was not defined then an error will be thrown.\n */\nexport function getFragmentQueryDocument(\n document: DocumentNode,\n fragmentName?: string,\n): DocumentNode {\n let actualFragmentName = fragmentName;\n\n // Build an array of all our fragment definitions that will be used for\n // validations. We also do some validations on the other definitions in the\n // document while building this list.\n const fragments: Array = [];\n document.definitions.forEach(definition => {\n // Throw an error if we encounter an operation definition because we will\n // define our own operation definition later on.\n if (definition.kind === 'OperationDefinition') {\n throw new InvariantError(\n `Found a ${definition.operation} operation${\n definition.name ? ` named '${definition.name.value}'` : ''\n }. ` +\n 'No operations are allowed when using a fragment as a query. Only fragments are allowed.',\n );\n }\n // Add our definition to the fragments array if it is a fragment\n // definition.\n if (definition.kind === 'FragmentDefinition') {\n fragments.push(definition);\n }\n });\n\n // If the user did not give us a fragment name then let us try to get a\n // name from a single fragment in the definition.\n if (typeof actualFragmentName === 'undefined') {\n invariant(\n fragments.length === 1,\n `Found ${\n fragments.length\n } fragments. \\`fragmentName\\` must be provided when there is not exactly 1 fragment.`,\n );\n actualFragmentName = fragments[0].name.value;\n }\n\n // Generate a query document with an operation that simply spreads the\n // fragment inside of it.\n const query: DocumentNode = {\n ...document,\n definitions: [\n {\n kind: 'OperationDefinition',\n operation: 'query',\n selectionSet: {\n kind: 'SelectionSet',\n selections: [\n {\n kind: 'FragmentSpread',\n name: {\n kind: 'Name',\n value: actualFragmentName,\n },\n },\n ],\n },\n },\n ...document.definitions,\n ],\n };\n\n return query;\n}\n","/**\n * Adds the properties of one or more source objects to a target object. Works exactly like\n * `Object.assign`, but as a utility to maintain support for IE 11.\n *\n * @see https://github.com/apollostack/apollo-client/pull/1009\n */\nexport function assign(a: A, b: B): A & B;\nexport function assign(a: A, b: B, c: C): A & B & C;\nexport function assign(a: A, b: B, c: C, d: D): A & B & C & D;\nexport function assign(\n a: A,\n b: B,\n c: C,\n d: D,\n e: E,\n): A & B & C & D & E;\nexport function assign(target: any, ...sources: Array): any;\nexport function assign(\n target: { [key: string]: any },\n ...sources: Array<{ [key: string]: any }>\n): { [key: string]: any } {\n sources.forEach(source => {\n if (typeof source === 'undefined' || source === null) {\n return;\n }\n Object.keys(source).forEach(key => {\n target[key] = source[key];\n });\n });\n return target;\n}\n","import {\n DocumentNode,\n OperationDefinitionNode,\n FragmentDefinitionNode,\n ValueNode,\n} from 'graphql';\n\nimport { invariant, InvariantError } from 'ts-invariant';\n\nimport { assign } from './util/assign';\n\nimport { valueToObjectRepresentation, JsonValue } from './storeUtils';\n\nexport function getMutationDefinition(\n doc: DocumentNode,\n): OperationDefinitionNode {\n checkDocument(doc);\n\n let mutationDef: OperationDefinitionNode | null = doc.definitions.filter(\n definition =>\n definition.kind === 'OperationDefinition' &&\n definition.operation === 'mutation',\n )[0] as OperationDefinitionNode;\n\n invariant(mutationDef, 'Must contain a mutation definition.');\n\n return mutationDef;\n}\n\n// Checks the document for errors and throws an exception if there is an error.\nexport function checkDocument(doc: DocumentNode) {\n invariant(\n doc && doc.kind === 'Document',\n `Expecting a parsed GraphQL document. Perhaps you need to wrap the query \\\nstring in a \"gql\" tag? http://docs.apollostack.com/apollo-client/core.html#gql`,\n );\n\n const operations = doc.definitions\n .filter(d => d.kind !== 'FragmentDefinition')\n .map(definition => {\n if (definition.kind !== 'OperationDefinition') {\n throw new InvariantError(\n `Schema type definitions not allowed in queries. Found: \"${\n definition.kind\n }\"`,\n );\n }\n return definition;\n });\n\n invariant(\n operations.length <= 1,\n `Ambiguous GraphQL document: contains ${operations.length} operations`,\n );\n\n return doc;\n}\n\nexport function getOperationDefinition(\n doc: DocumentNode,\n): OperationDefinitionNode | undefined {\n checkDocument(doc);\n return doc.definitions.filter(\n definition => definition.kind === 'OperationDefinition',\n )[0] as OperationDefinitionNode;\n}\n\nexport function getOperationDefinitionOrDie(\n document: DocumentNode,\n): OperationDefinitionNode {\n const def = getOperationDefinition(document);\n invariant(def, `GraphQL document is missing an operation`);\n return def;\n}\n\nexport function getOperationName(doc: DocumentNode): string | null {\n return (\n doc.definitions\n .filter(\n definition =>\n definition.kind === 'OperationDefinition' && definition.name,\n )\n .map((x: OperationDefinitionNode) => x.name.value)[0] || null\n );\n}\n\n// Returns the FragmentDefinitions from a particular document as an array\nexport function getFragmentDefinitions(\n doc: DocumentNode,\n): FragmentDefinitionNode[] {\n return doc.definitions.filter(\n definition => definition.kind === 'FragmentDefinition',\n ) as FragmentDefinitionNode[];\n}\n\nexport function getQueryDefinition(doc: DocumentNode): OperationDefinitionNode {\n const queryDef = getOperationDefinition(doc) as OperationDefinitionNode;\n\n invariant(\n queryDef && queryDef.operation === 'query',\n 'Must contain a query definition.',\n );\n\n return queryDef;\n}\n\nexport function getFragmentDefinition(\n doc: DocumentNode,\n): FragmentDefinitionNode {\n invariant(\n doc.kind === 'Document',\n `Expecting a parsed GraphQL document. Perhaps you need to wrap the query \\\nstring in a \"gql\" tag? http://docs.apollostack.com/apollo-client/core.html#gql`,\n );\n\n invariant(\n doc.definitions.length <= 1,\n 'Fragment must have exactly one definition.',\n );\n\n const fragmentDef = doc.definitions[0] as FragmentDefinitionNode;\n\n invariant(\n fragmentDef.kind === 'FragmentDefinition',\n 'Must be a fragment definition.',\n );\n\n return fragmentDef as FragmentDefinitionNode;\n}\n\n/**\n * Returns the first operation definition found in this document.\n * If no operation definition is found, the first fragment definition will be returned.\n * If no definitions are found, an error will be thrown.\n */\nexport function getMainDefinition(\n queryDoc: DocumentNode,\n): OperationDefinitionNode | FragmentDefinitionNode {\n checkDocument(queryDoc);\n\n let fragmentDefinition;\n\n for (let definition of queryDoc.definitions) {\n if (definition.kind === 'OperationDefinition') {\n const operation = (definition as OperationDefinitionNode).operation;\n if (\n operation === 'query' ||\n operation === 'mutation' ||\n operation === 'subscription'\n ) {\n return definition as OperationDefinitionNode;\n }\n }\n if (definition.kind === 'FragmentDefinition' && !fragmentDefinition) {\n // we do this because we want to allow multiple fragment definitions\n // to precede an operation definition.\n fragmentDefinition = definition as FragmentDefinitionNode;\n }\n }\n\n if (fragmentDefinition) {\n return fragmentDefinition;\n }\n\n throw new InvariantError(\n 'Expected a parsed GraphQL query with a query, mutation, subscription, or a fragment.',\n );\n}\n\n/**\n * This is an interface that describes a map from fragment names to fragment definitions.\n */\nexport interface FragmentMap {\n [fragmentName: string]: FragmentDefinitionNode;\n}\n\n// Utility function that takes a list of fragment definitions and makes a hash out of them\n// that maps the name of the fragment to the fragment definition.\nexport function createFragmentMap(\n fragments: FragmentDefinitionNode[] = [],\n): FragmentMap {\n const symTable: FragmentMap = {};\n fragments.forEach(fragment => {\n symTable[fragment.name.value] = fragment;\n });\n\n return symTable;\n}\n\nexport function getDefaultValues(\n definition: OperationDefinitionNode | undefined,\n): { [key: string]: JsonValue } {\n if (\n definition &&\n definition.variableDefinitions &&\n definition.variableDefinitions.length\n ) {\n const defaultValues = definition.variableDefinitions\n .filter(({ defaultValue }) => defaultValue)\n .map(\n ({ variable, defaultValue }): { [key: string]: JsonValue } => {\n const defaultValueObj: { [key: string]: JsonValue } = {};\n valueToObjectRepresentation(\n defaultValueObj,\n variable.name,\n defaultValue as ValueNode,\n );\n\n return defaultValueObj;\n },\n );\n\n return assign({}, ...defaultValues);\n }\n\n return {};\n}\n\n/**\n * Returns the names of all variables declared by the operation.\n */\nexport function variablesInOperation(\n operation: OperationDefinitionNode,\n): Set {\n const names = new Set();\n if (operation.variableDefinitions) {\n for (const definition of operation.variableDefinitions) {\n names.add(definition.variable.name.value);\n }\n }\n\n return names;\n}\n","export function filterInPlace(\n array: T[],\n test: (elem: T) => boolean,\n context?: any,\n): T[] {\n let target = 0;\n array.forEach(function (elem, i) {\n if (test.call(this, elem, i, array)) {\n array[target++] = elem;\n }\n }, context);\n array.length = target;\n return array;\n}\n","import {\n DocumentNode,\n SelectionNode,\n SelectionSetNode,\n OperationDefinitionNode,\n FieldNode,\n DirectiveNode,\n FragmentDefinitionNode,\n ArgumentNode,\n FragmentSpreadNode,\n VariableDefinitionNode,\n VariableNode,\n} from 'graphql';\nimport { visit } from 'graphql/language/visitor';\n\nimport {\n checkDocument,\n getOperationDefinition,\n getFragmentDefinition,\n getFragmentDefinitions,\n createFragmentMap,\n FragmentMap,\n getMainDefinition,\n} from './getFromAST';\nimport { filterInPlace } from './util/filterInPlace';\nimport { invariant } from 'ts-invariant';\nimport { isField, isInlineFragment } from './storeUtils';\n\nexport type RemoveNodeConfig = {\n name?: string;\n test?: (node: N) => boolean;\n remove?: boolean;\n};\n\nexport type GetNodeConfig = {\n name?: string;\n test?: (node: N) => boolean;\n};\n\nexport type RemoveDirectiveConfig = RemoveNodeConfig;\nexport type GetDirectiveConfig = GetNodeConfig;\nexport type RemoveArgumentsConfig = RemoveNodeConfig;\nexport type GetFragmentSpreadConfig = GetNodeConfig;\nexport type RemoveFragmentSpreadConfig = RemoveNodeConfig;\nexport type RemoveFragmentDefinitionConfig = RemoveNodeConfig<\n FragmentDefinitionNode\n>;\nexport type RemoveVariableDefinitionConfig = RemoveNodeConfig<\n VariableDefinitionNode\n>;\n\nconst TYPENAME_FIELD: FieldNode = {\n kind: 'Field',\n name: {\n kind: 'Name',\n value: '__typename',\n },\n};\n\nfunction isEmpty(\n op: OperationDefinitionNode | FragmentDefinitionNode,\n fragments: FragmentMap,\n): boolean {\n return op.selectionSet.selections.every(\n selection =>\n selection.kind === 'FragmentSpread' &&\n isEmpty(fragments[selection.name.value], fragments),\n );\n}\n\nfunction nullIfDocIsEmpty(doc: DocumentNode) {\n return isEmpty(\n getOperationDefinition(doc) || getFragmentDefinition(doc),\n createFragmentMap(getFragmentDefinitions(doc)),\n )\n ? null\n : doc;\n}\n\nfunction getDirectiveMatcher(\n directives: (RemoveDirectiveConfig | GetDirectiveConfig)[],\n) {\n return function directiveMatcher(directive: DirectiveNode) {\n return directives.some(\n dir =>\n (dir.name && dir.name === directive.name.value) ||\n (dir.test && dir.test(directive)),\n );\n };\n}\n\nexport function removeDirectivesFromDocument(\n directives: RemoveDirectiveConfig[],\n doc: DocumentNode,\n): DocumentNode | null {\n const variablesInUse: Record = Object.create(null);\n let variablesToRemove: RemoveArgumentsConfig[] = [];\n\n const fragmentSpreadsInUse: Record = Object.create(null);\n let fragmentSpreadsToRemove: RemoveFragmentSpreadConfig[] = [];\n\n let modifiedDoc = nullIfDocIsEmpty(\n visit(doc, {\n Variable: {\n enter(node, _key, parent) {\n // Store each variable that's referenced as part of an argument\n // (excluding operation definition variables), so we know which\n // variables are being used. If we later want to remove a variable\n // we'll fist check to see if it's being used, before continuing with\n // the removal.\n if (\n (parent as VariableDefinitionNode).kind !== 'VariableDefinition'\n ) {\n variablesInUse[node.name.value] = true;\n }\n },\n },\n\n Field: {\n enter(node) {\n if (directives && node.directives) {\n // If `remove` is set to true for a directive, and a directive match\n // is found for a field, remove the field as well.\n const shouldRemoveField = directives.some(\n directive => directive.remove,\n );\n\n if (\n shouldRemoveField &&\n node.directives &&\n node.directives.some(getDirectiveMatcher(directives))\n ) {\n if (node.arguments) {\n // Store field argument variables so they can be removed\n // from the operation definition.\n node.arguments.forEach(arg => {\n if (arg.value.kind === 'Variable') {\n variablesToRemove.push({\n name: (arg.value as VariableNode).name.value,\n });\n }\n });\n }\n\n if (node.selectionSet) {\n // Store fragment spread names so they can be removed from the\n // docuemnt.\n getAllFragmentSpreadsFromSelectionSet(node.selectionSet).forEach(\n frag => {\n fragmentSpreadsToRemove.push({\n name: frag.name.value,\n });\n },\n );\n }\n\n // Remove the field.\n return null;\n }\n }\n },\n },\n\n FragmentSpread: {\n enter(node) {\n // Keep track of referenced fragment spreads. This is used to\n // determine if top level fragment definitions should be removed.\n fragmentSpreadsInUse[node.name.value] = true;\n },\n },\n\n Directive: {\n enter(node) {\n // If a matching directive is found, remove it.\n if (getDirectiveMatcher(directives)(node)) {\n return null;\n }\n },\n },\n }),\n );\n\n // If we've removed fields with arguments, make sure the associated\n // variables are also removed from the rest of the document, as long as they\n // aren't being used elsewhere.\n if (\n modifiedDoc &&\n filterInPlace(variablesToRemove, v => !variablesInUse[v.name]).length\n ) {\n modifiedDoc = removeArgumentsFromDocument(variablesToRemove, modifiedDoc);\n }\n\n // If we've removed selection sets with fragment spreads, make sure the\n // associated fragment definitions are also removed from the rest of the\n // document, as long as they aren't being used elsewhere.\n if (\n modifiedDoc &&\n filterInPlace(fragmentSpreadsToRemove, fs => !fragmentSpreadsInUse[fs.name])\n .length\n ) {\n modifiedDoc = removeFragmentSpreadFromDocument(\n fragmentSpreadsToRemove,\n modifiedDoc,\n );\n }\n\n return modifiedDoc;\n}\n\nexport function addTypenameToDocument(doc: DocumentNode): DocumentNode {\n return visit(checkDocument(doc), {\n SelectionSet: {\n enter(node, _key, parent) {\n // Don't add __typename to OperationDefinitions.\n if (\n parent &&\n (parent as OperationDefinitionNode).kind === 'OperationDefinition'\n ) {\n return;\n }\n\n // No changes if no selections.\n const { selections } = node;\n if (!selections) {\n return;\n }\n\n // If selections already have a __typename, or are part of an\n // introspection query, do nothing.\n const skip = selections.some(selection => {\n return (\n isField(selection) &&\n (selection.name.value === '__typename' ||\n selection.name.value.lastIndexOf('__', 0) === 0)\n );\n });\n if (skip) {\n return;\n }\n\n // If this SelectionSet is @export-ed as an input variable, it should\n // not have a __typename field (see issue #4691).\n const field = parent as FieldNode;\n if (\n isField(field) &&\n field.directives &&\n field.directives.some(d => d.name.value === 'export')\n ) {\n return;\n }\n\n // Create and return a new SelectionSet with a __typename Field.\n return {\n ...node,\n selections: [...selections, TYPENAME_FIELD],\n };\n },\n },\n });\n}\n\nconst connectionRemoveConfig = {\n test: (directive: DirectiveNode) => {\n const willRemove = directive.name.value === 'connection';\n if (willRemove) {\n if (\n !directive.arguments ||\n !directive.arguments.some(arg => arg.name.value === 'key')\n ) {\n invariant.warn(\n 'Removing an @connection directive even though it does not have a key. ' +\n 'You may want to use the key parameter to specify a store key.',\n );\n }\n }\n\n return willRemove;\n },\n};\n\nexport function removeConnectionDirectiveFromDocument(doc: DocumentNode) {\n return removeDirectivesFromDocument(\n [connectionRemoveConfig],\n checkDocument(doc),\n );\n}\n\nfunction hasDirectivesInSelectionSet(\n directives: GetDirectiveConfig[],\n selectionSet: SelectionSetNode,\n nestedCheck = true,\n): boolean {\n return (\n selectionSet &&\n selectionSet.selections &&\n selectionSet.selections.some(selection =>\n hasDirectivesInSelection(directives, selection, nestedCheck),\n )\n );\n}\n\nfunction hasDirectivesInSelection(\n directives: GetDirectiveConfig[],\n selection: SelectionNode,\n nestedCheck = true,\n): boolean {\n if (!isField(selection)) {\n return true;\n }\n\n if (!selection.directives) {\n return false;\n }\n\n return (\n selection.directives.some(getDirectiveMatcher(directives)) ||\n (nestedCheck &&\n hasDirectivesInSelectionSet(\n directives,\n selection.selectionSet,\n nestedCheck,\n ))\n );\n}\n\nexport function getDirectivesFromDocument(\n directives: GetDirectiveConfig[],\n doc: DocumentNode,\n): DocumentNode {\n checkDocument(doc);\n\n let parentPath: string;\n\n return nullIfDocIsEmpty(\n visit(doc, {\n SelectionSet: {\n enter(node, _key, _parent, path) {\n const currentPath = path.join('-');\n\n if (\n !parentPath ||\n currentPath === parentPath ||\n !currentPath.startsWith(parentPath)\n ) {\n if (node.selections) {\n const selectionsWithDirectives = node.selections.filter(\n selection => hasDirectivesInSelection(directives, selection),\n );\n\n if (hasDirectivesInSelectionSet(directives, node, false)) {\n parentPath = currentPath;\n }\n\n return {\n ...node,\n selections: selectionsWithDirectives,\n };\n } else {\n return null;\n }\n }\n },\n },\n }),\n );\n}\n\nfunction getArgumentMatcher(config: RemoveArgumentsConfig[]) {\n return function argumentMatcher(argument: ArgumentNode) {\n return config.some(\n (aConfig: RemoveArgumentsConfig) =>\n argument.value &&\n argument.value.kind === 'Variable' &&\n argument.value.name &&\n (aConfig.name === argument.value.name.value ||\n (aConfig.test && aConfig.test(argument))),\n );\n };\n}\n\nexport function removeArgumentsFromDocument(\n config: RemoveArgumentsConfig[],\n doc: DocumentNode,\n): DocumentNode {\n const argMatcher = getArgumentMatcher(config);\n\n return nullIfDocIsEmpty(\n visit(doc, {\n OperationDefinition: {\n enter(node) {\n return {\n ...node,\n // Remove matching top level variables definitions.\n variableDefinitions: node.variableDefinitions.filter(\n varDef =>\n !config.some(arg => arg.name === varDef.variable.name.value),\n ),\n };\n },\n },\n\n Field: {\n enter(node) {\n // If `remove` is set to true for an argument, and an argument match\n // is found for a field, remove the field as well.\n const shouldRemoveField = config.some(argConfig => argConfig.remove);\n\n if (shouldRemoveField) {\n let argMatchCount = 0;\n node.arguments.forEach(arg => {\n if (argMatcher(arg)) {\n argMatchCount += 1;\n }\n });\n if (argMatchCount === 1) {\n return null;\n }\n }\n },\n },\n\n Argument: {\n enter(node) {\n // Remove all matching arguments.\n if (argMatcher(node)) {\n return null;\n }\n },\n },\n }),\n );\n}\n\nexport function removeFragmentSpreadFromDocument(\n config: RemoveFragmentSpreadConfig[],\n doc: DocumentNode,\n): DocumentNode {\n function enter(\n node: FragmentSpreadNode | FragmentDefinitionNode,\n ): null | void {\n if (config.some(def => def.name === node.name.value)) {\n return null;\n }\n }\n\n return nullIfDocIsEmpty(\n visit(doc, {\n FragmentSpread: { enter },\n FragmentDefinition: { enter },\n }),\n );\n}\n\nfunction getAllFragmentSpreadsFromSelectionSet(\n selectionSet: SelectionSetNode,\n): FragmentSpreadNode[] {\n const allFragments: FragmentSpreadNode[] = [];\n\n selectionSet.selections.forEach(selection => {\n if (\n (isField(selection) || isInlineFragment(selection)) &&\n selection.selectionSet\n ) {\n getAllFragmentSpreadsFromSelectionSet(selection.selectionSet).forEach(\n frag => allFragments.push(frag),\n );\n } else if (selection.kind === 'FragmentSpread') {\n allFragments.push(selection);\n }\n });\n\n return allFragments;\n}\n\n// If the incoming document is a query, return it as is. Otherwise, build a\n// new document containing a query operation based on the selection set\n// of the previous main operation.\nexport function buildQueryFromSelectionSet(\n document: DocumentNode,\n): DocumentNode {\n const definition = getMainDefinition(document);\n const definitionOperation = (definition).operation;\n\n if (definitionOperation === 'query') {\n // Already a query, so return the existing document.\n return document;\n }\n\n // Build a new query using the selection set of the main operation.\n const modifiedDoc = visit(document, {\n OperationDefinition: {\n enter(node) {\n return {\n ...node,\n operation: 'query',\n };\n },\n },\n });\n return modifiedDoc;\n}\n\n// Remove fields / selection sets that include an @client directive.\nexport function removeClientSetsFromDocument(\n document: DocumentNode,\n): DocumentNode | null {\n checkDocument(document);\n\n let modifiedDoc = removeDirectivesFromDocument(\n [\n {\n test: (directive: DirectiveNode) => directive.name.value === 'client',\n remove: true,\n },\n ],\n document,\n );\n\n // After a fragment definition has had its @client related document\n // sets removed, if the only field it has left is a __typename field,\n // remove the entire fragment operation to prevent it from being fired\n // on the server.\n if (modifiedDoc) {\n modifiedDoc = visit(modifiedDoc, {\n FragmentDefinition: {\n enter(node) {\n if (node.selectionSet) {\n const isTypenameOnly = node.selectionSet.selections.every(\n selection =>\n isField(selection) && selection.name.value === '__typename',\n );\n if (isTypenameOnly) {\n return null;\n }\n }\n },\n },\n });\n }\n\n return modifiedDoc;\n}\n","export const canUseWeakMap = typeof WeakMap === 'function' && !(\n typeof navigator === 'object' &&\n navigator.product === 'ReactNative'\n);\n","const { toString } = Object.prototype;\n\n/**\n * Deeply clones a value to create a new instance.\n */\nexport function cloneDeep(value: T): T {\n return cloneDeepHelper(value, new Map());\n}\n\nfunction cloneDeepHelper(val: T, seen: Map): T {\n switch (toString.call(val)) {\n case \"[object Array]\": {\n if (seen.has(val)) return seen.get(val);\n const copy: T & any[] = (val as any).slice(0);\n seen.set(val, copy);\n copy.forEach(function (child, i) {\n copy[i] = cloneDeepHelper(child, seen);\n });\n return copy;\n }\n\n case \"[object Object]\": {\n if (seen.has(val)) return seen.get(val);\n // High fidelity polyfills of Object.create and Object.getPrototypeOf are\n // possible in all JS environments, so we will assume they exist/work.\n const copy = Object.create(Object.getPrototypeOf(val));\n seen.set(val, copy);\n Object.keys(val).forEach(key => {\n copy[key] = cloneDeepHelper((val as any)[key], seen);\n });\n return copy;\n }\n\n default:\n return val;\n }\n}\n","export function getEnv(): string | undefined {\n if (typeof process !== 'undefined' && process.env.NODE_ENV) {\n return process.env.NODE_ENV;\n }\n\n // default environment\n return 'development';\n}\n\nexport function isEnv(env: string): boolean {\n return getEnv() === env;\n}\n\nexport function isProduction(): boolean {\n return isEnv('production') === true;\n}\n\nexport function isDevelopment(): boolean {\n return isEnv('development') === true;\n}\n\nexport function isTest(): boolean {\n return isEnv('test') === true;\n}\n","import { ExecutionResult } from 'graphql';\n\nexport function tryFunctionOrLogError(f: Function) {\n try {\n return f();\n } catch (e) {\n if (console.error) {\n console.error(e);\n }\n }\n}\n\nexport function graphQLResultHasError(result: ExecutionResult) {\n return result.errors && result.errors.length;\n}\n","import { isDevelopment, isTest } from './environment';\n\n// Taken (mostly) from https://github.com/substack/deep-freeze to avoid\n// import hassles with rollup.\nfunction deepFreeze(o: any) {\n Object.freeze(o);\n\n Object.getOwnPropertyNames(o).forEach(function(prop) {\n if (\n o[prop] !== null &&\n (typeof o[prop] === 'object' || typeof o[prop] === 'function') &&\n !Object.isFrozen(o[prop])\n ) {\n deepFreeze(o[prop]);\n }\n });\n\n return o;\n}\n\nexport function maybeDeepFreeze(obj: any) {\n if (isDevelopment() || isTest()) {\n // Polyfilled Symbols potentially cause infinite / very deep recursion while deep freezing\n // which is known to crash IE11 (https://github.com/apollographql/apollo-client/issues/3043).\n const symbolIsPolyfilled =\n typeof Symbol === 'function' && typeof Symbol('') === 'string';\n\n if (!symbolIsPolyfilled) {\n return deepFreeze(obj);\n }\n }\n return obj;\n}\n","const { hasOwnProperty } = Object.prototype;\n\n// These mergeDeep and mergeDeepArray utilities merge any number of objects\n// together, sharing as much memory as possible with the source objects, while\n// remaining careful to avoid modifying any source objects.\n\n// Logically, the return type of mergeDeep should be the intersection of\n// all the argument types. The binary call signature is by far the most\n// common, but we support 0- through 5-ary as well. After that, the\n// resulting type is just the inferred array element type. Note to nerds:\n// there is a more clever way of doing this that converts the tuple type\n// first to a union type (easy enough: T[number]) and then converts the\n// union to an intersection type using distributive conditional type\n// inference, but that approach has several fatal flaws (boolean becomes\n// true & false, and the inferred type ends up as unknown in many cases),\n// in addition to being nearly impossible to explain/understand.\nexport type TupleToIntersection =\n T extends [infer A] ? A :\n T extends [infer A, infer B] ? A & B :\n T extends [infer A, infer B, infer C] ? A & B & C :\n T extends [infer A, infer B, infer C, infer D] ? A & B & C & D :\n T extends [infer A, infer B, infer C, infer D, infer E] ? A & B & C & D & E :\n T extends (infer U)[] ? U : any;\n\nexport function mergeDeep(\n ...sources: T\n): TupleToIntersection {\n return mergeDeepArray(sources);\n}\n\n// In almost any situation where you could succeed in getting the\n// TypeScript compiler to infer a tuple type for the sources array, you\n// could just use mergeDeep instead of mergeDeepArray, so instead of\n// trying to convert T[] to an intersection type we just infer the array\n// element type, which works perfectly when the sources array has a\n// consistent element type.\nexport function mergeDeepArray(sources: T[]): T {\n let target = sources[0] || {} as T;\n const count = sources.length;\n if (count > 1) {\n const pastCopies: any[] = [];\n target = shallowCopyForMerge(target, pastCopies);\n for (let i = 1; i < count; ++i) {\n target = mergeHelper(target, sources[i], pastCopies);\n }\n }\n return target;\n}\n\nfunction isObject(obj: any): obj is Record {\n return obj !== null && typeof obj === 'object';\n}\n\nfunction mergeHelper(\n target: any,\n source: any,\n pastCopies: any[],\n) {\n if (isObject(source) && isObject(target)) {\n // In case the target has been frozen, make an extensible copy so that\n // we can merge properties into the copy.\n if (Object.isExtensible && !Object.isExtensible(target)) {\n target = shallowCopyForMerge(target, pastCopies);\n }\n\n Object.keys(source).forEach(sourceKey => {\n const sourceValue = source[sourceKey];\n if (hasOwnProperty.call(target, sourceKey)) {\n const targetValue = target[sourceKey];\n if (sourceValue !== targetValue) {\n // When there is a key collision, we need to make a shallow copy of\n // target[sourceKey] so the merge does not modify any source objects.\n // To avoid making unnecessary copies, we use a simple array to track\n // past copies, since it's safe to modify copies created earlier in\n // the merge. We use an array for pastCopies instead of a Map or Set,\n // since the number of copies should be relatively small, and some\n // Map/Set polyfills modify their keys.\n target[sourceKey] = mergeHelper(\n shallowCopyForMerge(targetValue, pastCopies),\n sourceValue,\n pastCopies,\n );\n }\n } else {\n // If there is no collision, the target can safely share memory with\n // the source, and the recursion can terminate here.\n target[sourceKey] = sourceValue;\n }\n });\n\n return target;\n }\n\n // If source (or target) is not an object, let source replace target.\n return source;\n}\n\nfunction shallowCopyForMerge(value: T, pastCopies: any[]): T {\n if (\n value !== null &&\n typeof value === 'object' &&\n pastCopies.indexOf(value) < 0\n ) {\n if (Array.isArray(value)) {\n value = (value as any).slice(0);\n } else {\n value = {\n __proto__: Object.getPrototypeOf(value),\n ...value,\n };\n }\n pastCopies.push(value);\n }\n return value;\n}\n","import { isProduction, isTest } from './environment';\n\nconst haveWarned = Object.create({});\n\n/**\n * Print a warning only once in development.\n * In production no warnings are printed.\n * In test all warnings are printed.\n *\n * @param msg The warning message\n * @param type warn or error (will call console.warn or console.error)\n */\nexport function warnOnceInDevelopment(msg: string, type = 'warn') {\n if (!isProduction() && !haveWarned[msg]) {\n if (!isTest()) {\n haveWarned[msg] = true;\n }\n if (type === 'error') {\n console.error(msg);\n } else {\n console.warn(msg);\n }\n }\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\nexport default function createSvgIcon(path, displayName) {\n var Component = React.memo(React.forwardRef(function (props, ref) {\n return React.createElement(SvgIcon, _extends({\n ref: ref\n }, props), path);\n }));\n\n if (process.env.NODE_ENV !== 'production') {\n Component.displayName = \"\".concat(displayName, \"Icon\");\n }\n\n Component.muiName = SvgIcon.muiName;\n return Component;\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word a the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: capitalize(string) expects a string argument.\" : _formatMuiErrorMessage(7));\n }\n\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\n\nfunction getPath(obj, path) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n return path.split('.').reduce(function (acc, item) {\n return acc && acc[item] ? acc[item] : null;\n }, obj);\n}\n\nfunction style(options) {\n var prop = options.prop,\n _options$cssProperty = options.cssProperty,\n cssProperty = _options$cssProperty === void 0 ? options.prop : _options$cssProperty,\n themeKey = options.themeKey,\n transform = options.transform;\n\n var fn = function fn(props) {\n if (props[prop] == null) {\n return null;\n }\n\n var propValue = props[prop];\n var theme = props.theme;\n var themeMapping = getPath(theme, themeKey) || {};\n\n var styleFromPropValue = function styleFromPropValue(propValueFinal) {\n var value;\n\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || propValueFinal;\n } else {\n value = getPath(themeMapping, propValueFinal) || propValueFinal;\n\n if (transform) {\n value = transform(value);\n }\n }\n\n if (cssProperty === false) {\n return value;\n }\n\n return _defineProperty({}, cssProperty, value);\n };\n\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n\n fn.propTypes = process.env.NODE_ENV !== 'production' ? _defineProperty({}, prop, responsivePropType) : {};\n fn.filterProps = [prop];\n return fn;\n}\n\nexport default style;","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { PreConstruct } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { _, NumberSequence } from \"../utils\";\nvar compIdSequence = new NumberSequence();\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n function Component(template) {\n var _this = _super.call(this) || this;\n _this.childComponents = [];\n _this.annotatedEventListeners = [];\n // if false, then CSS class \"ag-hidden\" is applied, which sets \"display: none\"\n _this.displayed = true;\n // if false, then CSS class \"ag-invisible\" is applied, which sets \"visibility: hidden\"\n _this.visible = true;\n // unique id for this row component. this is used for getting a reference to the HTML dom.\n // we cannot use the RowNode id as this is not unique (due to animation, old rows can be lying\n // around as we create a new rowComp instance for the same row node).\n _this.compId = compIdSequence.next();\n if (template) {\n _this.setTemplate(template);\n }\n return _this;\n }\n Component.prototype.getCompId = function () {\n return this.compId;\n };\n // for registered components only, eg creates AgCheckbox instance from ag-checkbox HTML tag\n Component.prototype.createChildComponentsFromTags = function (parentNode) {\n var _this = this;\n // we MUST take a copy of the list first, as the 'swapComponentForNode' adds comments into the DOM\n // which messes up the traversal order of the children.\n var childNodeList = _.copyNodeList(parentNode.childNodes);\n childNodeList.forEach(function (childNode) {\n var childComp = _this.getContext().createComponentFromElement(childNode, function (childComp) {\n // copy over all attributes, including css classes, so any attributes user put on the tag\n // wll be carried across\n _this.copyAttributesFromNode(childNode, childComp.getGui());\n });\n if (childComp) {\n if (childComp.addItems && childNode.children.length) {\n _this.createChildComponentsFromTags(childNode);\n // converting from HTMLCollection to Array\n var items = Array.prototype.slice.call(childNode.children);\n childComp.addItems(items);\n }\n // replace the tag (eg ag-checkbox) with the proper HTMLElement (eg 'div') in the dom\n _this.swapComponentForNode(childComp, parentNode, childNode);\n }\n else if (childNode.childNodes) {\n _this.createChildComponentsFromTags(childNode);\n }\n });\n };\n Component.prototype.copyAttributesFromNode = function (source, dest) {\n _.iterateNamedNodeMap(source.attributes, function (name, value) {\n dest.setAttribute(name, value);\n });\n };\n Component.prototype.swapComponentForNode = function (newComponent, parentNode, childNode) {\n var eComponent = newComponent.getGui();\n parentNode.replaceChild(eComponent, childNode);\n parentNode.insertBefore(document.createComment(childNode.nodeName), eComponent);\n this.childComponents.push(newComponent);\n this.swapInComponentForQuerySelectors(newComponent, childNode);\n };\n Component.prototype.swapInComponentForQuerySelectors = function (newComponent, childNode) {\n var thisProto = Object.getPrototypeOf(this);\n var thisNoType = this;\n while (thisProto != null) {\n var metaData = thisProto.__agComponentMetaData;\n var currentProtoName = (thisProto.constructor).name;\n if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {\n metaData[currentProtoName].querySelectors.forEach(function (querySelector) {\n if (thisNoType[querySelector.attributeName] === childNode) {\n thisNoType[querySelector.attributeName] = newComponent;\n }\n });\n }\n thisProto = Object.getPrototypeOf(thisProto);\n }\n };\n Component.prototype.setTemplate = function (template) {\n var eGui = _.loadTemplate(template);\n this.setTemplateFromElement(eGui);\n };\n Component.prototype.setTemplateFromElement = function (element) {\n this.eGui = element;\n this.eGui.__agComponent = this;\n this.addAnnotatedEventListeners();\n this.wireQuerySelectors();\n // context will not be available when user sets template in constructor\n var contextIsAvailable = !!this.getContext();\n if (contextIsAvailable) {\n this.createChildComponentsFromTags(this.getGui());\n }\n };\n Component.prototype.createChildComponentsPreConstruct = function () {\n // ui exists if user sets template in constructor. when this happens, we have to wait for the context\n // to be autoWired first before we can create child components.\n var uiExists = !!this.getGui();\n if (uiExists) {\n this.createChildComponentsFromTags(this.getGui());\n }\n };\n Component.prototype.wireQuerySelectors = function () {\n var _this = this;\n if (!this.eGui) {\n return;\n }\n var thisProto = Object.getPrototypeOf(this);\n var _loop_1 = function () {\n var metaData = thisProto.__agComponentMetaData;\n var currentProtoName = (thisProto.constructor).name;\n if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {\n var thisNoType_1 = this_1;\n metaData[currentProtoName].querySelectors.forEach(function (querySelector) {\n var resultOfQuery = _this.eGui.querySelector(querySelector.querySelector);\n if (resultOfQuery) {\n var backingComponent = resultOfQuery.__agComponent;\n if (backingComponent) {\n thisNoType_1[querySelector.attributeName] = backingComponent;\n }\n else {\n thisNoType_1[querySelector.attributeName] = resultOfQuery;\n }\n }\n else {\n // put debug msg in here if query selector fails???\n }\n });\n }\n thisProto = Object.getPrototypeOf(thisProto);\n };\n var this_1 = this;\n while (thisProto != null) {\n _loop_1();\n }\n };\n Component.prototype.addAnnotatedEventListeners = function () {\n var _this = this;\n this.removeAnnotatedEventListeners();\n if (!this.eGui) {\n return;\n }\n var listenerMethods = this.getAgComponentMetaData('listenerMethods');\n if (_.missingOrEmpty(listenerMethods)) {\n return;\n }\n if (!this.annotatedEventListeners) {\n this.annotatedEventListeners = [];\n }\n listenerMethods.forEach(function (eventListener) {\n var listener = _this[eventListener.methodName].bind(_this);\n _this.eGui.addEventListener(eventListener.eventName, listener);\n _this.annotatedEventListeners.push({ eventName: eventListener.eventName, listener: listener });\n });\n };\n Component.prototype.getAgComponentMetaData = function (key) {\n var res = [];\n var thisProto = Object.getPrototypeOf(this);\n while (thisProto != null) {\n var metaData = thisProto.__agComponentMetaData;\n var currentProtoName = (thisProto.constructor).name;\n // IE does not support Function.prototype.name, so we need to extract\n // the name using a RegEx\n // from: https://matt.scharley.me/2012/03/monkey-patch-name-ie.html\n if (currentProtoName === undefined) {\n var funcNameRegex = /function\\s([^(]{1,})\\(/;\n var results = funcNameRegex.exec(thisProto.constructor.toString());\n if (results && results.length > 1) {\n currentProtoName = results[1].trim();\n }\n }\n if (metaData && metaData[currentProtoName] && metaData[currentProtoName][key]) {\n res = res.concat(metaData[currentProtoName][key]);\n }\n thisProto = Object.getPrototypeOf(thisProto);\n }\n return res;\n };\n Component.prototype.removeAnnotatedEventListeners = function () {\n var _this = this;\n if (!this.annotatedEventListeners || !this.eGui) {\n return;\n }\n this.annotatedEventListeners.forEach(function (eventListener) {\n _this.eGui.removeEventListener(eventListener.eventName, eventListener.listener);\n });\n this.annotatedEventListeners = [];\n };\n Component.prototype.getGui = function () {\n return this.eGui;\n };\n Component.prototype.setParentComponent = function (component) {\n this.parentComponent = component;\n };\n Component.prototype.getParentComponent = function () {\n return this.parentComponent;\n };\n // this method is for older code, that wants to provide the gui element,\n // it is not intended for this to be in ag-Stack\n Component.prototype.setGui = function (eGui) {\n this.eGui = eGui;\n };\n Component.prototype.queryForHtmlElement = function (cssSelector) {\n return this.eGui.querySelector(cssSelector);\n };\n Component.prototype.queryForHtmlInputElement = function (cssSelector) {\n return this.eGui.querySelector(cssSelector);\n };\n Component.prototype.appendChild = function (newChild) {\n if (_.isNodeOrElement(newChild)) {\n this.eGui.appendChild(newChild);\n }\n else {\n var childComponent = newChild;\n this.eGui.appendChild(childComponent.getGui());\n this.childComponents.push(childComponent);\n }\n };\n Component.prototype.addFeature = function (feature, context) {\n this.wireDependentBean(feature, context);\n };\n Component.prototype.isDisplayed = function () {\n return this.displayed;\n };\n Component.prototype.setVisible = function (visible) {\n if (visible !== this.visible) {\n this.visible = visible;\n _.setVisible(this.eGui, visible);\n }\n };\n Component.prototype.setDisplayed = function (displayed) {\n if (displayed !== this.displayed) {\n this.displayed = displayed;\n _.setDisplayed(this.eGui, displayed);\n var event_1 = {\n type: Component.EVENT_DISPLAYED_CHANGED,\n visible: this.displayed\n };\n this.dispatchEvent(event_1);\n }\n };\n Component.prototype.addOrRemoveCssClass = function (className, addOrRemove) {\n _.addOrRemoveCssClass(this.eGui, className, addOrRemove);\n };\n Component.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.childComponents.forEach(function (childComponent) {\n if (childComponent && childComponent.destroy) {\n childComponent.destroy();\n }\n });\n this.childComponents.length = 0;\n this.removeAnnotatedEventListeners();\n };\n Component.prototype.addGuiEventListener = function (event, listener) {\n var _this = this;\n this.getGui().addEventListener(event, listener);\n this.addDestroyFunc(function () { return _this.getGui().removeEventListener(event, listener); });\n };\n Component.prototype.addCssClass = function (className) {\n _.addCssClass(this.getGui(), className);\n };\n Component.prototype.removeCssClass = function (className) {\n _.removeCssClass(this.getGui(), className);\n };\n Component.prototype.getAttribute = function (key) {\n var eGui = this.getGui();\n return eGui ? eGui.getAttribute(key) : null;\n };\n Component.prototype.getRefElement = function (refName) {\n return this.queryForHtmlElement('[ref=\"' + refName + '\"]');\n };\n Component.EVENT_DISPLAYED_CHANGED = 'displayedChanged';\n __decorate([\n PreConstruct\n ], Component.prototype, \"createChildComponentsPreConstruct\", null);\n return Component;\n}(BeanStub));\nexport { Component };\n","const genericMessage = \"Invariant Violation\";\nconst {\n setPrototypeOf = function (obj: any, proto: any) {\n obj.__proto__ = proto;\n return obj;\n },\n} = Object as any;\n\nexport class InvariantError extends Error {\n framesToPop = 1;\n name = genericMessage;\n constructor(message: string | number = genericMessage) {\n super(\n typeof message === \"number\"\n ? `${genericMessage}: ${message} (see https://github.com/apollographql/invariant-packages)`\n : message\n );\n setPrototypeOf(this, InvariantError.prototype);\n }\n}\n\nexport function invariant(condition: any, message?: string | number) {\n if (!condition) {\n throw new InvariantError(message);\n }\n}\n\nfunction wrapConsoleMethod(method: \"warn\" | \"error\") {\n return function () {\n return console[method].apply(console, arguments as any);\n } as (...args: any[]) => void;\n}\n\nexport namespace invariant {\n export const warn = wrapConsoleMethod(\"warn\");\n export const error = wrapConsoleMethod(\"error\");\n}\n\n// Code that uses ts-invariant with rollup-plugin-invariant may want to\n// import this process stub to avoid errors evaluating process.env.NODE_ENV.\n// However, because most ESM-to-CJS compilers will rewrite the process import\n// as tsInvariant.process, which prevents proper replacement by minifiers, we\n// also attempt to define the stub globally when it is not already defined.\nlet processStub: NodeJS.Process = { env: {} } as any;\nexport { processStub as process };\nif (typeof process === \"object\") {\n processStub = process;\n} else try {\n // Using Function to evaluate this assignment in global scope also escapes\n // the strict mode of the current module, thereby allowing the assignment.\n // Inspired by https://github.com/facebook/regenerator/pull/369.\n Function(\"stub\", \"process = stub\")(processStub);\n} catch (atLeastWeTried) {\n // The assignment can fail if a Content Security Policy heavy-handedly\n // forbids Function usage. In those environments, developers should take\n // extra care to replace process.env.NODE_ENV in their production builds,\n // or define an appropriate global.process polyfill.\n}\n\nexport default invariant;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport { resolveToLocation, normalizeToLocation } from \"./utils/locationUtils\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const method = replace ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link\";\nimport { resolveToLocation, normalizeToLocation } from \"./utils/locationUtils\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\",\n activeStyle,\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n const className = isActive\n ? joinClassnames(classNameProp, activeClassName)\n : classNameProp;\n const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n strict: PropTypes.bool,\n style: PropTypes.object\n };\n}\n\nexport default NavLink;\n","import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\n\n/* eslint-disable no-use-before-define */\n\n/**\n * Returns a number whose value is limited to the given range.\n *\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clamp(value) {\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(\"Material-UI: The value provided \".concat(value, \" is out of range [\").concat(min, \", \").concat(max, \"].\"));\n }\n }\n\n return Math.min(Math.max(min, value), max);\n}\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n *\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\n\n\nexport function hexToRgb(color) {\n color = color.substr(1);\n var re = new RegExp(\".{1,\".concat(color.length >= 6 ? 2 : 1, \"}\"), 'g');\n var colors = color.match(re);\n\n if (colors && colors[0].length === 1) {\n colors = colors.map(function (n) {\n return n + n;\n });\n }\n\n return colors ? \"rgb\".concat(colors.length === 4 ? 'a' : '', \"(\").concat(colors.map(function (n, index) {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', '), \")\") : '';\n}\n\nfunction intToHex(int) {\n var hex = int.toString(16);\n return hex.length === 1 ? \"0\".concat(hex) : hex;\n}\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n *\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\n\n\nexport function rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n\n var _decomposeColor = decomposeColor(color),\n values = _decomposeColor.values;\n\n return \"#\".concat(values.map(function (n) {\n return intToHex(n);\n }).join(''));\n}\n/**\n * Converts a color from hsl format to rgb format.\n *\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\n\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n var _color = color,\n values = _color.values;\n var h = values[0];\n var s = values[1] / 100;\n var l = values[2] / 100;\n var a = s * Math.min(l, 1 - l);\n\n var f = function f(n) {\n var k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (n + h / 30) % 12;\n return l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n };\n\n var type = 'rgb';\n var rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n\n return recomposeColor({\n type: type,\n values: rgb\n });\n}\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\n\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n\n var marker = color.indexOf('(');\n var type = color.substring(0, marker);\n\n if (['rgb', 'rgba', 'hsl', 'hsla'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: Unsupported `\".concat(color, \"` color.\\nWe support the following formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla().\") : _formatMuiErrorMessage(3, color));\n }\n\n var values = color.substring(marker + 1, color.length - 1).split(',');\n values = values.map(function (value) {\n return parseFloat(value);\n });\n return {\n type: type,\n values: values\n };\n}\n/**\n * Converts a color object with type and values to a string.\n *\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\n\nexport function recomposeColor(color) {\n var type = color.type;\n var values = color.values;\n\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map(function (n, i) {\n return i < 3 ? parseInt(n, 10) : n;\n });\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = \"\".concat(values[1], \"%\");\n values[2] = \"\".concat(values[2], \"%\");\n }\n\n return \"\".concat(type, \"(\").concat(values.join(', '), \")\");\n}\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\n\nexport function getContrastRatio(foreground, background) {\n var lumA = getLuminance(foreground);\n var lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\n\nexport function getLuminance(color) {\n color = decomposeColor(color);\n var rgb = color.type === 'hsl' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(function (val) {\n val /= 255; // normalized\n\n return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n }); // Truncate at 3 digits\n\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function emphasize(color) {\n var coefficient = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.15;\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\n/**\n * Set the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} value - value to set the alpha channel to in the range 0 -1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function fade(color, value) {\n color = decomposeColor(color);\n value = clamp(value);\n\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n\n color.values[3] = value;\n return recomposeColor(color);\n}\n/**\n * Darkens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n\n return recomposeColor(color);\n}\n/**\n * Lightens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n }\n\n return recomposeColor(color);\n}","export default function chainPropTypes(propType1, propType2) {\n if (process.env.NODE_ENV === 'production') {\n return function () {\n return null;\n };\n }\n\n return function validate() {\n return propType1.apply(void 0, arguments) || propType2.apply(void 0, arguments);\n };\n}","import PropTypes from 'prop-types';\nimport chainPropTypes from './chainPropTypes';\n\nfunction isClassComponent(elementType) {\n // elementType.prototype?.isReactComponent\n var _elementType$prototyp = elementType.prototype,\n prototype = _elementType$prototyp === void 0 ? {} : _elementType$prototyp;\n return Boolean(prototype.isReactComponent);\n}\n\nfunction acceptingRef(props, propName, componentName, location, propFullName) {\n var element = props[propName];\n var safePropName = propFullName || propName;\n\n if (element == null) {\n return null;\n }\n\n var warningHint;\n var elementType = element.type;\n /**\n * Blacklisting instead of whitelisting\n *\n * Blacklisting will miss some components, such as React.Fragment. Those will at least\n * trigger a warning in React.\n * We can't whitelist because there is no safe way to detect React.forwardRef\n * or class components. \"Safe\" means there's no public API.\n *\n */\n\n if (typeof elementType === 'function' && !isClassComponent(elementType)) {\n warningHint = 'Did you accidentally use a plain function component for an element instead?';\n }\n\n if (warningHint !== undefined) {\n return new Error(\"Invalid \".concat(location, \" `\").concat(safePropName, \"` supplied to `\").concat(componentName, \"`. \") + \"Expected an element that can hold a ref. \".concat(warningHint, \" \") + 'For more information see https://material-ui.com/r/caveat-with-refs-guide');\n }\n\n return null;\n}\n\nvar elementAcceptingRef = chainPropTypes(PropTypes.element, acceptingRef);\nelementAcceptingRef.isRequired = chainPropTypes(PropTypes.element.isRequired, acceptingRef);\nexport default elementAcceptingRef;","import * as PropTypes from 'prop-types';\nimport chainPropTypes from './chainPropTypes';\n\nfunction isClassComponent(elementType) {\n // elementType.prototype?.isReactComponent\n var _elementType$prototyp = elementType.prototype,\n prototype = _elementType$prototyp === void 0 ? {} : _elementType$prototyp;\n return Boolean(prototype.isReactComponent);\n}\n\nfunction elementTypeAcceptingRef(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var safePropName = propFullName || propName;\n\n if (propValue == null) {\n return null;\n }\n\n var warningHint;\n /**\n * Blacklisting instead of whitelisting\n *\n * Blacklisting will miss some components, such as React.Fragment. Those will at least\n * trigger a warning in React.\n * We can't whitelist because there is no safe way to detect React.forwardRef\n * or class components. \"Safe\" means there's no public API.\n *\n */\n\n if (typeof propValue === 'function' && !isClassComponent(propValue)) {\n warningHint = 'Did you accidentally provide a plain function component instead?';\n }\n\n if (warningHint !== undefined) {\n return new Error(\"Invalid \".concat(location, \" `\").concat(safePropName, \"` supplied to `\").concat(componentName, \"`. \") + \"Expected an element type that can hold a ref. \".concat(warningHint, \" \") + 'For more information see https://material-ui.com/r/caveat-with-refs-guide');\n }\n\n return null;\n}\n\nexport default chainPropTypes(PropTypes.elementType, elementTypeAcceptingRef);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n// This module is based on https://github.com/airbnb/prop-types-exact repository.\n// However, in order to reduce the number of dependencies and to remove some extra safe checks\n// the module was forked.\n// Only exported for test purposes.\nexport var specialProperty = \"exact-prop: \\u200B\";\nexport default function exactProp(propTypes) {\n if (process.env.NODE_ENV === 'production') {\n return propTypes;\n }\n\n return _extends({}, propTypes, _defineProperty({}, specialProperty, function (props) {\n var unsupportedProps = Object.keys(props).filter(function (prop) {\n return !propTypes.hasOwnProperty(prop);\n });\n\n if (unsupportedProps.length > 0) {\n return new Error(\"The following props are not supported: \".concat(unsupportedProps.map(function (prop) {\n return \"`\".concat(prop, \"`\");\n }).join(', '), \". Please remove them.\"));\n }\n\n return null;\n }));\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { ForwardRef, Memo } from 'react-is'; // Simplified polyfill for IE 11 support\n// https://github.com/JamesMGreene/Function.name/blob/58b314d4a983110c3682f1228f845d39ccca1817/Function.name.js#L3\n\nvar fnNameMatchRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s/]*)\\s*/;\nexport function getFunctionName(fn) {\n var match = \"\".concat(fn).match(fnNameMatchRegex);\n var name = match && match[1];\n return name || '';\n}\n/**\n * @param {function} Component\n * @param {string} fallback\n * @returns {string | undefined}\n */\n\nfunction getFunctionComponentName(Component) {\n var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return Component.displayName || Component.name || getFunctionName(Component) || fallback;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var functionName = getFunctionComponentName(innerType);\n return outerType.displayName || (functionName !== '' ? \"\".concat(wrapperName, \"(\").concat(functionName, \")\") : wrapperName);\n}\n/**\n * cherry-pick from\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n * originally forked from recompose/getDisplayName with added IE 11 support\n *\n * @param {React.ReactType} Component\n * @returns {string | undefined}\n */\n\n\nexport default function getDisplayName(Component) {\n if (Component == null) {\n return undefined;\n }\n\n if (typeof Component === 'string') {\n return Component;\n }\n\n if (typeof Component === 'function') {\n return getFunctionComponentName(Component, 'Component');\n }\n\n if (_typeof(Component) === 'object') {\n switch (Component.$$typeof) {\n case ForwardRef:\n return getWrappedName(Component, Component.render, 'ForwardRef');\n\n case Memo:\n return getWrappedName(Component, Component.type, 'memo');\n\n default:\n return undefined;\n }\n }\n\n return undefined;\n}","export default function HTMLElementType(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n\n var propValue = props[propName];\n var safePropName = propFullName || propName;\n\n if (propValue == null) {\n return null;\n }\n\n if (propValue && propValue.nodeType !== 1) {\n return new Error(\"Invalid \".concat(location, \" `\").concat(safePropName, \"` supplied to `\").concat(componentName, \"`. \") + \"Expected an HTMLElement.\");\n }\n\n return null;\n}","/* eslint-disable */\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nexport default typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();","import PropTypes from 'prop-types';\nvar refType = PropTypes.oneOfType([PropTypes.func, PropTypes.object]);\nexport default refType;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import * as React from 'react';\nimport setRef from './setRef';\nexport default function useForkRef(refA, refB) {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior\n */\n return React.useMemo(function () {\n if (refA == null && refB == null) {\n return null;\n }\n\n return function (refValue) {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { EventService } from \"../eventService\";\nimport { _ } from \"../utils\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { Constants } from \"../constants\";\nimport { ModuleNames } from \"../modules/moduleNames\";\nimport { ModuleRegistry } from \"../modules/moduleRegistry\";\n// Wrapper around a user provide column definition. The grid treats the column definition as ready only.\n// This class contains all the runtime information about a column, plus some logic (the definition has no logic).\n// This class implements both interfaces ColumnGroupChild and OriginalColumnGroupChild as the class can\n// appear as a child of either the original tree or the displayed tree. However the relevant group classes\n// for each type only implements one, as each group can only appear in it's associated tree (eg OriginalColumnGroup\n// can only appear in OriginalColumn tree).\nvar Column = /** @class */ (function () {\n function Column(colDef, userProvidedColDef, colId, primary) {\n this.moving = false;\n this.menuVisible = false;\n this.filterActive = false;\n this.eventService = new EventService();\n this.rowGroupActive = false;\n this.pivotActive = false;\n this.aggregationActive = false;\n this.colDef = colDef;\n this.userProvidedColDef = userProvidedColDef;\n this.visible = !colDef.hide;\n this.sort = colDef.sort;\n this.sortedAt = colDef.sortedAt;\n this.colId = colId;\n this.primary = primary;\n }\n // gets called when user provides an alternative colDef, eg\n Column.prototype.setColDef = function (colDef, userProvidedColDef) {\n this.colDef = colDef;\n this.userProvidedColDef = userProvidedColDef;\n };\n Column.prototype.getUserProvidedColDef = function () {\n return this.userProvidedColDef;\n };\n Column.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n Column.prototype.getParent = function () {\n return this.parent;\n };\n Column.prototype.setOriginalParent = function (originalParent) {\n this.originalParent = originalParent;\n };\n Column.prototype.getOriginalParent = function () {\n return this.originalParent;\n };\n // this is done after constructor as it uses gridOptionsWrapper\n Column.prototype.initialise = function () {\n this.setPinned(this.colDef.pinned);\n var minColWidth = this.gridOptionsWrapper.getMinColWidth();\n var maxColWidth = this.gridOptionsWrapper.getMaxColWidth();\n if (this.colDef.minWidth) {\n this.minWidth = this.colDef.minWidth;\n }\n else {\n this.minWidth = minColWidth;\n }\n if (this.colDef.maxWidth) {\n this.maxWidth = this.colDef.maxWidth;\n }\n else {\n this.maxWidth = maxColWidth;\n }\n this.actualWidth = this.columnUtils.calculateColInitialWidth(this.colDef);\n var suppressDotNotation = this.gridOptionsWrapper.isSuppressFieldDotNotation();\n this.fieldContainsDots = _.exists(this.colDef.field) && this.colDef.field.indexOf('.') >= 0 && !suppressDotNotation;\n this.tooltipFieldContainsDots = _.exists(this.colDef.tooltipField) && this.colDef.tooltipField.indexOf('.') >= 0 && !suppressDotNotation;\n this.validate();\n };\n Column.prototype.isEmptyGroup = function () {\n return false;\n };\n Column.prototype.isRowGroupDisplayed = function (colId) {\n if (_.missing(this.colDef) || _.missing(this.colDef.showRowGroup)) {\n return false;\n }\n var showingAllGroups = this.colDef.showRowGroup === true;\n var showingThisGroup = this.colDef.showRowGroup === colId;\n return showingAllGroups || showingThisGroup;\n };\n Column.prototype.getUniqueId = function () {\n return this.getId();\n };\n Column.prototype.isPrimary = function () {\n return this.primary;\n };\n Column.prototype.isFilterAllowed = function () {\n // filter defined means it's a string, class or true.\n // if its false, null or undefined then it's false.\n var filterDefined = !!this.colDef.filter || !!this.colDef.filterFramework;\n return this.primary && filterDefined;\n };\n Column.prototype.isFieldContainsDots = function () {\n return this.fieldContainsDots;\n };\n Column.prototype.isTooltipFieldContainsDots = function () {\n return this.tooltipFieldContainsDots;\n };\n Column.prototype.validate = function () {\n var colDefAny = this.colDef;\n function warnOnce(msg, key, obj) {\n _.doOnce(function () {\n if (obj) {\n console.warn(msg, obj);\n }\n else {\n _.doOnce(function () { return console.warn(msg); }, key);\n }\n }, key);\n }\n if (!ModuleRegistry.isRegistered(ModuleNames.RowGroupingModule)) {\n var rowGroupingItems = ['enableRowGroup', 'rowGroup', 'rowGroupIndex', 'enablePivot', 'enableValue', 'pivot', 'pivotIndex', 'aggFunc'];\n rowGroupingItems.forEach(function (item) {\n if (_.exists(colDefAny[item])) {\n warnOnce(\"ag-Grid: \" + item + \" is only valid with module Row Grouping, your column definition \"\n + (\"should not have \" + item), 'ColumnRowGroupingMissing' + item);\n }\n });\n }\n if (!ModuleRegistry.isRegistered(ModuleNames.RichSelectModule)) {\n if (this.colDef.cellEditor === 'agRichSelect' || this.colDef.cellEditor === 'agRichSelectCellEditor') {\n warnOnce(\"ag-Grid: \" + this.colDef.cellEditor + \" can only be used with \"\n + (\"module \" + ModuleNames.RichSelectModule), 'ColumnRichSelectMissing');\n }\n }\n if (this.gridOptionsWrapper.isTreeData()) {\n var itemsNotAllowedWithTreeData = ['rowGroup', 'rowGroupIndex', 'pivot', 'pivotIndex'];\n itemsNotAllowedWithTreeData.forEach(function (item) {\n if (_.exists(colDefAny[item])) {\n warnOnce(\"ag-Grid: \" + item + \" is not possible when doing tree data, your \"\n + (\"column definition should not have \" + item), 'TreeDataCannotRowGroup');\n }\n });\n }\n if (_.exists(this.colDef.width) && typeof this.colDef.width !== 'number') {\n warnOnce('ag-Grid: colDef.width should be a number, not ' + typeof this.colDef.width, 'ColumnCheck_asdfawef');\n }\n if (_.get(this, 'colDef.cellRendererParams.restrictToOneGroup', null)) {\n warnOnce('ag-Grid: Since ag-grid 11.0.0 cellRendererParams.restrictToOneGroup is deprecated. You should use showRowGroup', 'ColumnCheck_sksldjf');\n }\n if (_.get(this, 'colDef.cellRendererParams.keyMap', null)) {\n warnOnce('ag-Grid: Since ag-grid 11.0.0 cellRendererParams.keyMap is deprecated. You should use colDef.keyCreator', 'ColumnCheck_ieiruhgdf');\n }\n if (_.get(this, 'colDef.cellRendererParams.keyMap', null)) {\n warnOnce('ag-Grid: Since ag-grid 11.0.0 cellRendererParams.keyMap is deprecated. You should use colDef.keyCreator', 'ColumnCheck_uitolghj');\n }\n if (colDefAny.floatingCellRenderer) {\n warnOnce('ag-Grid: since v11, floatingCellRenderer is now pinnedRowCellRenderer', 'ColumnCheck_soihwewe');\n this.colDef.pinnedRowCellRenderer = colDefAny.floatingCellRenderer;\n }\n if (colDefAny.floatingRendererFramework) {\n warnOnce('ag-Grid: since v11, floatingRendererFramework is now pinnedRowCellRendererFramework', 'ColumnCheck_zdkiouhwer');\n this.colDef.pinnedRowCellRendererFramework = colDefAny.floatingRendererFramework;\n }\n if (colDefAny.floatingRendererParams) {\n console.warn('ag-Grid: since v11, floatingRendererParams is now pinnedRowCellRendererParams', 'ColumnCheck_retiuhjs');\n this.colDef.pinnedRowCellRendererParams = colDefAny.floatingRendererParams;\n }\n if (colDefAny.floatingValueFormatter) {\n warnOnce('ag-Grid: since v11, floatingValueFormatter is now pinnedRowValueFormatter', 'ColumnCheck_qwroeihjdf');\n this.colDef.pinnedRowValueFormatter = colDefAny.floatingValueFormatter;\n }\n if (colDefAny.cellFormatter) {\n warnOnce('ag-Grid: since v12, cellFormatter is now valueFormatter', 'ColumnCheck_eoireknml');\n if (_.missing(this.colDef.valueFormatter)) {\n this.colDef.valueFormatter = colDefAny.cellFormatter;\n }\n }\n if (colDefAny.headerCellTemplate) {\n warnOnce('ag-Grid: since v15, headerCellTemplate is gone, use header component instead.', 'ColumnCheck_eroihxcm');\n }\n if (colDefAny.headerCellRenderer) {\n warnOnce('ag-Grid: since v15, headerCellRenderer is gone, use header component instead.', 'ColumnCheck_terteuh');\n }\n if (colDefAny.volatile) {\n warnOnce('ag-Grid: since v16, colDef.volatile is gone, please check refresh docs on how to refresh specific cells.', 'ColumnCheck_weoihjxcv');\n }\n if (colDefAny.suppressSorting) {\n warnOnce(\"ag-Grid: since v20, colDef.suppressSorting is gone, instead use colDef.sortable=false.\", 'ColumnCheck_43ljrer', this.colDef);\n this.colDef.sortable = false;\n }\n if (colDefAny.suppressFilter) {\n warnOnce(\"ag-Grid: since v20, colDef.suppressFilter is gone, instead use colDef.filter=false.\", 'ColumnCheck_erlkhfdm', this.colDef);\n this.colDef.filter = false;\n }\n if (colDefAny.suppressResize) {\n warnOnce(\"ag-Grid: since v20, colDef.suppressResize is gone, instead use colDef.resizable=false.\", 'ColumnCheck_weoihjxcv', this.colDef);\n this.colDef.resizable = false;\n }\n if (colDefAny.tooltip) {\n warnOnce(\"ag-Grid: since v20.1, colDef.tooltip is gone, instead use colDef.tooltipValueGetter.\", 'ColumnCheck_adslknjwef', this.colDef);\n this.colDef.tooltipValueGetter = colDefAny.tooltip;\n }\n if (colDefAny.suppressToolPanel) {\n warnOnce(\"ag-Grid: since v22, colDef.suppressToolPanel is gone, instead use suppressColumnsToolPanel / suppressFiltersToolPanel.\", 'ColumnCheck_weihjlsjkdf', this.colDef);\n this.colDef.suppressColumnsToolPanel = true;\n }\n };\n Column.prototype.addEventListener = function (eventType, listener) {\n this.eventService.addEventListener(eventType, listener);\n };\n Column.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n Column.prototype.createIsColumnFuncParams = function (rowNode) {\n return {\n node: rowNode,\n data: rowNode.data,\n column: this,\n colDef: this.colDef,\n context: this.gridOptionsWrapper.getContext(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n };\n Column.prototype.isSuppressNavigable = function (rowNode) {\n // if boolean set, then just use it\n if (typeof this.colDef.suppressNavigable === 'boolean') {\n return this.colDef.suppressNavigable;\n }\n // if function, then call the function to find out\n if (typeof this.colDef.suppressNavigable === 'function') {\n var params = this.createIsColumnFuncParams(rowNode);\n var userFunc = this.colDef.suppressNavigable;\n return userFunc(params);\n }\n return false;\n };\n Column.prototype.isCellEditable = function (rowNode) {\n // only allow editing of groups if the user has this option enabled\n if (rowNode.group && !this.gridOptionsWrapper.isEnableGroupEdit()) {\n return false;\n }\n return this.isColumnFunc(rowNode, this.colDef.editable);\n };\n Column.prototype.isRowDrag = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.rowDrag);\n };\n Column.prototype.isDndSource = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.dndSource);\n };\n Column.prototype.isCellCheckboxSelection = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.checkboxSelection);\n };\n Column.prototype.isSuppressPaste = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef ? this.colDef.suppressPaste : null);\n };\n Column.prototype.isResizable = function () {\n return this.colDef.resizable === true;\n };\n Column.prototype.isColumnFunc = function (rowNode, value) {\n // if boolean set, then just use it\n if (typeof value === 'boolean') {\n return value;\n }\n // if function, then call the function to find out\n if (typeof value === 'function') {\n var params = this.createIsColumnFuncParams(rowNode);\n var editableFunc = value;\n return editableFunc(params);\n }\n return false;\n };\n Column.prototype.setMoving = function (moving, source) {\n if (source === void 0) { source = \"api\"; }\n this.moving = moving;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_MOVING_CHANGED, source));\n };\n Column.prototype.createColumnEvent = function (type, source) {\n return {\n api: this.gridApi,\n columnApi: this.columnApi,\n type: type,\n column: this,\n columns: [this],\n source: source\n };\n };\n Column.prototype.isMoving = function () {\n return this.moving;\n };\n Column.prototype.getSort = function () {\n return this.sort;\n };\n Column.prototype.setSort = function (sort, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.sort !== sort) {\n this.sort = sort;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_SORT_CHANGED, source));\n }\n };\n Column.prototype.setMenuVisible = function (visible, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.menuVisible !== visible) {\n this.menuVisible = visible;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_MENU_VISIBLE_CHANGED, source));\n }\n };\n Column.prototype.isMenuVisible = function () {\n return this.menuVisible;\n };\n Column.prototype.isSortAscending = function () {\n return this.sort === Constants.SORT_ASC;\n };\n Column.prototype.isSortDescending = function () {\n return this.sort === Constants.SORT_DESC;\n };\n Column.prototype.isSortNone = function () {\n return _.missing(this.sort);\n };\n Column.prototype.isSorting = function () {\n return _.exists(this.sort);\n };\n Column.prototype.getSortedAt = function () {\n return this.sortedAt;\n };\n Column.prototype.setSortedAt = function (sortedAt) {\n this.sortedAt = sortedAt;\n };\n Column.prototype.setAggFunc = function (aggFunc) {\n this.aggFunc = aggFunc;\n };\n Column.prototype.getAggFunc = function () {\n return this.aggFunc;\n };\n Column.prototype.getLeft = function () {\n return this.left;\n };\n Column.prototype.getOldLeft = function () {\n return this.oldLeft;\n };\n Column.prototype.getRight = function () {\n return this.left + this.actualWidth;\n };\n Column.prototype.setLeft = function (left, source) {\n if (source === void 0) { source = \"api\"; }\n this.oldLeft = this.left;\n if (this.left !== left) {\n this.left = left;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_LEFT_CHANGED, source));\n }\n };\n Column.prototype.isFilterActive = function () {\n return this.filterActive;\n };\n // additionalEventAttributes is used by provided simple floating filter, so it can add 'floatingFilter=true' to the event\n Column.prototype.setFilterActive = function (active, source, additionalEventAttributes) {\n if (source === void 0) { source = \"api\"; }\n if (this.filterActive !== active) {\n this.filterActive = active;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_FILTER_ACTIVE_CHANGED, source));\n }\n var filterChangedEvent = this.createColumnEvent(Column.EVENT_FILTER_CHANGED, source);\n if (additionalEventAttributes) {\n _.mergeDeep(filterChangedEvent, additionalEventAttributes);\n }\n this.eventService.dispatchEvent(filterChangedEvent);\n };\n Column.prototype.setPinned = function (pinned) {\n if (pinned === true || pinned === Constants.PINNED_LEFT) {\n this.pinned = Constants.PINNED_LEFT;\n }\n else if (pinned === Constants.PINNED_RIGHT) {\n this.pinned = Constants.PINNED_RIGHT;\n }\n else {\n this.pinned = null;\n }\n };\n Column.prototype.setFirstRightPinned = function (firstRightPinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.firstRightPinned !== firstRightPinned) {\n this.firstRightPinned = firstRightPinned;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_FIRST_RIGHT_PINNED_CHANGED, source));\n }\n };\n Column.prototype.setLastLeftPinned = function (lastLeftPinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.lastLeftPinned !== lastLeftPinned) {\n this.lastLeftPinned = lastLeftPinned;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_LAST_LEFT_PINNED_CHANGED, source));\n }\n };\n Column.prototype.isFirstRightPinned = function () {\n return this.firstRightPinned;\n };\n Column.prototype.isLastLeftPinned = function () {\n return this.lastLeftPinned;\n };\n Column.prototype.isPinned = function () {\n return this.pinned === Constants.PINNED_LEFT || this.pinned === Constants.PINNED_RIGHT;\n };\n Column.prototype.isPinnedLeft = function () {\n return this.pinned === Constants.PINNED_LEFT;\n };\n Column.prototype.isPinnedRight = function () {\n return this.pinned === Constants.PINNED_RIGHT;\n };\n Column.prototype.getPinned = function () {\n return this.pinned;\n };\n Column.prototype.setVisible = function (visible, source) {\n if (source === void 0) { source = \"api\"; }\n var newValue = visible === true;\n if (this.visible !== newValue) {\n this.visible = newValue;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_VISIBLE_CHANGED, source));\n }\n };\n Column.prototype.isVisible = function () {\n return this.visible;\n };\n Column.prototype.getColDef = function () {\n return this.colDef;\n };\n Column.prototype.getColumnGroupShow = function () {\n return this.colDef.columnGroupShow;\n };\n Column.prototype.getColId = function () {\n return this.colId;\n };\n Column.prototype.getId = function () {\n return this.getColId();\n };\n Column.prototype.getDefinition = function () {\n return this.colDef;\n };\n Column.prototype.getActualWidth = function () {\n return this.actualWidth;\n };\n Column.prototype.createBaseColDefParams = function (rowNode) {\n var params = {\n node: rowNode,\n data: rowNode.data,\n colDef: this.colDef,\n column: this,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n return params;\n };\n Column.prototype.getColSpan = function (rowNode) {\n if (_.missing(this.colDef.colSpan)) {\n return 1;\n }\n var params = this.createBaseColDefParams(rowNode);\n var colSpan = this.colDef.colSpan(params);\n // colSpan must be number equal to or greater than 1\n return Math.max(colSpan, 1);\n };\n Column.prototype.getRowSpan = function (rowNode) {\n if (_.missing(this.colDef.rowSpan)) {\n return 1;\n }\n var params = this.createBaseColDefParams(rowNode);\n var rowSpan = this.colDef.rowSpan(params);\n // rowSpan must be number equal to or greater than 1\n return Math.max(rowSpan, 1);\n };\n Column.prototype.setActualWidth = function (actualWidth, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.actualWidth !== actualWidth) {\n this.actualWidth = actualWidth;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_WIDTH_CHANGED, source));\n }\n };\n Column.prototype.isGreaterThanMax = function (width) {\n if (this.maxWidth) {\n return width > this.maxWidth;\n }\n return false;\n };\n Column.prototype.getMinWidth = function () {\n return this.minWidth;\n };\n Column.prototype.getMaxWidth = function () {\n return this.maxWidth;\n };\n Column.prototype.setMinimum = function (source) {\n if (source === void 0) { source = \"api\"; }\n this.setActualWidth(this.minWidth, source);\n };\n Column.prototype.setRowGroupActive = function (rowGroup, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.rowGroupActive !== rowGroup) {\n this.rowGroupActive = rowGroup;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_ROW_GROUP_CHANGED, source));\n }\n };\n Column.prototype.isRowGroupActive = function () {\n return this.rowGroupActive;\n };\n Column.prototype.setPivotActive = function (pivot, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.pivotActive !== pivot) {\n this.pivotActive = pivot;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_PIVOT_CHANGED, source));\n }\n };\n Column.prototype.isPivotActive = function () {\n return this.pivotActive;\n };\n Column.prototype.isAnyFunctionActive = function () {\n return this.isPivotActive() || this.isRowGroupActive() || this.isValueActive();\n };\n Column.prototype.isAnyFunctionAllowed = function () {\n return this.isAllowPivot() || this.isAllowRowGroup() || this.isAllowValue();\n };\n Column.prototype.setValueActive = function (value, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.aggregationActive !== value) {\n this.aggregationActive = value;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_VALUE_CHANGED, source));\n }\n };\n Column.prototype.isValueActive = function () {\n return this.aggregationActive;\n };\n Column.prototype.isAllowPivot = function () {\n return this.colDef.enablePivot === true;\n };\n Column.prototype.isAllowValue = function () {\n return this.colDef.enableValue === true;\n };\n Column.prototype.isAllowRowGroup = function () {\n return this.colDef.enableRowGroup === true;\n };\n Column.prototype.getMenuTabs = function (defaultValues) {\n var menuTabs = this.getColDef().menuTabs;\n if (menuTabs == null) {\n menuTabs = defaultValues;\n }\n return menuTabs;\n };\n // this used to be needed, as previous version of ag-grid had lockPosition as column state,\n // so couldn't depend on colDef version.\n Column.prototype.isLockPosition = function () {\n console.warn('ag-Grid: since v21, col.isLockPosition() should not be used, please use col.getColDef().lockPosition instead.');\n return this.colDef ? !!this.colDef.lockPosition : false;\n };\n // this used to be needed, as previous version of ag-grid had lockVisible as column state,\n // so couldn't depend on colDef version.\n Column.prototype.isLockVisible = function () {\n console.warn('ag-Grid: since v21, col.isLockVisible() should not be used, please use col.getColDef().lockVisible instead.');\n return this.colDef ? !!this.colDef.lockVisible : false;\n };\n // this used to be needed, as previous version of ag-grid had lockPinned as column state,\n // so couldn't depend on colDef version.\n Column.prototype.isLockPinned = function () {\n console.warn('ag-Grid: since v21, col.isLockPinned() should not be used, please use col.getColDef().lockPinned instead.');\n return this.colDef ? !!this.colDef.lockPinned : false;\n };\n // + renderedHeaderCell - for making header cell transparent when moving\n Column.EVENT_MOVING_CHANGED = 'movingChanged';\n // + renderedCell - changing left position\n Column.EVENT_LEFT_CHANGED = 'leftChanged';\n // + renderedCell - changing width\n Column.EVENT_WIDTH_CHANGED = 'widthChanged';\n // + renderedCell - for changing pinned classes\n Column.EVENT_LAST_LEFT_PINNED_CHANGED = 'lastLeftPinnedChanged';\n Column.EVENT_FIRST_RIGHT_PINNED_CHANGED = 'firstRightPinnedChanged';\n // + renderedColumn - for changing visibility icon\n Column.EVENT_VISIBLE_CHANGED = 'visibleChanged';\n // + every time the filter changes, used in the floating filters\n Column.EVENT_FILTER_CHANGED = 'filterChanged';\n // + renderedHeaderCell - marks the header with filter icon\n Column.EVENT_FILTER_ACTIVE_CHANGED = 'filterActiveChanged';\n // + renderedHeaderCell - marks the header with sort icon\n Column.EVENT_SORT_CHANGED = 'sortChanged';\n Column.EVENT_MENU_VISIBLE_CHANGED = 'menuVisibleChanged';\n // + toolpanel, for gui updates\n Column.EVENT_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n // + toolpanel, for gui updates\n Column.EVENT_PIVOT_CHANGED = 'columnPivotChanged';\n // + toolpanel, for gui updates\n Column.EVENT_VALUE_CHANGED = 'columnValueChanged';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], Column.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnUtils')\n ], Column.prototype, \"columnUtils\", void 0);\n __decorate([\n Autowired('columnApi')\n ], Column.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], Column.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('context')\n ], Column.prototype, \"context\", void 0);\n __decorate([\n PostConstruct\n ], Column.prototype, \"initialise\", null);\n return Column;\n}());\nexport { Column };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { OptionsFactory } from \"./optionsFactory\";\nimport { ProvidedFilter } from \"./providedFilter\";\nimport { _ } from \"../../utils\";\nexport var ConditionPosition;\n(function (ConditionPosition) {\n ConditionPosition[ConditionPosition[\"One\"] = 0] = \"One\";\n ConditionPosition[ConditionPosition[\"Two\"] = 1] = \"Two\";\n})(ConditionPosition || (ConditionPosition = {}));\nvar DEFAULT_TRANSLATIONS = {\n loadingOoo: 'Loading...',\n empty: 'Choose One',\n equals: 'Equals',\n notEqual: 'Not equal',\n lessThan: 'Less than',\n greaterThan: 'Greater than',\n inRange: 'In range',\n lessThanOrEqual: 'Less than or equals',\n greaterThanOrEqual: 'Greater than or equals',\n filterOoo: 'Filter...',\n contains: 'Contains',\n notContains: 'Not contains',\n startsWith: 'Starts with',\n endsWith: 'Ends with',\n searchOoo: 'Search...',\n selectAll: 'Select All',\n applyFilter: 'Apply Filter',\n clearFilter: 'Clear Filter',\n andCondition: 'AND',\n orCondition: 'OR'\n};\n/**\n * Every filter with a dropdown where the user can specify a comparing type against the filter values\n */\nvar SimpleFilter = /** @class */ (function (_super) {\n __extends(SimpleFilter, _super);\n function SimpleFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // returns true if this type requires a 'from' field, eg any filter that requires at least one text value\n SimpleFilter.prototype.showValueFrom = function (type) {\n return !this.doesFilterHaveHiddenInput(type) && type !== SimpleFilter.EMPTY;\n };\n // returns true if this type requires a 'to' field, currently only 'range' returns true\n SimpleFilter.prototype.showValueTo = function (type) {\n return type === SimpleFilter.IN_RANGE;\n };\n // floating filter calls this when user applies filter from floating filter\n SimpleFilter.prototype.onFloatingFilterChanged = function (type, value) {\n this.setValueFromFloatingFilter(value);\n this.setTypeFromFloatingFilter(type);\n this.onUiChanged(true);\n };\n SimpleFilter.prototype.setTypeFromFloatingFilter = function (type) {\n this.eType1.value = type;\n this.eType2.value = null;\n this.eJoinOperatorAnd.checked = true;\n };\n SimpleFilter.prototype.getModelFromUi = function () {\n if (!this.isConditionUiComplete(ConditionPosition.One)) {\n return null;\n }\n if (this.isAllowTwoConditions() && this.isConditionUiComplete(ConditionPosition.Two)) {\n var res = {\n filterType: this.getFilterType(),\n operator: this.getJoinOperator(),\n condition1: this.createCondition(ConditionPosition.One),\n condition2: this.createCondition(ConditionPosition.Two)\n };\n return res;\n }\n else {\n var res = this.createCondition(ConditionPosition.One);\n return res;\n }\n };\n SimpleFilter.prototype.getCondition1Type = function () {\n return this.eType1.value;\n };\n SimpleFilter.prototype.getCondition2Type = function () {\n return this.eType2.value;\n };\n SimpleFilter.prototype.getJoinOperator = function () {\n return this.eJoinOperatorOr.checked ? 'OR' : 'AND';\n };\n SimpleFilter.prototype.areModelsEqual = function (a, b) {\n // both are missing\n if (!a && !b) {\n return true;\n }\n // one is missing, other present\n if ((!a && b) || (a && !b)) {\n return false;\n }\n // one is combined, the other is not\n var aIsSimple = !a.operator;\n var bIsSimple = !b.operator;\n var oneSimpleOneCombined = (!aIsSimple && bIsSimple) || (aIsSimple && !bIsSimple);\n if (oneSimpleOneCombined) {\n return false;\n }\n var res;\n // otherwise both present, so compare\n if (aIsSimple) {\n var aSimple = a;\n var bSimple = b;\n res = this.areSimpleModelsEqual(aSimple, bSimple);\n }\n else {\n var aCombined = a;\n var bCombined = b;\n res = aCombined.operator === bCombined.operator\n && this.areSimpleModelsEqual(aCombined.condition1, bCombined.condition1)\n && this.areSimpleModelsEqual(aCombined.condition2, bCombined.condition2);\n }\n return res;\n };\n SimpleFilter.prototype.setModelIntoUi = function (model) {\n var isCombined = model.operator;\n if (isCombined) {\n var combinedModel = model;\n var orChecked = combinedModel.operator === 'OR';\n this.eJoinOperatorAnd.checked = !orChecked;\n this.eJoinOperatorOr.checked = orChecked;\n this.eType1.value = combinedModel.condition1.type;\n this.eType2.value = combinedModel.condition2.type;\n this.setConditionIntoUi(combinedModel.condition1, ConditionPosition.One);\n this.setConditionIntoUi(combinedModel.condition2, ConditionPosition.Two);\n }\n else {\n var simpleModel = model;\n this.eJoinOperatorAnd.checked = true;\n this.eJoinOperatorOr.checked = false;\n this.eType1.value = simpleModel.type;\n this.eType2.value = this.optionsFactory.getDefaultOption();\n this.setConditionIntoUi(simpleModel, ConditionPosition.One);\n this.setConditionIntoUi(null, ConditionPosition.Two);\n }\n };\n SimpleFilter.prototype.doesFilterPass = function (params) {\n var model = this.getModel();\n var isCombined = model.operator;\n if (isCombined) {\n var combinedModel = model;\n var firstResult = this.individualConditionPasses(params, combinedModel.condition1);\n var secondResult = this.individualConditionPasses(params, combinedModel.condition2);\n if (combinedModel.operator === 'AND') {\n return firstResult && secondResult;\n }\n else {\n return firstResult || secondResult;\n }\n }\n else {\n var simpleModel = model;\n var result = this.individualConditionPasses(params, simpleModel);\n return result;\n }\n };\n SimpleFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.simpleFilterParams = params;\n this.optionsFactory = new OptionsFactory();\n this.optionsFactory.init(params, this.getDefaultFilterOptions());\n this.allowTwoConditions = !params.suppressAndOrCondition;\n this.putOptionsIntoDropdown();\n this.addChangedListeners();\n };\n SimpleFilter.prototype.putOptionsIntoDropdown = function () {\n var _this = this;\n var filterOptions = this.optionsFactory.getFilterOptions();\n filterOptions.forEach(function (option) {\n var createOption = function () {\n var key = (typeof option === 'string') ? option : option.displayKey;\n var localName = _this.translate(key);\n var eOption = document.createElement(\"option\");\n eOption.text = localName;\n eOption.value = key;\n return eOption;\n };\n _this.eType1.add(createOption());\n _this.eType2.add(createOption());\n });\n var readOnly = filterOptions.length <= 1;\n this.eType1.disabled = readOnly;\n this.eType2.disabled = readOnly;\n };\n SimpleFilter.prototype.isAllowTwoConditions = function () {\n return this.allowTwoConditions;\n };\n SimpleFilter.prototype.createBodyTemplate = function () {\n var optionsTemplate1 = \"\";\n var valueTemplate1 = this.createValueTemplate(ConditionPosition.One);\n var optionsTemplate2 = \"\";\n var valueTemplate2 = this.createValueTemplate(ConditionPosition.Two);\n var uniqueGroupId = 'ag-simple-filter-and-or-' + this.getCompId();\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var andOrTemplate = \"
\\n \\n \\n
\";\n var template = optionsTemplate1 + \"\\n \" + valueTemplate1 + \"\\n \" + andOrTemplate + \"\\n \" + optionsTemplate2 + \"\\n \" + valueTemplate2;\n return template;\n };\n SimpleFilter.prototype.updateUiVisibility = function () {\n var firstConditionComplete = this.isConditionUiComplete(ConditionPosition.One);\n var showSecondFilter = this.allowTwoConditions && firstConditionComplete;\n _.setDisplayed(this.eCondition2Body, showSecondFilter);\n _.setDisplayed(this.eType2, showSecondFilter);\n _.setDisplayed(this.eJoinOperatorPanel, showSecondFilter);\n };\n SimpleFilter.prototype.resetUiToDefaults = function () {\n this.eJoinOperatorAnd.checked = true;\n var defaultOption = this.optionsFactory.getDefaultOption();\n this.eType1.value = defaultOption;\n this.eType2.value = defaultOption;\n };\n SimpleFilter.prototype.translate = function (toTranslate) {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var defaultTranslation = DEFAULT_TRANSLATIONS[toTranslate];\n if (!defaultTranslation && this.optionsFactory.getCustomOption(toTranslate)) {\n defaultTranslation = this.optionsFactory.getCustomOption(toTranslate).displayName;\n }\n return translate(toTranslate, defaultTranslation);\n };\n SimpleFilter.prototype.addChangedListeners = function () {\n var _this = this;\n var listener = function () { return _this.onUiChanged(); };\n this.addDestroyableEventListener(this.eType1, \"change\", listener);\n this.addDestroyableEventListener(this.eType2, \"change\", listener);\n this.addDestroyableEventListener(this.eJoinOperatorOr, \"change\", listener);\n this.addDestroyableEventListener(this.eJoinOperatorAnd, \"change\", listener);\n };\n SimpleFilter.prototype.doesFilterHaveHiddenInput = function (filterType) {\n var customFilterOption = this.optionsFactory.getCustomOption(filterType);\n return customFilterOption && customFilterOption.hideFilterInput;\n };\n SimpleFilter.EMPTY = 'empty';\n SimpleFilter.EQUALS = 'equals';\n SimpleFilter.NOT_EQUAL = 'notEqual';\n SimpleFilter.LESS_THAN = 'lessThan';\n SimpleFilter.LESS_THAN_OR_EQUAL = 'lessThanOrEqual';\n SimpleFilter.GREATER_THAN = 'greaterThan';\n SimpleFilter.GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual';\n SimpleFilter.IN_RANGE = 'inRange';\n SimpleFilter.CONTAINS = 'contains';\n SimpleFilter.NOT_CONTAINS = 'notContains';\n SimpleFilter.STARTS_WITH = 'startsWith';\n SimpleFilter.ENDS_WITH = 'endsWith';\n __decorate([\n RefSelector('eOptions1')\n ], SimpleFilter.prototype, \"eType1\", void 0);\n __decorate([\n RefSelector('eOptions2')\n ], SimpleFilter.prototype, \"eType2\", void 0);\n __decorate([\n RefSelector('eJoinOperatorAnd')\n ], SimpleFilter.prototype, \"eJoinOperatorAnd\", void 0);\n __decorate([\n RefSelector('eJoinOperatorOr')\n ], SimpleFilter.prototype, \"eJoinOperatorOr\", void 0);\n __decorate([\n RefSelector('eCondition2Body')\n ], SimpleFilter.prototype, \"eCondition2Body\", void 0);\n __decorate([\n RefSelector('eJoinOperatorPanel')\n ], SimpleFilter.prototype, \"eJoinOperatorPanel\", void 0);\n return SimpleFilter;\n}(ProvidedFilter));\nexport { SimpleFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Qualifier, PostConstruct, Bean, Autowired, PreDestroy } from \"../context/context\";\nimport { _ } from \"../utils\";\nexport var DragSourceType;\n(function (DragSourceType) {\n DragSourceType[DragSourceType[\"ToolPanel\"] = 0] = \"ToolPanel\";\n DragSourceType[DragSourceType[\"HeaderCell\"] = 1] = \"HeaderCell\";\n DragSourceType[DragSourceType[\"RowDrag\"] = 2] = \"RowDrag\";\n})(DragSourceType || (DragSourceType = {}));\nexport var VDirection;\n(function (VDirection) {\n VDirection[VDirection[\"Up\"] = 0] = \"Up\";\n VDirection[VDirection[\"Down\"] = 1] = \"Down\";\n})(VDirection || (VDirection = {}));\nexport var HDirection;\n(function (HDirection) {\n HDirection[HDirection[\"Left\"] = 0] = \"Left\";\n HDirection[HDirection[\"Right\"] = 1] = \"Right\";\n})(HDirection || (HDirection = {}));\nvar DragAndDropService = /** @class */ (function () {\n function DragAndDropService() {\n this.dragSourceAndParamsList = [];\n this.dropTargets = [];\n }\n DragAndDropService_1 = DragAndDropService;\n DragAndDropService.prototype.init = function () {\n this.ePinnedIcon = _.createIcon('columnMovePin', this.gridOptionsWrapper, null);\n this.ePlusIcon = _.createIcon('columnMoveAdd', this.gridOptionsWrapper, null);\n this.eHiddenIcon = _.createIcon('columnMoveHide', this.gridOptionsWrapper, null);\n this.eMoveIcon = _.createIcon('columnMoveMove', this.gridOptionsWrapper, null);\n this.eLeftIcon = _.createIcon('columnMoveLeft', this.gridOptionsWrapper, null);\n this.eRightIcon = _.createIcon('columnMoveRight', this.gridOptionsWrapper, null);\n this.eGroupIcon = _.createIcon('columnMoveGroup', this.gridOptionsWrapper, null);\n this.eAggregateIcon = _.createIcon('columnMoveValue', this.gridOptionsWrapper, null);\n this.ePivotIcon = _.createIcon('columnMovePivot', this.gridOptionsWrapper, null);\n this.eDropNotAllowedIcon = _.createIcon('dropNotAllowed', this.gridOptionsWrapper, null);\n };\n DragAndDropService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('OldToolPanelDragAndDropService');\n };\n DragAndDropService.prototype.addDragSource = function (dragSource, allowTouch) {\n if (allowTouch === void 0) { allowTouch = false; }\n var params = {\n eElement: dragSource.eElement,\n dragStartPixels: dragSource.dragStartPixels,\n onDragStart: this.onDragStart.bind(this, dragSource),\n onDragStop: this.onDragStop.bind(this),\n onDragging: this.onDragging.bind(this)\n };\n this.dragSourceAndParamsList.push({ params: params, dragSource: dragSource });\n this.dragService.addDragSource(params, allowTouch);\n };\n DragAndDropService.prototype.removeDragSource = function (dragSource) {\n var sourceAndParams = _.find(this.dragSourceAndParamsList, function (item) { return item.dragSource === dragSource; });\n if (sourceAndParams) {\n this.dragService.removeDragSource(sourceAndParams.params);\n _.removeFromArray(this.dragSourceAndParamsList, sourceAndParams);\n }\n };\n DragAndDropService.prototype.destroy = function () {\n var _this = this;\n this.dragSourceAndParamsList.forEach(function (sourceAndParams) {\n _this.dragService.removeDragSource(sourceAndParams.params);\n });\n this.dragSourceAndParamsList.length = 0;\n };\n DragAndDropService.prototype.nudge = function () {\n if (this.dragging) {\n this.onDragging(this.eventLastTime, true);\n }\n };\n DragAndDropService.prototype.onDragStart = function (dragSource, mouseEvent) {\n this.dragging = true;\n this.dragSource = dragSource;\n this.eventLastTime = mouseEvent;\n this.dragItem = this.dragSource.dragItemCallback();\n this.lastDropTarget = this.dragSource.dragSourceDropTarget;\n if (this.dragSource.dragStarted) {\n this.dragSource.dragStarted();\n }\n this.createGhost();\n };\n DragAndDropService.prototype.onDragStop = function (mouseEvent) {\n this.eventLastTime = null;\n this.dragging = false;\n if (this.dragSource.dragStopped) {\n this.dragSource.dragStopped();\n }\n if (this.lastDropTarget && this.lastDropTarget.onDragStop) {\n var draggingEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, null, null, false);\n this.lastDropTarget.onDragStop(draggingEvent);\n }\n this.lastDropTarget = null;\n this.dragItem = null;\n this.removeGhost();\n };\n DragAndDropService.prototype.onDragging = function (mouseEvent, fromNudge) {\n var hDirection = this.workOutHDirection(mouseEvent);\n var vDirection = this.workOutVDirection(mouseEvent);\n this.eventLastTime = mouseEvent;\n this.positionGhost(mouseEvent);\n // check if mouseEvent intersects with any of the drop targets\n var dropTarget = _.find(this.dropTargets, this.isMouseOnDropTarget.bind(this, mouseEvent));\n if (dropTarget !== this.lastDropTarget) {\n this.leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge);\n this.enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget = dropTarget;\n }\n else if (dropTarget) {\n var draggingEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragging(draggingEvent);\n }\n };\n DragAndDropService.prototype.enterDragTargetIfExists = function (dropTarget, mouseEvent, hDirection, vDirection, fromNudge) {\n if (!dropTarget) {\n return;\n }\n var dragEnterEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragEnter(dragEnterEvent);\n this.setGhostIcon(dropTarget.getIconName ? dropTarget.getIconName() : null);\n };\n DragAndDropService.prototype.leaveLastTargetIfExists = function (mouseEvent, hDirection, vDirection, fromNudge) {\n if (!this.lastDropTarget) {\n return;\n }\n var dragLeaveEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget.onDragLeave(dragLeaveEvent);\n this.setGhostIcon(null);\n };\n DragAndDropService.prototype.getAllContainersFromDropTarget = function (dropTarget) {\n var containers = [dropTarget.getContainer()];\n var secondaryContainers = dropTarget.getSecondaryContainers ? dropTarget.getSecondaryContainers() : null;\n if (secondaryContainers) {\n containers = containers.concat(secondaryContainers);\n }\n return containers;\n };\n // checks if the mouse is on the drop target. it checks eContainer and eSecondaryContainers\n DragAndDropService.prototype.isMouseOnDropTarget = function (mouseEvent, dropTarget) {\n var allContainers = this.getAllContainersFromDropTarget(dropTarget);\n var mouseOverTarget = false;\n allContainers.forEach(function (eContainer) {\n if (!eContainer) {\n return;\n } // secondary can be missing\n var rect = eContainer.getBoundingClientRect();\n // if element is not visible, then width and height are zero\n if (rect.width === 0 || rect.height === 0) {\n return;\n }\n var horizontalFit = mouseEvent.clientX >= rect.left && mouseEvent.clientX <= rect.right;\n var verticalFit = mouseEvent.clientY >= rect.top && mouseEvent.clientY <= rect.bottom;\n //console.log(`rect.width = ${rect.width} || rect.height = ${rect.height} ## verticalFit = ${verticalFit}, horizontalFit = ${horizontalFit}, `);\n if (horizontalFit && verticalFit) {\n mouseOverTarget = true;\n }\n });\n if (mouseOverTarget) {\n var mouseOverTargetAndInterested = dropTarget.isInterestedIn(this.dragSource.type);\n return mouseOverTargetAndInterested;\n }\n else {\n return false;\n }\n };\n DragAndDropService.prototype.addDropTarget = function (dropTarget) {\n this.dropTargets.push(dropTarget);\n };\n DragAndDropService.prototype.workOutHDirection = function (event) {\n if (this.eventLastTime.clientX > event.clientX) {\n return HDirection.Left;\n }\n else if (this.eventLastTime.clientX < event.clientX) {\n return HDirection.Right;\n }\n else {\n return null;\n }\n };\n DragAndDropService.prototype.workOutVDirection = function (event) {\n if (this.eventLastTime.clientY > event.clientY) {\n return VDirection.Up;\n }\n else if (this.eventLastTime.clientY < event.clientY) {\n return VDirection.Down;\n }\n else {\n return null;\n }\n };\n DragAndDropService.prototype.createDropTargetEvent = function (dropTarget, event, hDirection, vDirection, fromNudge) {\n // localise x and y to the target component\n var rect = dropTarget.getContainer().getBoundingClientRect();\n var x = event.clientX - rect.left;\n var y = event.clientY - rect.top;\n var dropTargetEvent = {\n event: event,\n x: x,\n y: y,\n vDirection: vDirection,\n hDirection: hDirection,\n dragSource: this.dragSource,\n fromNudge: fromNudge,\n dragItem: this.dragItem\n };\n return dropTargetEvent;\n };\n DragAndDropService.prototype.positionGhost = function (event) {\n var ghostRect = this.eGhost.getBoundingClientRect();\n var ghostHeight = ghostRect.height;\n // for some reason, without the '-2', it still overlapped by 1 or 2 pixels, which\n // then brought in scrollbars to the browser. no idea why, but putting in -2 here\n // works around it which is good enough for me.\n var browserWidth = _.getBodyWidth() - 2;\n var browserHeight = _.getBodyHeight() - 2;\n // put ghost vertically in middle of cursor\n var top = event.pageY - (ghostHeight / 2);\n // horizontally, place cursor just right of icon\n var left = event.pageX - 30;\n var usrDocument = this.gridOptionsWrapper.getDocument();\n var windowScrollY = window.pageYOffset || usrDocument.documentElement.scrollTop;\n var windowScrollX = window.pageXOffset || usrDocument.documentElement.scrollLeft;\n // check ghost is not positioned outside of the browser\n if (browserWidth > 0) {\n if ((left + this.eGhost.clientWidth) > (browserWidth + windowScrollX)) {\n left = browserWidth + windowScrollX - this.eGhost.clientWidth;\n }\n }\n if (left < 0) {\n left = 0;\n }\n if (browserHeight > 0) {\n if ((top + this.eGhost.clientHeight) > (browserHeight + windowScrollY)) {\n top = browserHeight + windowScrollY - this.eGhost.clientHeight;\n }\n }\n if (top < 0) {\n top = 0;\n }\n this.eGhost.style.left = left + 'px';\n this.eGhost.style.top = top + 'px';\n };\n DragAndDropService.prototype.removeGhost = function () {\n if (this.eGhost && this.eGhostParent) {\n this.eGhostParent.removeChild(this.eGhost);\n }\n this.eGhost = null;\n };\n DragAndDropService.prototype.createGhost = function () {\n this.eGhost = _.loadTemplate(DragAndDropService_1.GHOST_TEMPLATE);\n var theme = this.environment.getTheme().theme;\n if (theme) {\n _.addCssClass(this.eGhost, theme);\n }\n this.eGhostIcon = this.eGhost.querySelector('.ag-dnd-ghost-icon');\n this.setGhostIcon(null);\n var eText = this.eGhost.querySelector('.ag-dnd-ghost-label');\n eText.innerHTML = _.escape(this.dragSource.dragItemName);\n this.eGhost.style.height = '25px';\n this.eGhost.style.top = '20px';\n this.eGhost.style.left = '20px';\n var usrDocument = this.gridOptionsWrapper.getDocument();\n this.eGhostParent = usrDocument.querySelector('body');\n if (!this.eGhostParent) {\n console.warn('ag-Grid: could not find document body, it is needed for dragging columns');\n }\n else {\n this.eGhostParent.appendChild(this.eGhost);\n }\n };\n DragAndDropService.prototype.setGhostIcon = function (iconName, shake) {\n if (shake === void 0) { shake = false; }\n _.clearElement(this.eGhostIcon);\n var eIcon;\n switch (iconName) {\n case DragAndDropService_1.ICON_ADD:\n eIcon = this.ePlusIcon;\n break;\n case DragAndDropService_1.ICON_PINNED:\n eIcon = this.ePinnedIcon;\n break;\n case DragAndDropService_1.ICON_MOVE:\n eIcon = this.eMoveIcon;\n break;\n case DragAndDropService_1.ICON_LEFT:\n eIcon = this.eLeftIcon;\n break;\n case DragAndDropService_1.ICON_RIGHT:\n eIcon = this.eRightIcon;\n break;\n case DragAndDropService_1.ICON_GROUP:\n eIcon = this.eGroupIcon;\n break;\n case DragAndDropService_1.ICON_AGGREGATE:\n eIcon = this.eAggregateIcon;\n break;\n case DragAndDropService_1.ICON_PIVOT:\n eIcon = this.ePivotIcon;\n break;\n case DragAndDropService_1.ICON_NOT_ALLOWED:\n eIcon = this.eDropNotAllowedIcon;\n break;\n default:\n eIcon = this.eHiddenIcon;\n break;\n }\n this.eGhostIcon.appendChild(eIcon);\n _.addOrRemoveCssClass(this.eGhostIcon, 'ag-shake-left-to-right', shake);\n };\n var DragAndDropService_1;\n DragAndDropService.ICON_PINNED = 'pinned';\n DragAndDropService.ICON_ADD = 'add';\n DragAndDropService.ICON_MOVE = 'move';\n DragAndDropService.ICON_LEFT = 'left';\n DragAndDropService.ICON_RIGHT = 'right';\n DragAndDropService.ICON_GROUP = 'group';\n DragAndDropService.ICON_AGGREGATE = 'aggregate';\n DragAndDropService.ICON_PIVOT = 'pivot';\n DragAndDropService.ICON_NOT_ALLOWED = 'notAllowed';\n DragAndDropService.GHOST_TEMPLATE = '
' +\n ' ' +\n '
' +\n '
' +\n '
';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], DragAndDropService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('dragService')\n ], DragAndDropService.prototype, \"dragService\", void 0);\n __decorate([\n Autowired('environment')\n ], DragAndDropService.prototype, \"environment\", void 0);\n __decorate([\n Autowired('columnController')\n ], DragAndDropService.prototype, \"columnController\", void 0);\n __decorate([\n PostConstruct\n ], DragAndDropService.prototype, \"init\", null);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], DragAndDropService.prototype, \"setBeans\", null);\n __decorate([\n PreDestroy\n ], DragAndDropService.prototype, \"destroy\", null);\n DragAndDropService = DragAndDropService_1 = __decorate([\n Bean('dragAndDropService')\n ], DragAndDropService);\n return DragAndDropService;\n}());\nexport { DragAndDropService };\n","module.exports = require(\"regenerator-runtime\");\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\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};\nimport { _ } from \"./utils\";\nimport { EventService } from \"./eventService\";\nimport { Constants } from \"./constants\";\nimport { ComponentUtil } from \"./components/componentUtil\";\nimport { Autowired, Bean, PostConstruct, PreDestroy, Qualifier } from \"./context/context\";\nimport { PropertyKeys } from \"./propertyKeys\";\nimport { ColDefUtil } from \"./components/colDefUtil\";\nimport { Events } from \"./eventKeys\";\nimport { SideBarDefParser } from \"./entities/sideBar\";\nimport { ModuleNames } from \"./modules/moduleNames\";\nimport { ModuleRegistry } from \"./modules/moduleRegistry\";\nvar DEFAULT_ROW_HEIGHT = 25;\nvar DEFAULT_DETAIL_ROW_HEIGHT = 300;\nvar DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE = 5;\nvar DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE = 5;\nvar DEFAULT_KEEP_DETAIL_ROW_COUNT = 10;\nfunction isTrue(value) {\n return value === true || value === 'true';\n}\nfunction zeroOrGreater(value, defaultValue) {\n if (value >= 0) {\n return value;\n }\n // zero gets returned if number is missing or the wrong type\n return defaultValue;\n}\nfunction oneOrGreater(value, defaultValue) {\n if (value > 0) {\n return value;\n }\n // zero gets returned if number is missing or the wrong type\n return defaultValue;\n}\nvar GridOptionsWrapper = /** @class */ (function () {\n function GridOptionsWrapper() {\n this.propertyEventService = new EventService();\n this.domDataKey = '__AG_' + Math.random().toString();\n this.layoutElements = [];\n }\n GridOptionsWrapper_1 = GridOptionsWrapper;\n GridOptionsWrapper.prototype.agWire = function (gridApi, columnApi) {\n this.gridOptions.api = gridApi;\n this.gridOptions.columnApi = columnApi;\n this.checkForDeprecated();\n this.checkForViolations();\n };\n GridOptionsWrapper.prototype.destroy = function () {\n // need to remove these, as we don't own the lifecycle of the gridOptions, we need to\n // remove the references in case the user keeps the grid options, we want the rest\n // of the grid to be picked up by the garbage collector\n this.gridOptions.api = null;\n this.gridOptions.columnApi = null;\n };\n GridOptionsWrapper.prototype.init = function () {\n if (!(this.gridOptions.suppressPropertyNamesCheck === true)) {\n this.checkGridOptionsProperties();\n this.checkColumnDefProperties();\n }\n var async = this.useAsyncEvents();\n this.eventService.addGlobalListener(this.globalEventHandler.bind(this), async);\n if (this.isGroupSelectsChildren() && this.isSuppressParentsInRowNodes()) {\n console.warn('ag-Grid: \\'groupSelectsChildren\\' does not work with \\'suppressParentsInRowNodes\\', this selection method needs the part in rowNode to work');\n }\n if (this.isGroupSelectsChildren()) {\n if (!this.isRowSelectionMulti()) {\n console.warn('ag-Grid: rowSelection must be \\'multiple\\' for groupSelectsChildren to make sense');\n }\n if (this.isRowModelServerSide()) {\n console.warn('ag-Grid: group selects children is NOT support for Server Side Row Model. ' +\n 'This is because the rows are lazy loaded, so selecting a group is not possible as' +\n 'the grid has no way of knowing what the children are.');\n }\n }\n if (this.isGroupRemoveSingleChildren() && this.isGroupHideOpenParents()) {\n console.warn('ag-Grid: groupRemoveSingleChildren and groupHideOpenParents do not work with each other, you need to pick one. And don\\'t ask us how to us these together on our support forum either you will get the same answer!');\n }\n if (this.isEnableRangeSelection()) {\n ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'enableRangeSelection');\n }\n if (!this.isEnableRangeSelection() && (this.isEnableRangeHandle() || this.isEnableFillHandle())) {\n console.warn('ag-Grid: \\'enableRangeHandle\\' and \\'enableFillHandle\\' will not work unless \\'enableRangeSelection\\' is set to true');\n }\n this.addEventListener(GridOptionsWrapper_1.PROP_DOM_LAYOUT, this.updateLayoutClasses.bind(this));\n };\n GridOptionsWrapper.prototype.checkColumnDefProperties = function () {\n var _this = this;\n if (this.gridOptions.columnDefs == null) {\n return;\n }\n this.gridOptions.columnDefs.forEach(function (colDef) {\n var userProperties = Object.getOwnPropertyNames(colDef);\n var validProperties = __spreadArrays(ColDefUtil.ALL_PROPERTIES, ColDefUtil.FRAMEWORK_PROPERTIES);\n _this.checkProperties(userProperties, validProperties, validProperties, 'colDef', 'https://www.ag-grid.com/javascript-grid-column-properties/');\n });\n };\n GridOptionsWrapper.prototype.checkGridOptionsProperties = function () {\n var userProperties = Object.getOwnPropertyNames(this.gridOptions);\n var validProperties = __spreadArrays(PropertyKeys.ALL_PROPERTIES, PropertyKeys.FRAMEWORK_PROPERTIES, _.values(Events).map(function (event) { return ComponentUtil.getCallbackForEvent(event); }));\n var validPropertiesAndExceptions = __spreadArrays(validProperties, ['api', 'columnApi']);\n this.checkProperties(userProperties, validPropertiesAndExceptions, validProperties, 'gridOptions', 'https://www.ag-grid.com/javascript-grid-properties/');\n };\n GridOptionsWrapper.prototype.checkProperties = function (userProperties, validPropertiesAndExceptions, validProperties, containerName, docsUrl) {\n var invalidProperties = _.fuzzyCheckStrings(userProperties, validPropertiesAndExceptions, validProperties);\n _.iterateObject(invalidProperties, function (key, value) {\n console.warn(\"ag-grid: invalid \" + containerName + \" property '\" + key + \"' did you mean any of these: \" + value.slice(0, 8).join(\", \"));\n });\n if (Object.keys(invalidProperties).length > 0) {\n console.warn(\"ag-grid: to see all the valid \" + containerName + \" properties please check: \" + docsUrl);\n }\n };\n // returns the dom data, or undefined if not found\n GridOptionsWrapper.prototype.getDomData = function (element, key) {\n var domData = element[this.domDataKey];\n return domData ? domData[key] : undefined;\n };\n GridOptionsWrapper.prototype.setDomData = function (element, key, value) {\n var domData = element[this.domDataKey];\n if (_.missing(domData)) {\n domData = {};\n element[this.domDataKey] = domData;\n }\n domData[key] = value;\n };\n GridOptionsWrapper.prototype.isRowSelection = function () {\n return this.gridOptions.rowSelection === \"single\" || this.gridOptions.rowSelection === \"multiple\";\n };\n GridOptionsWrapper.prototype.isRowDeselection = function () {\n return isTrue(this.gridOptions.rowDeselection);\n };\n GridOptionsWrapper.prototype.isRowSelectionMulti = function () {\n return this.gridOptions.rowSelection === 'multiple';\n };\n GridOptionsWrapper.prototype.isRowMultiSelectWithClick = function () {\n return isTrue(this.gridOptions.rowMultiSelectWithClick);\n };\n GridOptionsWrapper.prototype.getContext = function () {\n return this.gridOptions.context;\n };\n GridOptionsWrapper.prototype.isPivotMode = function () {\n return isTrue(this.gridOptions.pivotMode);\n };\n GridOptionsWrapper.prototype.isPivotTotals = function () {\n return isTrue(this.gridOptions.pivotTotals);\n };\n GridOptionsWrapper.prototype.getPivotColumnGroupTotals = function () {\n return this.gridOptions.pivotColumnGroupTotals;\n };\n GridOptionsWrapper.prototype.getPivotRowTotals = function () {\n return this.gridOptions.pivotRowTotals;\n };\n GridOptionsWrapper.prototype.isRowModelInfinite = function () {\n return this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_INFINITE;\n };\n GridOptionsWrapper.prototype.isRowModelViewport = function () {\n return this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_VIEWPORT;\n };\n GridOptionsWrapper.prototype.isRowModelServerSide = function () {\n return this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_SERVER_SIDE;\n };\n GridOptionsWrapper.prototype.isRowModelDefault = function () {\n return _.missing(this.gridOptions.rowModelType) ||\n this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE ||\n this.gridOptions.rowModelType === Constants.DEPRECATED_ROW_MODEL_TYPE_NORMAL;\n };\n GridOptionsWrapper.prototype.isFullRowEdit = function () {\n return this.gridOptions.editType === 'fullRow';\n };\n GridOptionsWrapper.prototype.isSuppressFocusAfterRefresh = function () {\n return isTrue(this.gridOptions.suppressFocusAfterRefresh);\n };\n GridOptionsWrapper.prototype.isSuppressBrowserResizeObserver = function () {\n return isTrue(this.gridOptions.suppressBrowserResizeObserver);\n };\n GridOptionsWrapper.prototype.isSuppressMaintainUnsortedOrder = function () {\n return isTrue(this.gridOptions.suppressMaintainUnsortedOrder);\n };\n GridOptionsWrapper.prototype.isSuppressClearOnFillReduction = function () {\n return isTrue(this.gridOptions.suppressClearOnFillReduction);\n };\n GridOptionsWrapper.prototype.isShowToolPanel = function () {\n return isTrue(this.gridOptions.sideBar && Array.isArray(this.getSideBar().toolPanels));\n };\n GridOptionsWrapper.prototype.getSideBar = function () {\n return this.gridOptions.sideBar;\n };\n GridOptionsWrapper.prototype.isSuppressTouch = function () {\n return isTrue(this.gridOptions.suppressTouch);\n };\n GridOptionsWrapper.prototype.isSuppressRowTransform = function () {\n return isTrue(this.gridOptions.suppressRowTransform);\n };\n GridOptionsWrapper.prototype.isSuppressSetColumnStateEvents = function () {\n return isTrue(this.gridOptions.suppressSetColumnStateEvents);\n };\n GridOptionsWrapper.prototype.isAllowDragFromColumnsToolPanel = function () {\n return isTrue(this.gridOptions.allowDragFromColumnsToolPanel);\n };\n GridOptionsWrapper.prototype.useAsyncEvents = function () {\n return !isTrue(this.gridOptions.suppressAsyncEvents);\n };\n GridOptionsWrapper.prototype.isEnableCellChangeFlash = function () {\n return isTrue(this.gridOptions.enableCellChangeFlash);\n };\n GridOptionsWrapper.prototype.isGroupSelectsChildren = function () {\n var result = isTrue(this.gridOptions.groupSelectsChildren);\n if (result && this.isTreeData()) {\n console.warn('ag-Grid: groupSelectsChildren does not work with tree data');\n return false;\n }\n return result;\n };\n GridOptionsWrapper.prototype.isSuppressRowHoverHighlight = function () {\n return isTrue(this.gridOptions.suppressRowHoverHighlight);\n };\n GridOptionsWrapper.prototype.isGroupSelectsFiltered = function () {\n return isTrue(this.gridOptions.groupSelectsFiltered);\n };\n GridOptionsWrapper.prototype.isGroupHideOpenParents = function () {\n return isTrue(this.gridOptions.groupHideOpenParents);\n };\n // if we are doing hideOpenParents, then we always have groupMultiAutoColumn, otherwise hideOpenParents would not work\n GridOptionsWrapper.prototype.isGroupMultiAutoColumn = function () {\n return isTrue(this.gridOptions.groupMultiAutoColumn) || isTrue(this.gridOptions.groupHideOpenParents);\n };\n GridOptionsWrapper.prototype.isGroupRemoveSingleChildren = function () {\n return isTrue(this.gridOptions.groupRemoveSingleChildren);\n };\n GridOptionsWrapper.prototype.isGroupRemoveLowestSingleChildren = function () {\n return isTrue(this.gridOptions.groupRemoveLowestSingleChildren);\n };\n GridOptionsWrapper.prototype.isGroupIncludeFooter = function () {\n return isTrue(this.gridOptions.groupIncludeFooter);\n };\n GridOptionsWrapper.prototype.isGroupIncludeTotalFooter = function () {\n return isTrue(this.gridOptions.groupIncludeTotalFooter);\n };\n GridOptionsWrapper.prototype.isGroupSuppressBlankHeader = function () {\n return isTrue(this.gridOptions.groupSuppressBlankHeader);\n };\n GridOptionsWrapper.prototype.isSuppressRowClickSelection = function () {\n return isTrue(this.gridOptions.suppressRowClickSelection);\n };\n GridOptionsWrapper.prototype.isSuppressCellSelection = function () {\n return isTrue(this.gridOptions.suppressCellSelection);\n };\n GridOptionsWrapper.prototype.isSuppressMultiSort = function () {\n return isTrue(this.gridOptions.suppressMultiSort);\n };\n GridOptionsWrapper.prototype.isMultiSortKeyCtrl = function () {\n return this.gridOptions.multiSortKey === 'ctrl';\n };\n GridOptionsWrapper.prototype.isGroupSuppressAutoColumn = function () {\n return isTrue(this.gridOptions.groupSuppressAutoColumn);\n };\n GridOptionsWrapper.prototype.isSuppressDragLeaveHidesColumns = function () {\n return isTrue(this.gridOptions.suppressDragLeaveHidesColumns);\n };\n GridOptionsWrapper.prototype.isSuppressScrollOnNewData = function () {\n return isTrue(this.gridOptions.suppressScrollOnNewData);\n };\n GridOptionsWrapper.prototype.isRowDragManaged = function () {\n return isTrue(this.gridOptions.rowDragManaged);\n };\n GridOptionsWrapper.prototype.isSuppressRowDrag = function () {\n return isTrue(this.gridOptions.suppressRowDrag);\n };\n // returns either 'print', 'autoHeight' or 'normal' (normal is the default)\n GridOptionsWrapper.prototype.getDomLayout = function () {\n var domLayout = this.gridOptions.domLayout || Constants.DOM_LAYOUT_NORMAL;\n var validLayouts = [\n Constants.DOM_LAYOUT_PRINT,\n Constants.DOM_LAYOUT_AUTO_HEIGHT,\n Constants.DOM_LAYOUT_NORMAL\n ];\n if (validLayouts.indexOf(domLayout) === -1) {\n _.doOnce(function () { return console.warn(\"ag-Grid: \" + domLayout + \" is not valid for DOM Layout, valid values are \" + Constants.DOM_LAYOUT_NORMAL + \", \" + Constants.DOM_LAYOUT_AUTO_HEIGHT + \" and \" + Constants.DOM_LAYOUT_PRINT); }, 'warn about dom layout values');\n return Constants.DOM_LAYOUT_NORMAL;\n }\n return domLayout;\n };\n GridOptionsWrapper.prototype.isSuppressHorizontalScroll = function () {\n return isTrue(this.gridOptions.suppressHorizontalScroll);\n };\n GridOptionsWrapper.prototype.isSuppressMaxRenderedRowRestriction = function () {\n return isTrue(this.gridOptions.suppressMaxRenderedRowRestriction);\n };\n GridOptionsWrapper.prototype.isExcludeChildrenWhenTreeDataFiltering = function () {\n return isTrue(this.gridOptions.excludeChildrenWhenTreeDataFiltering);\n };\n GridOptionsWrapper.prototype.isAlwaysShowVerticalScroll = function () {\n return isTrue(this.gridOptions.alwaysShowVerticalScroll);\n };\n GridOptionsWrapper.prototype.isSuppressLoadingOverlay = function () {\n return isTrue(this.gridOptions.suppressLoadingOverlay);\n };\n GridOptionsWrapper.prototype.isSuppressNoRowsOverlay = function () {\n return isTrue(this.gridOptions.suppressNoRowsOverlay);\n };\n GridOptionsWrapper.prototype.isSuppressFieldDotNotation = function () {\n return isTrue(this.gridOptions.suppressFieldDotNotation);\n };\n GridOptionsWrapper.prototype.getPinnedTopRowData = function () {\n return this.gridOptions.pinnedTopRowData;\n };\n GridOptionsWrapper.prototype.getPinnedBottomRowData = function () {\n return this.gridOptions.pinnedBottomRowData;\n };\n GridOptionsWrapper.prototype.isFunctionsPassive = function () {\n return isTrue(this.gridOptions.functionsPassive);\n };\n GridOptionsWrapper.prototype.isSuppressTabbing = function () {\n return isTrue(this.gridOptions.suppressTabbing);\n };\n GridOptionsWrapper.prototype.isSuppressChangeDetection = function () {\n return isTrue(this.gridOptions.suppressChangeDetection);\n };\n GridOptionsWrapper.prototype.isSuppressAnimationFrame = function () {\n return isTrue(this.gridOptions.suppressAnimationFrame);\n };\n GridOptionsWrapper.prototype.getQuickFilterText = function () {\n return this.gridOptions.quickFilterText;\n };\n GridOptionsWrapper.prototype.isCacheQuickFilter = function () {\n return isTrue(this.gridOptions.cacheQuickFilter);\n };\n GridOptionsWrapper.prototype.isUnSortIcon = function () {\n return isTrue(this.gridOptions.unSortIcon);\n };\n GridOptionsWrapper.prototype.isSuppressMenuHide = function () {\n return isTrue(this.gridOptions.suppressMenuHide);\n };\n GridOptionsWrapper.prototype.isEnterMovesDownAfterEdit = function () {\n return isTrue(this.gridOptions.enterMovesDownAfterEdit);\n };\n GridOptionsWrapper.prototype.isEnterMovesDown = function () {\n return isTrue(this.gridOptions.enterMovesDown);\n };\n GridOptionsWrapper.prototype.getRowStyle = function () {\n return this.gridOptions.rowStyle;\n };\n GridOptionsWrapper.prototype.getRowClass = function () {\n return this.gridOptions.rowClass;\n };\n GridOptionsWrapper.prototype.getRowStyleFunc = function () {\n return this.gridOptions.getRowStyle;\n };\n GridOptionsWrapper.prototype.getRowClassFunc = function () {\n return this.gridOptions.getRowClass;\n };\n GridOptionsWrapper.prototype.rowClassRules = function () {\n return this.gridOptions.rowClassRules;\n };\n GridOptionsWrapper.prototype.getCreateChartContainerFunc = function () {\n return this.gridOptions.createChartContainer;\n };\n GridOptionsWrapper.prototype.getPopupParent = function () {\n return this.gridOptions.popupParent;\n };\n GridOptionsWrapper.prototype.getBlockLoadDebounceMillis = function () {\n return this.gridOptions.blockLoadDebounceMillis;\n };\n GridOptionsWrapper.prototype.getPostProcessPopupFunc = function () {\n return this.gridOptions.postProcessPopup;\n };\n GridOptionsWrapper.prototype.getDoesDataFlowerFunc = function () {\n return this.gridOptions.doesDataFlower;\n };\n GridOptionsWrapper.prototype.getPaginationNumberFormatterFunc = function () {\n return this.gridOptions.paginationNumberFormatter;\n };\n GridOptionsWrapper.prototype.getChildCountFunc = function () {\n return this.gridOptions.getChildCount;\n };\n GridOptionsWrapper.prototype.getDefaultGroupSortComparator = function () {\n return this.gridOptions.defaultGroupSortComparator;\n };\n GridOptionsWrapper.prototype.getIsFullWidthCellFunc = function () {\n return this.gridOptions.isFullWidthCell;\n };\n GridOptionsWrapper.prototype.getFullWidthCellRendererParams = function () {\n return this.gridOptions.fullWidthCellRendererParams;\n };\n GridOptionsWrapper.prototype.isEmbedFullWidthRows = function () {\n return isTrue(this.gridOptions.embedFullWidthRows) || isTrue(this.gridOptions.deprecatedEmbedFullWidthRows);\n };\n GridOptionsWrapper.prototype.getSuppressKeyboardEventFunc = function () {\n return this.gridOptions.suppressKeyboardEvent;\n };\n GridOptionsWrapper.prototype.getBusinessKeyForNodeFunc = function () {\n return this.gridOptions.getBusinessKeyForNode;\n };\n GridOptionsWrapper.prototype.getApi = function () {\n return this.gridOptions.api;\n };\n GridOptionsWrapper.prototype.getColumnApi = function () {\n return this.gridOptions.columnApi;\n };\n GridOptionsWrapper.prototype.isDeltaRowDataMode = function () {\n return isTrue(this.gridOptions.deltaRowDataMode);\n };\n GridOptionsWrapper.prototype.isDeltaColumnMode = function () {\n return isTrue(this.gridOptions.deltaColumnMode);\n };\n GridOptionsWrapper.prototype.isEnsureDomOrder = function () {\n return isTrue(this.gridOptions.ensureDomOrder);\n };\n GridOptionsWrapper.prototype.isEnableCharts = function () {\n if (isTrue((this.gridOptions.enableCharts))) {\n return ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'enableCharts');\n }\n return false;\n };\n GridOptionsWrapper.prototype.getColResizeDefault = function () {\n return this.gridOptions.colResizeDefault;\n };\n GridOptionsWrapper.prototype.isSingleClickEdit = function () {\n return isTrue(this.gridOptions.singleClickEdit);\n };\n GridOptionsWrapper.prototype.isSuppressClickEdit = function () {\n return isTrue(this.gridOptions.suppressClickEdit);\n };\n GridOptionsWrapper.prototype.isStopEditingWhenGridLosesFocus = function () {\n return isTrue(this.gridOptions.stopEditingWhenGridLosesFocus);\n };\n GridOptionsWrapper.prototype.getGroupDefaultExpanded = function () {\n return this.gridOptions.groupDefaultExpanded;\n };\n GridOptionsWrapper.prototype.getMaxConcurrentDatasourceRequests = function () {\n return this.gridOptions.maxConcurrentDatasourceRequests;\n };\n GridOptionsWrapper.prototype.getMaxBlocksInCache = function () {\n return this.gridOptions.maxBlocksInCache;\n };\n GridOptionsWrapper.prototype.getCacheOverflowSize = function () {\n return this.gridOptions.cacheOverflowSize;\n };\n GridOptionsWrapper.prototype.getPaginationPageSize = function () {\n return this.gridOptions.paginationPageSize;\n };\n GridOptionsWrapper.prototype.isPaginateChildRows = function () {\n // if using groupSuppressRow, means we are not showing parent rows,\n // so we always paginate on the child rows here as there are no parent rows\n var shouldPaginate = this.isGroupSuppressRow() || this.isGroupRemoveSingleChildren() || this.isGroupRemoveLowestSingleChildren();\n if (shouldPaginate) {\n return true;\n }\n return isTrue(this.gridOptions.paginateChildRows);\n };\n GridOptionsWrapper.prototype.getCacheBlockSize = function () {\n return this.gridOptions.cacheBlockSize;\n };\n GridOptionsWrapper.prototype.getInfiniteInitialRowCount = function () {\n return this.gridOptions.infiniteInitialRowCount;\n };\n GridOptionsWrapper.prototype.isPurgeClosedRowNodes = function () {\n return isTrue(this.gridOptions.purgeClosedRowNodes);\n };\n GridOptionsWrapper.prototype.isSuppressPaginationPanel = function () {\n return isTrue(this.gridOptions.suppressPaginationPanel);\n };\n GridOptionsWrapper.prototype.getRowData = function () {\n return this.gridOptions.rowData;\n };\n // this property is different - we never allow groupUseEntireRow if in pivot mode,\n // as otherwise we don't see the pivot values.\n GridOptionsWrapper.prototype.isGroupUseEntireRow = function (pivotMode) {\n return pivotMode ? false : isTrue(this.gridOptions.groupUseEntireRow);\n };\n GridOptionsWrapper.prototype.isEnableRtl = function () {\n return isTrue(this.gridOptions.enableRtl);\n };\n GridOptionsWrapper.prototype.getAutoGroupColumnDef = function () {\n return this.gridOptions.autoGroupColumnDef;\n };\n GridOptionsWrapper.prototype.isGroupSuppressRow = function () {\n return isTrue(this.gridOptions.groupSuppressRow);\n };\n GridOptionsWrapper.prototype.getRowGroupPanelShow = function () {\n return this.gridOptions.rowGroupPanelShow;\n };\n GridOptionsWrapper.prototype.getPivotPanelShow = function () {\n return this.gridOptions.pivotPanelShow;\n };\n GridOptionsWrapper.prototype.isAngularCompileRows = function () {\n return isTrue(this.gridOptions.angularCompileRows);\n };\n GridOptionsWrapper.prototype.isAngularCompileFilters = function () {\n return isTrue(this.gridOptions.angularCompileFilters);\n };\n GridOptionsWrapper.prototype.isAngularCompileHeaders = function () {\n return isTrue(this.gridOptions.angularCompileHeaders);\n };\n GridOptionsWrapper.prototype.isDebug = function () {\n return isTrue(this.gridOptions.debug);\n };\n GridOptionsWrapper.prototype.getColumnDefs = function () {\n return this.gridOptions.columnDefs;\n };\n GridOptionsWrapper.prototype.getColumnTypes = function () {\n return this.gridOptions.columnTypes;\n };\n GridOptionsWrapper.prototype.getDatasource = function () {\n return this.gridOptions.datasource;\n };\n GridOptionsWrapper.prototype.getViewportDatasource = function () {\n return this.gridOptions.viewportDatasource;\n };\n GridOptionsWrapper.prototype.getServerSideDatasource = function () {\n return this.gridOptions.serverSideDatasource;\n };\n GridOptionsWrapper.prototype.isAccentedSort = function () {\n return isTrue(this.gridOptions.accentedSort);\n };\n GridOptionsWrapper.prototype.isEnableBrowserTooltips = function () {\n return isTrue(this.gridOptions.enableBrowserTooltips);\n };\n GridOptionsWrapper.prototype.isEnableCellExpressions = function () {\n return isTrue(this.gridOptions.enableCellExpressions);\n };\n GridOptionsWrapper.prototype.isEnableGroupEdit = function () {\n return isTrue(this.gridOptions.enableGroupEdit);\n };\n GridOptionsWrapper.prototype.isSuppressMiddleClickScrolls = function () {\n return isTrue(this.gridOptions.suppressMiddleClickScrolls);\n };\n GridOptionsWrapper.prototype.isPreventDefaultOnContextMenu = function () {\n return isTrue(this.gridOptions.preventDefaultOnContextMenu);\n };\n GridOptionsWrapper.prototype.isSuppressPreventDefaultOnMouseWheel = function () {\n return isTrue(this.gridOptions.suppressPreventDefaultOnMouseWheel);\n };\n GridOptionsWrapper.prototype.isSuppressColumnVirtualisation = function () {\n return isTrue(this.gridOptions.suppressColumnVirtualisation);\n };\n GridOptionsWrapper.prototype.isSuppressContextMenu = function () {\n return isTrue(this.gridOptions.suppressContextMenu);\n };\n GridOptionsWrapper.prototype.isAllowContextMenuWithControlKey = function () {\n return isTrue(this.gridOptions.allowContextMenuWithControlKey);\n };\n GridOptionsWrapper.prototype.isSuppressCopyRowsToClipboard = function () {\n return isTrue(this.gridOptions.suppressCopyRowsToClipboard);\n };\n GridOptionsWrapper.prototype.isCopyHeadersToClipboard = function () {\n return isTrue(this.gridOptions.copyHeadersToClipboard);\n };\n GridOptionsWrapper.prototype.isSuppressClipboardPaste = function () {\n return isTrue(this.gridOptions.suppressClipboardPaste);\n };\n GridOptionsWrapper.prototype.isPagination = function () {\n return isTrue(this.gridOptions.pagination);\n };\n GridOptionsWrapper.prototype.isSuppressEnterpriseResetOnNewColumns = function () {\n return isTrue(this.gridOptions.suppressEnterpriseResetOnNewColumns);\n };\n GridOptionsWrapper.prototype.getProcessDataFromClipboardFunc = function () {\n return this.gridOptions.processDataFromClipboard;\n };\n GridOptionsWrapper.prototype.getBatchUpdateWaitMillis = function () {\n return _.exists(this.gridOptions.batchUpdateWaitMillis) ? this.gridOptions.batchUpdateWaitMillis : Constants.BATCH_WAIT_MILLIS;\n };\n GridOptionsWrapper.prototype.isSuppressMovableColumns = function () {\n return isTrue(this.gridOptions.suppressMovableColumns);\n };\n GridOptionsWrapper.prototype.isAnimateRows = function () {\n // never allow animating if enforcing the row order\n if (this.isEnsureDomOrder()) {\n return false;\n }\n return isTrue(this.gridOptions.animateRows);\n };\n GridOptionsWrapper.prototype.isSuppressColumnMoveAnimation = function () {\n return isTrue(this.gridOptions.suppressColumnMoveAnimation);\n };\n GridOptionsWrapper.prototype.isSuppressAggFuncInHeader = function () {\n return isTrue(this.gridOptions.suppressAggFuncInHeader);\n };\n GridOptionsWrapper.prototype.isSuppressAggAtRootLevel = function () {\n return isTrue(this.gridOptions.suppressAggAtRootLevel);\n };\n GridOptionsWrapper.prototype.isEnableRangeSelection = function () {\n return ModuleRegistry.isRegistered(ModuleNames.RangeSelectionModule) && isTrue(this.gridOptions.enableRangeSelection);\n };\n GridOptionsWrapper.prototype.isEnableRangeHandle = function () {\n return isTrue(this.gridOptions.enableRangeHandle);\n };\n GridOptionsWrapper.prototype.isEnableFillHandle = function () {\n return isTrue(this.gridOptions.enableFillHandle);\n };\n GridOptionsWrapper.prototype.getFillOperation = function () {\n return this.gridOptions.fillOperation;\n };\n GridOptionsWrapper.prototype.isSuppressMultiRangeSelection = function () {\n return isTrue(this.gridOptions.suppressMultiRangeSelection);\n };\n GridOptionsWrapper.prototype.isPaginationAutoPageSize = function () {\n return isTrue(this.gridOptions.paginationAutoPageSize);\n };\n GridOptionsWrapper.prototype.isRememberGroupStateWhenNewData = function () {\n return isTrue(this.gridOptions.rememberGroupStateWhenNewData);\n };\n GridOptionsWrapper.prototype.getIcons = function () {\n return this.gridOptions.icons;\n };\n GridOptionsWrapper.prototype.getAggFuncs = function () {\n return this.gridOptions.aggFuncs;\n };\n GridOptionsWrapper.prototype.getSortingOrder = function () {\n return this.gridOptions.sortingOrder;\n };\n GridOptionsWrapper.prototype.getAlignedGrids = function () {\n return this.gridOptions.alignedGrids;\n };\n GridOptionsWrapper.prototype.isMasterDetail = function () {\n var masterDetail = isTrue(this.gridOptions.masterDetail);\n if (masterDetail) {\n return ModuleRegistry.assertRegistered(ModuleNames.MasterDetailModule, 'masterDetail');\n }\n else {\n return false;\n }\n };\n GridOptionsWrapper.prototype.isKeepDetailRows = function () {\n return isTrue(this.gridOptions.keepDetailRows);\n };\n GridOptionsWrapper.prototype.getKeepDetailRowsCount = function () {\n if (this.gridOptions.keepDetailRowsCount > 0) {\n return this.gridOptions.keepDetailRowsCount;\n }\n return DEFAULT_KEEP_DETAIL_ROW_COUNT;\n };\n GridOptionsWrapper.prototype.getIsRowMasterFunc = function () {\n return this.gridOptions.isRowMaster;\n };\n GridOptionsWrapper.prototype.getIsRowSelectableFunc = function () {\n return this.gridOptions.isRowSelectable;\n };\n GridOptionsWrapper.prototype.getGroupRowRendererParams = function () {\n return this.gridOptions.groupRowRendererParams;\n };\n GridOptionsWrapper.prototype.getOverlayLoadingTemplate = function () {\n return this.gridOptions.overlayLoadingTemplate;\n };\n GridOptionsWrapper.prototype.getOverlayNoRowsTemplate = function () {\n return this.gridOptions.overlayNoRowsTemplate;\n };\n GridOptionsWrapper.prototype.isSuppressAutoSize = function () {\n return isTrue(this.gridOptions.suppressAutoSize);\n };\n GridOptionsWrapper.prototype.isEnableCellTextSelection = function () {\n return isTrue(this.gridOptions.enableCellTextSelection);\n };\n GridOptionsWrapper.prototype.isSuppressParentsInRowNodes = function () {\n return isTrue(this.gridOptions.suppressParentsInRowNodes);\n };\n GridOptionsWrapper.prototype.isFunctionsReadOnly = function () {\n return isTrue(this.gridOptions.functionsReadOnly);\n };\n GridOptionsWrapper.prototype.isFloatingFilter = function () {\n return this.gridOptions.floatingFilter;\n };\n GridOptionsWrapper.prototype.isEnableCellTextSelect = function () {\n return isTrue(this.gridOptions.enableCellTextSelection);\n };\n GridOptionsWrapper.prototype.isEnableOldSetFilterModel = function () {\n return isTrue(this.gridOptions.enableOldSetFilterModel);\n };\n GridOptionsWrapper.prototype.getDefaultColDef = function () {\n return this.gridOptions.defaultColDef;\n };\n GridOptionsWrapper.prototype.getDefaultColGroupDef = function () {\n return this.gridOptions.defaultColGroupDef;\n };\n GridOptionsWrapper.prototype.getDefaultExportParams = function () {\n return this.gridOptions.defaultExportParams;\n };\n GridOptionsWrapper.prototype.isSuppressCsvExport = function () {\n return isTrue(this.gridOptions.suppressCsvExport);\n };\n GridOptionsWrapper.prototype.isAllowShowChangeAfterFilter = function () {\n return isTrue(this.gridOptions.allowShowChangeAfterFilter);\n };\n GridOptionsWrapper.prototype.isSuppressExcelExport = function () {\n return isTrue(this.gridOptions.suppressExcelExport);\n };\n GridOptionsWrapper.prototype.isSuppressMakeColumnVisibleAfterUnGroup = function () {\n return isTrue(this.gridOptions.suppressMakeColumnVisibleAfterUnGroup);\n };\n GridOptionsWrapper.prototype.getNodeChildDetailsFunc = function () {\n return this.gridOptions.getNodeChildDetails;\n };\n GridOptionsWrapper.prototype.getDataPathFunc = function () {\n return this.gridOptions.getDataPath;\n };\n GridOptionsWrapper.prototype.getIsServerSideGroupFunc = function () {\n return this.gridOptions.isServerSideGroup;\n };\n GridOptionsWrapper.prototype.getServerSideGroupKeyFunc = function () {\n return this.gridOptions.getServerSideGroupKey;\n };\n GridOptionsWrapper.prototype.getGroupRowAggNodesFunc = function () {\n return this.gridOptions.groupRowAggNodes;\n };\n GridOptionsWrapper.prototype.getContextMenuItemsFunc = function () {\n return this.gridOptions.getContextMenuItems;\n };\n GridOptionsWrapper.prototype.getMainMenuItemsFunc = function () {\n return this.gridOptions.getMainMenuItems;\n };\n GridOptionsWrapper.prototype.getChartToolbarItemsFunc = function () {\n return this.gridOptions.getChartToolbarItems;\n };\n GridOptionsWrapper.prototype.getRowNodeIdFunc = function () {\n return this.gridOptions.getRowNodeId;\n };\n GridOptionsWrapper.prototype.getNavigateToNextCellFunc = function () {\n return this.gridOptions.navigateToNextCell;\n };\n GridOptionsWrapper.prototype.getTabToNextCellFunc = function () {\n return this.gridOptions.tabToNextCell;\n };\n GridOptionsWrapper.prototype.isTreeData = function () {\n var usingTreeData = isTrue(this.gridOptions.treeData);\n if (usingTreeData) {\n return ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Tree Data');\n }\n else {\n return false;\n }\n };\n GridOptionsWrapper.prototype.isValueCache = function () {\n return isTrue(this.gridOptions.valueCache);\n };\n GridOptionsWrapper.prototype.isValueCacheNeverExpires = function () {\n return isTrue(this.gridOptions.valueCacheNeverExpires);\n };\n GridOptionsWrapper.prototype.isDeltaSort = function () {\n return isTrue(this.gridOptions.deltaSort);\n };\n GridOptionsWrapper.prototype.isAggregateOnlyChangedColumns = function () {\n return isTrue(this.gridOptions.aggregateOnlyChangedColumns);\n };\n GridOptionsWrapper.prototype.getProcessSecondaryColDefFunc = function () {\n return this.gridOptions.processSecondaryColDef;\n };\n GridOptionsWrapper.prototype.getProcessSecondaryColGroupDefFunc = function () {\n return this.gridOptions.processSecondaryColGroupDef;\n };\n GridOptionsWrapper.prototype.getSendToClipboardFunc = function () {\n return this.gridOptions.sendToClipboard;\n };\n GridOptionsWrapper.prototype.getProcessRowPostCreateFunc = function () {\n return this.gridOptions.processRowPostCreate;\n };\n GridOptionsWrapper.prototype.getProcessCellForClipboardFunc = function () {\n return this.gridOptions.processCellForClipboard;\n };\n GridOptionsWrapper.prototype.getProcessHeaderForClipboardFunc = function () {\n return this.gridOptions.processHeaderForClipboard;\n };\n GridOptionsWrapper.prototype.getProcessCellFromClipboardFunc = function () {\n return this.gridOptions.processCellFromClipboard;\n };\n GridOptionsWrapper.prototype.getViewportRowModelPageSize = function () {\n return oneOrGreater(this.gridOptions.viewportRowModelPageSize, DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE);\n };\n GridOptionsWrapper.prototype.getViewportRowModelBufferSize = function () {\n return zeroOrGreater(this.gridOptions.viewportRowModelBufferSize, DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE);\n };\n // public getCellRenderers(): {[key: string]: {new(): ICellRenderer} | ICellRendererFunc} { return this.gridOptions.cellRenderers; }\n // public getCellEditors(): {[key: string]: {new(): ICellEditor}} { return this.gridOptions.cellEditors; }\n GridOptionsWrapper.prototype.isServerSideSortingAlwaysResets = function () {\n return isTrue(this.gridOptions.serverSideSortingAlwaysResets);\n };\n GridOptionsWrapper.prototype.getPostSortFunc = function () {\n return this.gridOptions.postSort;\n };\n GridOptionsWrapper.prototype.getProcessChartOptionsFunc = function () {\n return this.gridOptions.processChartOptions;\n };\n GridOptionsWrapper.prototype.getClipboardDeliminator = function () {\n return _.exists(this.gridOptions.clipboardDeliminator) ? this.gridOptions.clipboardDeliminator : '\\t';\n };\n GridOptionsWrapper.prototype.setProperty = function (key, value) {\n var gridOptionsNoType = this.gridOptions;\n var previousValue = gridOptionsNoType[key];\n if (previousValue !== value) {\n gridOptionsNoType[key] = value;\n var event_1 = {\n type: key,\n currentValue: value,\n previousValue: previousValue\n };\n this.propertyEventService.dispatchEvent(event_1);\n }\n };\n // this logic is repeated in lots of places. any element that had different CSS\n // dependent on the layout needs to have the layout class added ot it.\n GridOptionsWrapper.prototype.addLayoutElement = function (element) {\n this.layoutElements.push(element);\n this.updateLayoutClasses();\n };\n GridOptionsWrapper.prototype.updateLayoutClasses = function () {\n var domLayout = this.getDomLayout();\n var domLayoutAutoHeight = domLayout === Constants.DOM_LAYOUT_AUTO_HEIGHT;\n var domLayoutPrint = domLayout === Constants.DOM_LAYOUT_PRINT;\n var domLayoutNormal = domLayout === Constants.DOM_LAYOUT_NORMAL;\n this.layoutElements.forEach(function (e) {\n _.addOrRemoveCssClass(e, 'ag-layout-auto-height', domLayoutAutoHeight);\n _.addOrRemoveCssClass(e, 'ag-layout-normal', domLayoutNormal);\n _.addOrRemoveCssClass(e, 'ag-layout-print', domLayoutPrint);\n });\n };\n GridOptionsWrapper.prototype.addEventListener = function (key, listener) {\n GridOptionsWrapper_1.checkEventDeprecation(key);\n this.propertyEventService.addEventListener(key, listener);\n };\n GridOptionsWrapper.checkEventDeprecation = function (eventName) {\n if (eventName === 'floatingRowDataChanged') {\n console.warn('ag-Grid: floatingRowDataChanged is now called pinnedRowDataChanged');\n }\n };\n GridOptionsWrapper.prototype.removeEventListener = function (key, listener) {\n this.propertyEventService.removeEventListener(key, listener);\n };\n GridOptionsWrapper.prototype.getAutoSizePadding = function () {\n return this.gridOptions.autoSizePadding && this.gridOptions.autoSizePadding > 0 ? this.gridOptions.autoSizePadding : 20;\n };\n // properties\n GridOptionsWrapper.prototype.getHeaderHeight = function () {\n if (typeof this.gridOptions.headerHeight === 'number') {\n return this.gridOptions.headerHeight;\n }\n return this.specialForNewMaterial(25, 'headerHeight');\n };\n GridOptionsWrapper.prototype.getFloatingFiltersHeight = function () {\n if (typeof this.gridOptions.floatingFiltersHeight === 'number') {\n return this.gridOptions.floatingFiltersHeight;\n }\n return this.specialForNewMaterial(25, 'headerHeight');\n };\n GridOptionsWrapper.prototype.getGroupHeaderHeight = function () {\n if (typeof this.gridOptions.groupHeaderHeight === 'number') {\n return this.gridOptions.groupHeaderHeight;\n }\n return this.getHeaderHeight();\n };\n GridOptionsWrapper.prototype.getPivotHeaderHeight = function () {\n if (typeof this.gridOptions.pivotHeaderHeight === 'number') {\n return this.gridOptions.pivotHeaderHeight;\n }\n return this.getHeaderHeight();\n };\n GridOptionsWrapper.prototype.getPivotGroupHeaderHeight = function () {\n if (typeof this.gridOptions.pivotGroupHeaderHeight === 'number') {\n return this.gridOptions.pivotGroupHeaderHeight;\n }\n return this.getGroupHeaderHeight();\n };\n GridOptionsWrapper.prototype.isExternalFilterPresent = function () {\n if (typeof this.gridOptions.isExternalFilterPresent === 'function') {\n return this.gridOptions.isExternalFilterPresent();\n }\n return false;\n };\n GridOptionsWrapper.prototype.doesExternalFilterPass = function (node) {\n if (typeof this.gridOptions.doesExternalFilterPass === 'function') {\n return this.gridOptions.doesExternalFilterPass(node);\n }\n return false;\n };\n GridOptionsWrapper.prototype.getDocument = function () {\n // if user is providing document, we use the users one,\n // otherwise we use the document on the global namespace.\n var result = null;\n if (this.gridOptions.getDocument && _.exists(this.gridOptions.getDocument)) {\n result = this.gridOptions.getDocument();\n }\n if (result && _.exists(result)) {\n return result;\n }\n return document;\n };\n GridOptionsWrapper.prototype.getMinColWidth = function () {\n if (this.gridOptions.minColWidth && (this.gridOptions.minColWidth > GridOptionsWrapper_1.MIN_COL_WIDTH)) {\n return this.gridOptions.minColWidth;\n }\n return GridOptionsWrapper_1.MIN_COL_WIDTH;\n };\n GridOptionsWrapper.prototype.getMaxColWidth = function () {\n if (this.gridOptions.maxColWidth && (this.gridOptions.maxColWidth > GridOptionsWrapper_1.MIN_COL_WIDTH)) {\n return this.gridOptions.maxColWidth;\n }\n return null;\n };\n GridOptionsWrapper.prototype.getColWidth = function () {\n if (typeof this.gridOptions.colWidth !== 'number' || this.gridOptions.colWidth < GridOptionsWrapper_1.MIN_COL_WIDTH) {\n return 200;\n }\n return this.gridOptions.colWidth;\n };\n GridOptionsWrapper.prototype.getRowBuffer = function () {\n var rowBuffer = this.gridOptions.rowBuffer;\n if (typeof rowBuffer === 'number') {\n if (rowBuffer < 0) {\n _.doOnce(function () { return console.warn(\"ag-Grid: rowBuffer should not be negative\"); }, 'warn rowBuffer negative');\n this.gridOptions.rowBuffer = rowBuffer = 0;\n }\n }\n else {\n rowBuffer = Constants.ROW_BUFFER_SIZE;\n }\n return rowBuffer;\n };\n GridOptionsWrapper.prototype.getRowBufferInPixels = function () {\n var rowsToBuffer = this.getRowBuffer();\n var defaultRowHeight = this.getRowHeightAsNumber();\n return rowsToBuffer * defaultRowHeight;\n };\n // the user might be using some non-standard scrollbar, eg a scrollbar that has zero\n // width and overlays (like the Safari scrollbar, but presented in Chrome). so we\n // allow the user to provide the scroll width before we work it out.\n GridOptionsWrapper.prototype.getScrollbarWidth = function () {\n if (this.scrollWidth == null) {\n var useGridOptions = typeof this.gridOptions.scrollbarWidth === 'number' &&\n this.gridOptions.scrollbarWidth >= 0;\n this.scrollWidth = useGridOptions ? this.gridOptions.scrollbarWidth : _.getScrollbarWidth();\n }\n return this.scrollWidth;\n };\n GridOptionsWrapper.prototype.checkForDeprecated = function () {\n var _this = this;\n // casting to generic object, so typescript compiles even though\n // we are looking for attributes that don't exist\n var options = this.gridOptions;\n if (options.suppressUnSort) {\n console.warn('ag-grid: as of v1.12.4 suppressUnSort is not used. Please use sortingOrder instead.');\n }\n if (options.suppressDescSort) {\n console.warn('ag-grid: as of v1.12.4 suppressDescSort is not used. Please use sortingOrder instead.');\n }\n if (options.groupAggFields) {\n console.warn('ag-grid: as of v3 groupAggFields is not used. Please add appropriate agg fields to your columns.');\n }\n if (options.groupHidePivotColumns) {\n console.warn('ag-grid: as of v3 groupHidePivotColumns is not used as pivot columns are now called rowGroup columns. Please refer to the documentation');\n }\n if (options.groupKeys) {\n console.warn('ag-grid: as of v3 groupKeys is not used. You need to set rowGroupIndex on the columns to group. Please refer to the documentation');\n }\n if (typeof options.groupDefaultExpanded === 'boolean') {\n console.warn('ag-grid: groupDefaultExpanded can no longer be boolean. for groupDefaultExpanded=true, use groupDefaultExpanded=9999 instead, to expand all the groups');\n }\n if (options.onRowDeselected || options.rowDeselected) {\n console.warn('ag-grid: since version 3.4 event rowDeselected no longer exists, please check the docs');\n }\n if (options.rowsAlreadyGrouped) {\n console.warn('ag-grid: since version 3.4 rowsAlreadyGrouped no longer exists, please use getNodeChildDetails() instead');\n }\n if (options.groupAggFunction) {\n console.warn('ag-grid: since version 4.3.x groupAggFunction is now called groupRowAggNodes');\n }\n if (options.checkboxSelection) {\n console.warn('ag-grid: since version 8.0.x checkboxSelection is not supported as a grid option. ' +\n 'If you want this on all columns, use defaultColDef instead and set it there');\n }\n if (options.paginationInitialRowCount) {\n console.warn('ag-grid: since version 9.0.x paginationInitialRowCount is now called infiniteInitialRowCount');\n }\n if (options.infinitePageSize) {\n console.warn('ag-grid: since version 9.0.x infinitePageSize is now called cacheBlockSize');\n }\n if (options.infiniteBlockSize) {\n console.warn('ag-grid: since version 10.0.x infiniteBlockSize is now called cacheBlockSize');\n }\n if (options.maxPagesInCache) {\n console.warn('ag-grid: since version 10.0.x maxPagesInCache is now called maxBlocksInCache');\n }\n if (options.paginationOverflowSize) {\n console.warn('ag-grid: since version 10.0.x paginationOverflowSize is now called cacheOverflowSize');\n }\n // if (options.forPrint) {\n // console.warn('ag-grid: since version 10.1.x, use property domLayout=\"forPrint\" instead of forPrint=true');\n // }\n if (options.suppressMenuFilterPanel) {\n console.warn(\"ag-grid: since version 11.0.x, use property colDef.menuTabs=['generalMenuTab','columnsMenuTab'] instead of suppressMenuFilterPanel=true\");\n }\n if (options.suppressMenuMainPanel) {\n console.warn(\"ag-grid: since version 11.0.x, use property colDef.menuTabs=['filterMenuTab','columnsMenuTab'] instead of suppressMenuMainPanel=true\");\n }\n if (options.suppressMenuColumnPanel) {\n console.warn(\"ag-grid: since version 11.0.x, use property colDef.menuTabs=['generalMenuTab','filterMenuTab'] instead of suppressMenuColumnPanel=true\");\n }\n if (options.suppressUseColIdForGroups) {\n console.warn(\"ag-grid: since version 11.0.x, this is not in use anymore. You should be able to remove it from your definition\");\n }\n if (options.groupSuppressRow) {\n console.warn(\"ag-grid: since version 18.2.x, 'groupSuppressRow' should not be used anymore. Instead remove row groups and perform custom sorting.\");\n }\n if (options.groupColumnDef) {\n console.warn(\"ag-grid: since version 11.0.x, groupColumnDef has been renamed, this property is now called autoGroupColumnDef. Please change your configuration accordingly\");\n }\n if (options.slaveGrids) {\n console.warn(\"ag-grid: since version 12.x, slaveGrids has been renamed, this property is now called alignedGrids. Please change your configuration accordingly\");\n }\n if (options.floatingTopRowData) {\n console.warn(\"ag-grid: since version 12.x, floatingTopRowData is now called pinnedTopRowData\");\n }\n if (options.floatingBottomRowData) {\n console.warn(\"ag-grid: since version 12.x, floatingBottomRowData is now called pinnedBottomRowData\");\n }\n if (options.paginationStartPage) {\n console.warn(\"ag-grid: since version 12.x, paginationStartPage is gone, please call api.paginationGoToPage(\" + options.paginationStartPage + \") instead.\");\n }\n if (options.getHeaderCellTemplate) {\n console.warn(\"ag-grid: since version 15.x, getHeaderCellTemplate is gone, please check the header documentation on how to set header templates.\");\n }\n if (options.headerCellTemplate) {\n console.warn(\"ag-grid: since version 15.x, headerCellTemplate is gone, please check the header documentation on how to set header templates.\");\n }\n if (options.headerCellRenderer) {\n console.warn(\"ag-grid: since version 15.x, headerCellRenderer is gone, please check the header documentation on how to set header templates.\");\n }\n if (options.angularCompileHeaders) {\n console.warn(\"ag-grid: since version 15.x, angularCompileHeaders is gone, please see the getting started for Angular 1 docs to see how to do headers in Angular 1.x.\");\n }\n if (options.pivotTotals) {\n console.warn(\"ag-grid: since version 18.x, pivotTotals has been removed, instead if using pivotTotals, set pivotColumnGroupTotals='before'|'after'.\");\n options.pivotColumnGroupTotals = 'before';\n }\n if (options.rowModelType === 'inMemory') {\n console.warn(\"ag-grid: since version 18.x, The In Memory Row Model has been renamed to the Client Side Row Model, set rowModelType='clientSide' instead.\");\n options.rowModelType = 'clientSide';\n }\n if (options.rowModelType === 'enterprise') {\n console.warn(\"ag-grid: since version 18.x, The Enterprise Row Model has been renamed to the Server Side Row Model, set rowModelType='serverSide' instead.\");\n options.rowModelType = 'serverSide';\n }\n if (options.layoutInterval) {\n console.warn(\"ag-grid: since version 18.x, layoutInterval is no longer a property. This is because the grid now uses CSS Flex for layout.\");\n }\n if (options.gridAutoHeight) {\n console.warn(\"ag-grid: since version 19.x, gridAutoHeight is gone, please use domLayout=autoHeight instead\");\n options.domLayout = 'autoHeight';\n }\n if (options.showToolPanel === true) {\n console.warn(\"ag-grid: since version 19.x, showToolPanel is gone, please specify toolPanel components. See https://www.ag-grid.com/javascript-grid-tool-panel/\");\n options.showToolPanel = undefined;\n options.sideBar = options.sideBar || true;\n }\n if (options.showToolPanel === false) {\n console.warn(\"ag-grid: since version 19.x, showToolPanel is gone, please specify toolPanel components. See https://www.ag-grid.com/javascript-grid-tool-panel/\");\n options.showToolPanel = undefined;\n options.sideBar = options.sideBar || false;\n }\n var oldToolPanelProperties = {\n toolPanelSuppressRowGroups: 'suppressRowGroups',\n toolPanelSuppressValues: 'suppressValues',\n toolPanelSuppressPivots: 'suppressPivots',\n toolPanelSuppressPivotMode: 'suppressPivotMode',\n toolPanelSuppressColumnFilter: 'suppressColumnFilter',\n toolPanelSuppressColumnSelectAll: 'suppressColumnSelectAll',\n toolPanelSuppressSideButtons: 'suppressSideButtons',\n toolPanelSuppressColumnExpandAll: 'suppressColumnExpandAll',\n contractColumnSelection: 'contractColumnSelection'\n };\n var toolPanelColumnsCompProps = {};\n Object.keys(oldToolPanelProperties).forEach(function (key) {\n var translation = oldToolPanelProperties[key];\n var value = _this.gridOptions[key];\n if (value !== undefined) {\n if (key === 'toolPanelSuppressSideButtons') {\n console.warn('ag-grid: since v19.0 toolPanelSuppressSideButtons has been completely removed. See https://www.ag-grid.com/javascript-grid-tool-panel/');\n return;\n }\n console.warn(\"ag-grid: since v19.0 gridOptions.\" + key + \" is deprecated, please use gridOptions.sideBar.toolPanel[columnsIndex].componentParams.\" + translation);\n toolPanelColumnsCompProps[translation] = value;\n }\n });\n if (Object.keys(toolPanelColumnsCompProps).length > 0 && !_.exists(options.sideBar)) {\n console.warn(\"ag-grid: since version 19.x, sideBar is mandatory if using toolPanel related properties. See https://www.ag-grid.com/javascript-grid-tool-panel/\");\n options.sideBar = true;\n }\n if (options.sideBar != null) {\n options.sideBar = SideBarDefParser.parse(options.sideBar);\n }\n var sideBarDef = this.gridOptions.sideBar;\n if (Object.keys(toolPanelColumnsCompProps).length > 0 && sideBarDef && sideBarDef.toolPanels) {\n var columnsDef = (sideBarDef.toolPanels.filter(function (it) { return it.id === 'columns'; }));\n if (columnsDef.length === 1) {\n _.mergeDeep(columnsDef[0], {\n componentParams: toolPanelColumnsCompProps\n });\n }\n }\n if (options.enableStatusBar) {\n console.warn(\"ag-grid: since version 19.x, enableStatusBar is gone, please specify statusBar components\");\n options.statusBar = options.statusBar ||\n {\n components: [{ component: 'agAggregationComponent' }]\n };\n }\n if (options.alwaysShowStatusBar) {\n console.warn(\"ag-grid: since version 19.x, alwaysShowStatusBar is gone. Please specify a min-height on the ag-status-bar css class, eg .ag-status-bar {min-height: 35px; }\");\n }\n if (options.enableServerSideSorting || options.enableSorting) {\n console.warn(\"ag-Grid: since v20, grid options enableSorting and enableServerSideSorting are gone. Instead set sortable=true on the column definition for the columns sorting are allowed on. To migrate from gridOption.enableSorting=true, set gridOptions.defaultColDef.sortable=true\");\n if (!options.defaultColDef) {\n options.defaultColDef = {};\n }\n if (!options.defaultColDef.sortable) {\n options.defaultColDef.sortable = true;\n }\n }\n if (options.enableFilter || options.enableServerSideFilter) {\n console.warn(\"ag-Grid: since v20, grid options enableFilter and enableServerSideFilter are gone. Instead set filter=true (if not already specifying a specific filter) on the column definition for the columns filtering is allowed on. To migrate from gridOptions.enableFilter=true, set gridOptions.defaultColDef.filter=true. If you are explicitly setting specific filters for each column (ie colDef.filter is already set) the you don't need to do anything.\");\n if (!options.defaultColDef) {\n options.defaultColDef = {};\n }\n if (!options.defaultColDef.filter) {\n options.defaultColDef.filter = true;\n }\n }\n if (options.enableColResize) {\n console.warn(\"ag-Grid: since v20, grid options enableColResize is gone. Instead set resizable=true on the column definition for the columns resizing are allowed on. To migrate from gridOption.enableColResize=true, set gridOptions.defaultColDef.resizable=true\");\n if (!options.defaultColDef) {\n options.defaultColDef = {};\n }\n if (!options.defaultColDef.resizable) {\n options.defaultColDef.resizable = true;\n }\n }\n if (options.deprecatedEmbedFullWidthRows) {\n console.warn(\"ag-Grid: since v21.2, deprecatedEmbedFullWidthRows has been replaced with embedFullWidthRows.\");\n }\n if (options.suppressTabbing) {\n console.warn(\"ag-Grid: since v20.1, suppressTabbing is replaced with the more powerful grid callback suppressKeyboardEvent(params) which can suppress any keyboard event including tabbing.\");\n }\n if (options.doesDataFlower) {\n console.warn('ag-Grid: since v21.1, doesDataFlower is deprecated. Master/Detail is the new way for showing child data for a row and was introduced over a year ago. Please migrate your code to use master/detail instead.');\n }\n if (options.enableOldSetFilterModel) {\n console.warn('ag-Grid: since v22.x, enableOldSetFilterModel is deprecated. Please move to the new Set Filter Model as the old one may not be supported in v23 onwards.');\n }\n };\n GridOptionsWrapper.prototype.checkForViolations = function () {\n if (this.isTreeData()) {\n this.treeDataViolations();\n }\n };\n GridOptionsWrapper.prototype.treeDataViolations = function () {\n if (this.isRowModelDefault()) {\n if (_.missing(this.getDataPathFunc())) {\n console.warn('ag-Grid: property usingTreeData=true with rowModel=clientSide, but you did not ' +\n 'provide getDataPath function, please provide getDataPath function if using tree data.');\n }\n }\n if (this.isRowModelServerSide()) {\n if (_.missing(this.getIsServerSideGroupFunc())) {\n console.warn('ag-Grid: property usingTreeData=true with rowModel=serverSide, but you did not ' +\n 'provide isServerSideGroup function, please provide isServerSideGroup function if using tree data.');\n }\n if (_.missing(this.getServerSideGroupKeyFunc())) {\n console.warn('ag-Grid: property usingTreeData=true with rowModel=serverSide, but you did not ' +\n 'provide getServerSideGroupKey function, please provide getServerSideGroupKey function if using tree data.');\n }\n }\n };\n GridOptionsWrapper.prototype.getLocaleTextFunc = function () {\n if (this.gridOptions.localeTextFunc) {\n return this.gridOptions.localeTextFunc;\n }\n var that = this;\n return function (key, defaultValue) {\n var localeText = that.gridOptions.localeText;\n if (localeText && localeText[key]) {\n return localeText[key];\n }\n return defaultValue;\n };\n };\n // responsible for calling the onXXX functions on gridOptions\n GridOptionsWrapper.prototype.globalEventHandler = function (eventName, event) {\n var callbackMethodName = ComponentUtil.getCallbackForEvent(eventName);\n if (typeof this.gridOptions[callbackMethodName] === 'function') {\n this.gridOptions[callbackMethodName](event);\n }\n };\n // we don't allow dynamic row height for virtual paging\n GridOptionsWrapper.prototype.getRowHeightAsNumber = function () {\n if (!this.gridOptions.rowHeight || _.missing(this.gridOptions.rowHeight)) {\n return this.getDefaultRowHeight();\n }\n else if (this.gridOptions.rowHeight && this.isNumeric(this.gridOptions.rowHeight)) {\n return this.gridOptions.rowHeight;\n }\n console.warn('ag-Grid row height must be a number if not using standard row model');\n return this.getDefaultRowHeight();\n };\n GridOptionsWrapper.prototype.getRowHeightForNode = function (rowNode, allowEstimate) {\n // check the function first, in case use set both function and\n // number, when using virtual pagination then function can be\n // used for pinned rows and the number for the body rows.\n if (allowEstimate === void 0) { allowEstimate = false; }\n if (typeof this.gridOptions.getRowHeight === 'function') {\n if (allowEstimate) {\n return { height: this.getDefaultRowHeight(), estimated: true };\n }\n var params = {\n node: rowNode,\n data: rowNode.data,\n api: this.gridOptions.api,\n context: this.gridOptions.context\n };\n return { height: this.gridOptions.getRowHeight(params), estimated: false };\n }\n else if (rowNode.detail && this.isMasterDetail()) {\n if (this.isNumeric(this.gridOptions.detailRowHeight)) {\n return { height: this.gridOptions.detailRowHeight, estimated: false };\n }\n return { height: DEFAULT_DETAIL_ROW_HEIGHT, estimated: false };\n }\n var defaultRowHeight = this.getDefaultRowHeight();\n var rowHeight = this.gridOptions.rowHeight && this.isNumeric(this.gridOptions.rowHeight) ?\n this.gridOptions.rowHeight : defaultRowHeight;\n var minRowHeight = Math.min(defaultRowHeight, rowHeight);\n if (this.columnController.isAutoRowHeightActive()) {\n if (allowEstimate) {\n return { height: rowHeight, estimated: true };\n }\n var autoHeight = this.autoHeightCalculator.getPreferredHeightForRow(rowNode);\n // never return less than the default row height - covers when auto height\n // cells are blank.\n return { height: Math.max(autoHeight, minRowHeight), estimated: false };\n }\n return { height: rowHeight, estimated: false };\n };\n GridOptionsWrapper.prototype.isDynamicRowHeight = function () {\n return typeof this.gridOptions.getRowHeight === 'function';\n };\n GridOptionsWrapper.prototype.getVirtualItemHeight = function () {\n return this.specialForNewMaterial(20, 'virtualItemHeight');\n };\n GridOptionsWrapper.prototype.isNumeric = function (value) {\n return !isNaN(value) && typeof value === 'number';\n };\n // Material data table has strict guidelines about whitespace, and these values are different than the ones\n // ag-grid uses by default. We override the default ones for the sake of making it better out of the box\n GridOptionsWrapper.prototype.specialForNewMaterial = function (defaultValue, sassVariableName) {\n var theme = this.environment.getTheme().theme;\n if (theme && theme.indexOf('ag-theme') === 0) {\n return this.environment.getSassVariable(theme, sassVariableName);\n }\n return defaultValue;\n };\n GridOptionsWrapper.prototype.getDefaultRowHeight = function () {\n return this.specialForNewMaterial(DEFAULT_ROW_HEIGHT, 'rowHeight');\n };\n var GridOptionsWrapper_1;\n GridOptionsWrapper.MIN_COL_WIDTH = 10;\n GridOptionsWrapper.PROP_HEADER_HEIGHT = 'headerHeight';\n GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN = 'groupRemoveSingleChildren';\n GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN = 'groupRemoveLowestSingleChildren';\n GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT = 'pivotHeaderHeight';\n GridOptionsWrapper.PROP_SUPPRESS_CLIPBOARD_PASTE = 'suppressClipboardPaste';\n GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT = 'groupHeaderHeight';\n GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT = 'pivotGroupHeaderHeight';\n GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT = 'floatingFiltersHeight';\n GridOptionsWrapper.PROP_SUPPRESS_ROW_DRAG = 'suppressRowDrag';\n GridOptionsWrapper.PROP_POPUP_PARENT = 'popupParent';\n GridOptionsWrapper.PROP_DOM_LAYOUT = 'domLayout';\n __decorate([\n Autowired('gridOptions')\n ], GridOptionsWrapper.prototype, \"gridOptions\", void 0);\n __decorate([\n Autowired('columnController')\n ], GridOptionsWrapper.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], GridOptionsWrapper.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], GridOptionsWrapper.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], GridOptionsWrapper.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('environment')\n ], GridOptionsWrapper.prototype, \"environment\", void 0);\n __decorate([\n Autowired('autoHeightCalculator')\n ], GridOptionsWrapper.prototype, \"autoHeightCalculator\", void 0);\n __decorate([\n Autowired('context')\n ], GridOptionsWrapper.prototype, \"context\", void 0);\n __decorate([\n __param(0, Qualifier('gridApi')), __param(1, Qualifier('columnApi'))\n ], GridOptionsWrapper.prototype, \"agWire\", null);\n __decorate([\n PreDestroy\n ], GridOptionsWrapper.prototype, \"destroy\", null);\n __decorate([\n PostConstruct\n ], GridOptionsWrapper.prototype, \"init\", null);\n GridOptionsWrapper = GridOptionsWrapper_1 = __decorate([\n Bean('gridOptionsWrapper')\n ], GridOptionsWrapper);\n return GridOptionsWrapper;\n}());\nexport { GridOptionsWrapper };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { _ } from \"../utils\";\nvar ModuleRegistry = /** @class */ (function () {\n function ModuleRegistry() {\n }\n ModuleRegistry.register = function (module) {\n this.modulesMap[module.moduleName] = module;\n };\n ModuleRegistry.assertRegistered = function (moduleName, reason) {\n if (this.isRegistered(moduleName)) {\n return true;\n }\n var warningKey = reason + moduleName;\n var warningMessage = \"ag-Grid: unable to use \" + reason + \" as module \" + moduleName + \" is not present. \"\n + (\"You need to load the module with: import \\\"\" + moduleName + \"\\\"\");\n _.doOnce(function () { console.warn(warningMessage); }, warningKey);\n return false;\n };\n ModuleRegistry.isRegistered = function (moduleName) {\n return !!this.modulesMap[moduleName];\n };\n ModuleRegistry.getRegisteredModules = function () {\n return _.values(this.modulesMap);\n };\n // having in a map a) removes duplicates and b) allows fast lookup\n ModuleRegistry.modulesMap = {};\n return ModuleRegistry;\n}());\nexport { ModuleRegistry };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport var ModuleNames;\n(function (ModuleNames) {\n // when using modules, user references this\n ModuleNames[\"CommunityCoreModule\"] = \"@ag-grid-community/core\";\n // when not using modules, user references this\n ModuleNames[\"CommunityAllModules\"] = \"@ag-grid-community/all\";\n // community modules\n ModuleNames[\"InfiniteRowModelModule\"] = \"@ag-grid-community/infinite-row-model\";\n ModuleNames[\"ClientSideRowModelModule\"] = \"@ag-grid-community/client-side-row-model\";\n ModuleNames[\"CsvExportModule\"] = \"@ag-grid-community/csv-export\";\n ModuleNames[\"RowNodeCache\"] = \"@ag-grid-community/row-node-cache\";\n // enterprise core - users never import on this, but other enterprise modules do\n ModuleNames[\"EnterpriseCoreModule\"] = \"@ag-grid-enterprise/core\";\n // when not using modules, user references this\n ModuleNames[\"EnterpriseAllModules\"] = \"@ag-grid-enterprise/all\";\n // enterprise modules\n ModuleNames[\"RowGroupingModule\"] = \"@ag-grid-enterprise/row-grouping\";\n ModuleNames[\"ColumnToolPanelModule\"] = \"@ag-grid-enterprise/column-tool-panel\";\n ModuleNames[\"FiltersToolPanelModule\"] = \"@ag-grid-enterprise/filters-tool-panel\";\n ModuleNames[\"MenuModule\"] = \"@ag-grid-enterprise/menu\";\n ModuleNames[\"SetFilterModule\"] = \"@ag-grid-enterprise/set-filter\";\n ModuleNames[\"StatusBarModule\"] = \"@ag-grid-enterprise/status-bar\";\n ModuleNames[\"SideBarModule\"] = \"@ag-grid-enterprise/side-bar\";\n ModuleNames[\"RangeSelectionModule\"] = \"@ag-grid-enterprise/range-selection\";\n ModuleNames[\"MasterDetailModule\"] = \"@ag-grid-enterprise/master-detail\";\n ModuleNames[\"RichSelectModule\"] = \"@ag-grid-enterprise/rich-select\";\n ModuleNames[\"GridChartsModule\"] = \"@ag-grid-enterprise/charts\";\n ModuleNames[\"ViewportRowModelModule\"] = \"@ag-grid-enterprise/viewport-row-model\";\n ModuleNames[\"ServerSideRowModelModule\"] = \"@ag-grid-enterprise/server-side-row-model\";\n ModuleNames[\"ExcelExportModule\"] = \"@ag-grid-enterprise/excel-export\";\n ModuleNames[\"ClipboardModule\"] = \"@ag-grid-enterprise/clipboard\";\n // framework wrappers currently don't provide beans, comps etc, so no need to be modules,\n // however i argue they should be as in theory they 'could' provide beans etc\n ModuleNames[\"AngularModule\"] = \"@ag-grid-community/angular\";\n ModuleNames[\"ReactModule\"] = \"@ag-grid-community/react\";\n ModuleNames[\"VueModule\"] = \"@ag-grid-community/vue\";\n ModuleNames[\"PolymerModule\"] = \"@ag-grid-community/polymer\";\n // and then this, which is definitely not a grid module, as it should not have any dependency\n // on the grid (ie shouldn't even reference the Module interface)\n // ChartsModule = \"@ag-grid-community/charts-core\",\n})(ModuleNames || (ModuleNames = {}));\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import React from 'react';\nimport ApolloClient from 'apollo-client';\n\nexport interface ApolloContextValue {\n client?: ApolloClient;\n renderPromises?: Record;\n}\n\nlet apolloContext: React.Context;\n\nexport function getApolloContext() {\n if (!apolloContext) {\n apolloContext = React.createContext({});\n }\n return apolloContext;\n}\n\nexport function resetApolloContext() {\n apolloContext = React.createContext({});\n}\n","import {\n DocumentNode,\n DefinitionNode,\n VariableDefinitionNode,\n OperationDefinitionNode\n} from 'graphql';\nimport { invariant } from 'ts-invariant';\n\nexport enum DocumentType {\n Query,\n Mutation,\n Subscription\n}\n\nexport interface IDocumentDefinition {\n type: DocumentType;\n name: string;\n variables: ReadonlyArray;\n}\n\nconst cache = new Map();\n\nexport function operationName(type: DocumentType) {\n let name;\n switch (type) {\n case DocumentType.Query:\n name = 'Query';\n break;\n case DocumentType.Mutation:\n name = 'Mutation';\n break;\n case DocumentType.Subscription:\n name = 'Subscription';\n break;\n }\n return name;\n}\n\n// This parser is mostly used to saftey check incoming documents.\nexport function parser(document: DocumentNode): IDocumentDefinition {\n const cached = cache.get(document);\n if (cached) return cached;\n\n let variables, type, name;\n\n invariant(\n !!document && !!document.kind,\n `Argument of ${document} passed to parser was not a valid GraphQL ` +\n `DocumentNode. You may need to use 'graphql-tag' or another method ` +\n `to convert your operation into a document`\n );\n\n const fragments = document.definitions.filter(\n (x: DefinitionNode) => x.kind === 'FragmentDefinition'\n );\n\n const queries = document.definitions.filter(\n (x: DefinitionNode) =>\n x.kind === 'OperationDefinition' && x.operation === 'query'\n );\n\n const mutations = document.definitions.filter(\n (x: DefinitionNode) =>\n x.kind === 'OperationDefinition' && x.operation === 'mutation'\n );\n\n const subscriptions = document.definitions.filter(\n (x: DefinitionNode) =>\n x.kind === 'OperationDefinition' && x.operation === 'subscription'\n );\n\n invariant(\n !fragments.length ||\n (queries.length || mutations.length || subscriptions.length),\n `Passing only a fragment to 'graphql' is not yet supported. ` +\n `You must include a query, subscription or mutation as well`\n );\n\n invariant(\n queries.length + mutations.length + subscriptions.length <= 1,\n `react-apollo only supports a query, subscription, or a mutation per HOC. ` +\n `${document} had ${queries.length} queries, ${subscriptions.length} ` +\n `subscriptions and ${mutations.length} mutations. ` +\n `You can use 'compose' to join multiple operation types to a component`\n );\n\n type = queries.length ? DocumentType.Query : DocumentType.Mutation;\n if (!queries.length && !mutations.length) type = DocumentType.Subscription;\n\n const definitions = queries.length\n ? queries\n : mutations.length\n ? mutations\n : subscriptions;\n\n invariant(\n definitions.length === 1,\n `react-apollo only supports one definition per HOC. ${document} had ` +\n `${definitions.length} definitions. ` +\n `You can use 'compose' to join multiple operation types to a component`\n );\n\n const definition = definitions[0] as OperationDefinitionNode;\n variables = definition.variableDefinitions || [];\n\n if (definition.name && definition.name.kind === 'Name') {\n name = definition.name.value;\n } else {\n name = 'data'; // fallback to using data if no name\n }\n\n const payload = { name, type, variables };\n cache.set(document, payload);\n return payload;\n}\n","import React from 'react';\nimport ApolloClient from 'apollo-client';\nimport { invariant } from 'ts-invariant';\n\nimport { getApolloContext } from './ApolloContext';\n\nexport interface ApolloProviderProps {\n client: ApolloClient;\n children: React.ReactNode | React.ReactNode[] | null;\n}\n\nexport const ApolloProvider: React.FC> = ({\n client,\n children\n}) => {\n const ApolloContext = getApolloContext();\n return (\n \n {(context = {}) => {\n if (client && context.client !== client) {\n context = Object.assign({}, context, { client });\n }\n\n invariant(\n context.client,\n 'ApolloProvider was not passed a client instance. Make ' +\n 'sure you pass in your client via the \"client\" prop.'\n );\n\n return (\n \n {children}\n \n );\n }}\n \n );\n};\n","import React from 'react';\nimport ApolloClient from 'apollo-client';\nimport { invariant } from 'ts-invariant';\n\nimport { getApolloContext } from './ApolloContext';\n\nexport interface ApolloConsumerProps {\n children: (client: ApolloClient) => React.ReactChild | null;\n}\n\nexport const ApolloConsumer: React.FC = props => {\n const ApolloContext = getApolloContext();\n return (\n \n {(context: any) => {\n invariant(\n context && context.client,\n 'Could not find \"client\" in the context of ApolloConsumer. ' +\n 'Wrap the root component in an .'\n );\n return props.children(context.client);\n }}\n \n );\n};\n","var __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};\nimport { _, Autowired, Bean, PreConstruct } from '@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 (_.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 (_.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 !_.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 = 'MTU3MzIwODgzODA2OQ==';\n __decorate([\n Autowired('md5')\n ], LicenseManager.prototype, \"md5\", void 0);\n __decorate([\n PreConstruct\n ], LicenseManager.prototype, \"validateLicense\", null);\n LicenseManager = LicenseManager_1 = __decorate([\n Bean('licenseManager')\n ], LicenseManager);\n return LicenseManager;\n}());\nexport { LicenseManager };\n","var __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};\nimport { Bean, PostConstruct } from \"@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 PostConstruct\n ], MD5.prototype, \"init\", null);\n MD5 = __decorate([\n Bean('md5')\n ], MD5);\n return MD5;\n}());\nexport { MD5 };\n","var __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};\nimport { _, Autowired, Component, PostConstruct, RefSelector } from '@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 _.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 Autowired('licenseManager')\n ], WatermarkComp.prototype, \"licenseManager\", void 0);\n __decorate([\n RefSelector('eLicenseTextRef')\n ], WatermarkComp.prototype, \"eLicenseTextRef\", void 0);\n __decorate([\n PostConstruct\n ], WatermarkComp.prototype, \"postConstruct\", null);\n return WatermarkComp;\n}(Component));\nexport { WatermarkComp };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { LicenseManager } from \"./licenseManager\";\nimport { MD5 } from \"./license/md5\";\nimport { WatermarkComp } from \"./license/watermark\";\nexport { LicenseManager } from \"./licenseManager\";\nexport { MD5 } from \"./license/md5\";\nexport { WatermarkComp } from \"./license/watermark\";\nexport var EnterpriseCoreModule = {\n moduleName: ModuleNames.EnterpriseCoreModule,\n beans: [LicenseManager, MD5],\n agStackComponents: [\n { componentName: 'AgWatermark', componentClass: WatermarkComp }\n ]\n};\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport gud from 'gud';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + gud() + '__';\n\n var Provider =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer =\n /*#__PURE__*/\n function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle\";\nimport RouterContext from \"./RouterContext\";\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\nfunction Prompt({ message, when = true }) {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n if (!when || context.staticContext) return null;\n\n const method = context.history.block;\n\n return (\n {\n self.release = method(message);\n }}\n onUpdate={(self, prevProps) => {\n if (prevProps.message !== message) {\n self.release();\n self.release = method(message);\n }\n }}\n onUnmount={self => {\n self.release();\n }}\n message={message}\n />\n );\n }}\n \n );\n}\n\nif (__DEV__) {\n const messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n\n Prompt.propTypes = {\n when: PropTypes.bool,\n message: messageType.isRequired\n };\n}\n\nexport default Prompt;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle\";\nimport RouterContext from \"./RouterContext\";\nimport generatePath from \"./generatePath\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n \n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\nimport matchPath from \"./matchPath\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(Context).history;\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(Context).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(Context).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n return path\n ? matchPath(useLocation().pathname, path)\n : useContext(Context).match;\n}\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { EventService } from \"../eventService\";\nimport { Events } from \"../events\";\nimport { Autowired } from \"../context/context\";\nimport { Constants } from \"../constants\";\nimport { _ } from \"../utils\";\nvar RowNode = /** @class */ (function () {\n function RowNode() {\n /** Children mapped by the pivot columns */\n this.childrenMapped = {};\n /** True by default - can be overridden via gridOptions.isRowSelectable(rowNode) */\n this.selectable = true;\n /** Used by sorting service - to give deterministic sort to groups. Previously we\n * just id for this, however id is a string and had slower sorting compared to numbers. */\n this.__objectId = RowNode.OBJECT_ID_SEQUENCE++;\n /** True when nodes with the same id are being removed and added as part of the same batch transaction */\n this.alreadyRendered = false;\n this.selected = false;\n }\n RowNode.prototype.setData = function (data) {\n var oldData = this.data;\n this.data = data;\n this.valueCache.onDataChanged();\n this.updateDataOnDetailNode();\n this.checkRowSelectable();\n var event = this.createDataChangedEvent(data, oldData, false);\n this.dispatchLocalEvent(event);\n };\n // when we are doing master / detail, the detail node is lazy created, but then kept around.\n // so if we show / hide the detail, the same detail rowNode is used. so we need to keep the data\n // in sync, otherwise expand/collapse of the detail would still show the old values.\n RowNode.prototype.updateDataOnDetailNode = function () {\n if (this.detailNode) {\n this.detailNode.data = this.data;\n }\n };\n RowNode.prototype.createDataChangedEvent = function (newData, oldData, update) {\n return {\n type: RowNode.EVENT_DATA_CHANGED,\n node: this,\n oldData: oldData,\n newData: newData,\n update: update\n };\n };\n RowNode.prototype.createLocalRowEvent = function (type) {\n return {\n type: type,\n node: this\n };\n };\n // similar to setRowData, however it is expected that the data is the same data item. this\n // is intended to be used with Redux type stores, where the whole data can be changed. we are\n // guaranteed that the data is the same entity (so grid doesn't need to worry about the id of the\n // underlying data changing, hence doesn't need to worry about selection). the grid, upon receiving\n // dataChanged event, will refresh the cells rather than rip them all out (so user can show transitions).\n RowNode.prototype.updateData = function (data) {\n var oldData = this.data;\n this.data = data;\n this.updateDataOnDetailNode();\n this.checkRowSelectable();\n this.updateDataOnDetailNode();\n var event = this.createDataChangedEvent(data, oldData, true);\n this.dispatchLocalEvent(event);\n };\n RowNode.prototype.getRowIndexString = function () {\n if (this.rowPinned === Constants.PINNED_TOP) {\n return 't-' + this.rowIndex;\n }\n else if (this.rowPinned === Constants.PINNED_BOTTOM) {\n return 'b-' + this.rowIndex;\n }\n else {\n return this.rowIndex.toString();\n }\n };\n RowNode.prototype.createDaemonNode = function () {\n var oldNode = new RowNode();\n this.context.wireBean(oldNode);\n // just copy the id and data, this is enough for the node to be used\n // in the selection controller (the selection controller is the only\n // place where daemon nodes can live).\n oldNode.id = this.id;\n oldNode.data = this.data;\n oldNode.daemon = true;\n oldNode.selected = this.selected;\n oldNode.level = this.level;\n return oldNode;\n };\n RowNode.prototype.setDataAndId = function (data, id) {\n var oldNode = _.exists(this.id) ? this.createDaemonNode() : null;\n var oldData = this.data;\n this.data = data;\n this.updateDataOnDetailNode();\n this.setId(id);\n this.selectionController.syncInRowNode(this, oldNode);\n this.checkRowSelectable();\n var event = this.createDataChangedEvent(data, oldData, false);\n this.dispatchLocalEvent(event);\n };\n RowNode.prototype.checkRowSelectable = function () {\n var isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();\n var shouldInvokeIsRowSelectable = isRowSelectableFunc && _.exists(this);\n this.setRowSelectable(shouldInvokeIsRowSelectable ? isRowSelectableFunc(this) : true);\n };\n RowNode.prototype.setRowSelectable = function (newVal) {\n if (this.selectable !== newVal) {\n this.selectable = newVal;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_SELECTABLE_CHANGED));\n }\n }\n };\n RowNode.prototype.setId = function (id) {\n // see if user is providing the id's\n var getRowNodeId = this.gridOptionsWrapper.getRowNodeIdFunc();\n if (getRowNodeId) {\n // if user is providing the id's, then we set the id only after the data has been set.\n // this is important for virtual pagination and viewport, where empty rows exist.\n if (this.data) {\n this.id = getRowNodeId(this.data);\n }\n else {\n // this can happen if user has set blank into the rowNode after the row previously\n // having data. this happens in virtual page row model, when data is delete and\n // the page is refreshed.\n this.id = undefined;\n }\n }\n else {\n this.id = id;\n }\n };\n RowNode.prototype.isPixelInRange = function (pixel) {\n return pixel >= this.rowTop && pixel < (this.rowTop + this.rowHeight);\n };\n RowNode.prototype.clearRowTop = function () {\n this.oldRowTop = this.rowTop;\n this.setRowTop(null);\n };\n RowNode.prototype.setFirstChild = function (firstChild) {\n if (this.firstChild === firstChild) {\n return;\n }\n this.firstChild = firstChild;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_FIRST_CHILD_CHANGED));\n }\n };\n RowNode.prototype.setLastChild = function (lastChild) {\n if (this.lastChild === lastChild) {\n return;\n }\n this.lastChild = lastChild;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_LAST_CHILD_CHANGED));\n }\n };\n RowNode.prototype.setChildIndex = function (childIndex) {\n if (this.childIndex === childIndex) {\n return;\n }\n this.childIndex = childIndex;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_CHILD_INDEX_CHANGED));\n }\n };\n RowNode.prototype.setRowTop = function (rowTop) {\n if (this.rowTop === rowTop) {\n return;\n }\n this.rowTop = rowTop;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_TOP_CHANGED));\n }\n };\n RowNode.prototype.setDragging = function (dragging) {\n if (this.dragging === dragging) {\n return;\n }\n this.dragging = dragging;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_DRAGGING_CHANGED));\n }\n };\n RowNode.prototype.setAllChildrenCount = function (allChildrenCount) {\n if (this.allChildrenCount === allChildrenCount) {\n return;\n }\n this.allChildrenCount = allChildrenCount;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED));\n }\n };\n RowNode.prototype.setRowHeight = function (rowHeight, estimated) {\n if (estimated === void 0) { estimated = false; }\n this.rowHeight = rowHeight;\n this.rowHeightEstimated = estimated;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HEIGHT_CHANGED));\n }\n };\n RowNode.prototype.setRowIndex = function (rowIndex) {\n this.rowIndex = rowIndex;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_INDEX_CHANGED));\n }\n };\n RowNode.prototype.setUiLevel = function (uiLevel) {\n if (this.uiLevel === uiLevel) {\n return;\n }\n this.uiLevel = uiLevel;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_UI_LEVEL_CHANGED));\n }\n };\n RowNode.prototype.setExpanded = function (expanded) {\n if (this.expanded === expanded) {\n return;\n }\n this.expanded = expanded;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_EXPANDED_CHANGED));\n }\n var event = this.createGlobalRowEvent(Events.EVENT_ROW_GROUP_OPENED);\n this.mainEventService.dispatchEvent(event);\n if (this.gridOptionsWrapper.isGroupIncludeFooter()) {\n this.gridApi.redrawRows({ rowNodes: [this] });\n }\n };\n RowNode.prototype.createGlobalRowEvent = function (type) {\n var event = {\n type: type,\n node: this,\n data: this.data,\n rowIndex: this.rowIndex,\n rowPinned: this.rowPinned,\n context: this.gridOptionsWrapper.getContext(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n return event;\n };\n RowNode.prototype.dispatchLocalEvent = function (event) {\n if (this.eventService) {\n this.eventService.dispatchEvent(event);\n }\n };\n // we also allow editing the value via the editors. when it is done via\n // the editors, no 'cell changed' event gets fired, as it's assumed that\n // the cell knows about the change given it's in charge of the editing.\n // this method is for the client to call, so the cell listens for the change\n // event, and also flashes the cell when the change occurs.\n RowNode.prototype.setDataValue = function (colKey, newValue) {\n var column = this.columnController.getPrimaryColumn(colKey);\n this.valueService.setValue(this, column, newValue);\n this.dispatchCellChangedEvent(column, newValue);\n };\n RowNode.prototype.setGroupValue = function (colKey, newValue) {\n var column = this.columnController.getGridColumn(colKey);\n if (_.missing(this.groupData)) {\n this.groupData = {};\n }\n this.groupData[column.getColId()] = newValue;\n this.dispatchCellChangedEvent(column, newValue);\n };\n // sets the data for an aggregation\n RowNode.prototype.setAggData = function (newAggData) {\n var _this = this;\n // find out all keys that could potentially change\n var colIds = _.getAllKeysInObjects([this.aggData, newAggData]);\n this.aggData = newAggData;\n // if no event service, nobody has registered for events, so no need fire event\n if (this.eventService) {\n colIds.forEach(function (colId) {\n var column = _this.columnController.getGridColumn(colId);\n var value = _this.aggData ? _this.aggData[colId] : undefined;\n _this.dispatchCellChangedEvent(column, value);\n });\n }\n };\n RowNode.prototype.hasChildren = function () {\n // we need to return true when this.group=true, as this is used by server side row model\n // (as children are lazy loaded and stored in a cache anyway). otherwise we return true\n // if children exist.\n return this.group || (this.childrenAfterGroup && this.childrenAfterGroup.length > 0);\n };\n RowNode.prototype.isEmptyRowGroupNode = function () {\n return this.group && _.missingOrEmpty(this.childrenAfterGroup);\n };\n RowNode.prototype.dispatchCellChangedEvent = function (column, newValue) {\n var cellChangedEvent = {\n type: RowNode.EVENT_CELL_CHANGED,\n node: this,\n column: column,\n newValue: newValue\n };\n this.dispatchLocalEvent(cellChangedEvent);\n };\n RowNode.prototype.resetQuickFilterAggregateText = function () {\n this.quickFilterAggregateText = null;\n };\n RowNode.prototype.isExpandable = function () {\n return this.hasChildren() || this.master;\n };\n RowNode.prototype.isSelected = function () {\n // for footers, we just return what our sibling selected state is, as cannot select a footer\n if (this.footer) {\n return this.sibling.isSelected();\n }\n return this.selected;\n };\n RowNode.prototype.depthFirstSearch = function (callback) {\n if (this.childrenAfterGroup) {\n this.childrenAfterGroup.forEach(function (child) { return child.depthFirstSearch(callback); });\n }\n callback(this);\n };\n // + rowController.updateGroupsInSelection()\n // + selectionController.calculatedSelectedForAllGroupNodes()\n RowNode.prototype.calculateSelectedFromChildren = function () {\n var atLeastOneSelected = false;\n var atLeastOneDeSelected = false;\n var atLeastOneMixed = false;\n var newSelectedValue;\n if (this.childrenAfterGroup) {\n for (var i = 0; i < this.childrenAfterGroup.length; i++) {\n var child = this.childrenAfterGroup[i];\n // skip non-selectable nodes to prevent inconsistent selection values\n if (!child.selectable) {\n continue;\n }\n var childState = child.isSelected();\n switch (childState) {\n case true:\n atLeastOneSelected = true;\n break;\n case false:\n atLeastOneDeSelected = true;\n break;\n default:\n atLeastOneMixed = true;\n break;\n }\n }\n }\n if (atLeastOneMixed) {\n newSelectedValue = undefined;\n }\n else if (atLeastOneSelected && !atLeastOneDeSelected) {\n newSelectedValue = true;\n }\n else if (!atLeastOneSelected && atLeastOneDeSelected) {\n newSelectedValue = false;\n }\n else {\n newSelectedValue = undefined;\n }\n this.selectThisNode(newSelectedValue);\n };\n RowNode.prototype.setSelectedInitialValue = function (selected) {\n this.selected = selected;\n };\n RowNode.prototype.setSelected = function (newValue, clearSelection, suppressFinishActions) {\n if (clearSelection === void 0) { clearSelection = false; }\n if (suppressFinishActions === void 0) { suppressFinishActions = false; }\n this.setSelectedParams({\n newValue: newValue,\n clearSelection: clearSelection,\n suppressFinishActions: suppressFinishActions,\n rangeSelect: false\n });\n };\n RowNode.prototype.isRowPinned = function () {\n return this.rowPinned === Constants.PINNED_TOP || this.rowPinned === Constants.PINNED_BOTTOM;\n };\n // to make calling code more readable, this is the same method as setSelected except it takes names parameters\n RowNode.prototype.setSelectedParams = function (params) {\n var groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n var newValue = params.newValue === true;\n var clearSelection = params.clearSelection === true;\n var suppressFinishActions = params.suppressFinishActions === true;\n var rangeSelect = params.rangeSelect === true;\n // groupSelectsFiltered only makes sense when group selects children\n var groupSelectsFiltered = groupSelectsChildren && (params.groupSelectsFiltered === true);\n if (this.id === undefined) {\n console.warn('ag-Grid: cannot select node until id for node is known');\n return 0;\n }\n if (this.rowPinned) {\n console.warn('ag-Grid: cannot select pinned rows');\n return 0;\n }\n // if we are a footer, we don't do selection, just pass the info\n // to the sibling (the parent of the group)\n if (this.footer) {\n var count = this.sibling.setSelectedParams(params);\n return count;\n }\n if (rangeSelect) {\n var newRowClicked = this.selectionController.getLastSelectedNode() !== this;\n var allowMultiSelect = this.gridOptionsWrapper.isRowSelectionMulti();\n if (newRowClicked && allowMultiSelect) {\n return this.doRowRangeSelection();\n }\n }\n var updatedCount = 0;\n // when groupSelectsFiltered, then this node may end up intermediate despite\n // trying to set it to true / false. this group will be calculated further on\n // down when we call calculatedSelectedForAllGroupNodes(). we need to skip it\n // here, otherwise the updatedCount would include it.\n var skipThisNode = groupSelectsFiltered && this.group;\n if (!skipThisNode) {\n var thisNodeWasSelected = this.selectThisNode(newValue);\n if (thisNodeWasSelected) {\n updatedCount++;\n }\n }\n if (groupSelectsChildren && this.group) {\n updatedCount += this.selectChildNodes(newValue, groupSelectsFiltered);\n }\n // clear other nodes if not doing multi select\n if (!suppressFinishActions) {\n var clearOtherNodes = newValue && (clearSelection || !this.gridOptionsWrapper.isRowSelectionMulti());\n if (clearOtherNodes) {\n updatedCount += this.selectionController.clearOtherNodes(this);\n }\n // only if we selected something, then update groups and fire events\n if (updatedCount > 0) {\n this.selectionController.updateGroupsFromChildrenSelections();\n // this is the very end of the 'action node', so we are finished all the updates,\n // include any parent / child changes that this method caused\n var event_1 = {\n type: Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.mainEventService.dispatchEvent(event_1);\n }\n // so if user next does shift-select, we know where to start the selection from\n if (newValue) {\n this.selectionController.setLastSelectedNode(this);\n }\n }\n return updatedCount;\n };\n // selects all rows between this node and the last selected node (or the top if this is the first selection).\n // not to be mixed up with 'cell range selection' where you drag the mouse, this is row range selection, by\n // holding down 'shift'.\n RowNode.prototype.doRowRangeSelection = function () {\n var updatedCount = 0;\n var groupsSelectChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n var lastSelectedNode = this.selectionController.getLastSelectedNode();\n var nodesToSelect = this.rowModel.getNodesInRangeForSelection(this, lastSelectedNode);\n nodesToSelect.forEach(function (rowNode) {\n if (rowNode.group && groupsSelectChildren) {\n return;\n }\n var nodeWasSelected = rowNode.selectThisNode(true);\n if (nodeWasSelected) {\n updatedCount++;\n }\n });\n this.selectionController.updateGroupsFromChildrenSelections();\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.mainEventService.dispatchEvent(event);\n return updatedCount;\n };\n RowNode.prototype.isParentOfNode = function (potentialParent) {\n var parentNode = this.parent;\n while (parentNode) {\n if (parentNode === potentialParent) {\n return true;\n }\n parentNode = parentNode.parent;\n }\n return false;\n };\n RowNode.prototype.selectThisNode = function (newValue) {\n if (!this.selectable || this.selected === newValue) {\n return false;\n }\n this.selected = newValue;\n if (this.eventService) {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_SELECTED));\n }\n var event = this.createGlobalRowEvent(Events.EVENT_ROW_SELECTED);\n this.mainEventService.dispatchEvent(event);\n return true;\n };\n RowNode.prototype.selectChildNodes = function (newValue, groupSelectsFiltered) {\n var children = groupSelectsFiltered ? this.childrenAfterFilter : this.childrenAfterGroup;\n var updatedCount = 0;\n if (_.missing(children)) {\n return;\n }\n for (var i = 0; i < children.length; i++) {\n updatedCount += children[i].setSelectedParams({\n newValue: newValue,\n clearSelection: false,\n suppressFinishActions: true,\n groupSelectsFiltered: groupSelectsFiltered\n });\n }\n return updatedCount;\n };\n RowNode.prototype.addEventListener = function (eventType, listener) {\n if (!this.eventService) {\n this.eventService = new EventService();\n }\n this.eventService.addEventListener(eventType, listener);\n };\n RowNode.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n RowNode.prototype.onMouseEnter = function () {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_ENTER));\n };\n RowNode.prototype.onMouseLeave = function () {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_LEAVE));\n };\n RowNode.prototype.getFirstChildOfFirstChild = function (rowGroupColumn) {\n var currentRowNode = this;\n // if we are hiding groups, then if we are the first child, of the first child,\n // all the way up to the column we are interested in, then we show the group cell.\n var isCandidate = true;\n var foundFirstChildPath = false;\n var nodeToSwapIn;\n while (isCandidate && !foundFirstChildPath) {\n var parentRowNode = currentRowNode.parent;\n var firstChild = _.exists(parentRowNode) && currentRowNode.firstChild;\n if (firstChild) {\n if (parentRowNode.rowGroupColumn === rowGroupColumn) {\n foundFirstChildPath = true;\n nodeToSwapIn = parentRowNode;\n }\n }\n else {\n isCandidate = false;\n }\n currentRowNode = parentRowNode;\n }\n return foundFirstChildPath ? nodeToSwapIn : null;\n };\n RowNode.prototype.isFullWidthCell = function () {\n var isFullWidthCellFunc = this.gridOptionsWrapper.getIsFullWidthCellFunc();\n return isFullWidthCellFunc ? isFullWidthCellFunc(this) : false;\n };\n RowNode.OBJECT_ID_SEQUENCE = 0;\n RowNode.EVENT_ROW_SELECTED = 'rowSelected';\n RowNode.EVENT_DATA_CHANGED = 'dataChanged';\n RowNode.EVENT_CELL_CHANGED = 'cellChanged';\n RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED = 'allChildrenCountChanged';\n RowNode.EVENT_MOUSE_ENTER = 'mouseEnter';\n RowNode.EVENT_MOUSE_LEAVE = 'mouseLeave';\n RowNode.EVENT_HEIGHT_CHANGED = 'heightChanged';\n RowNode.EVENT_TOP_CHANGED = 'topChanged';\n RowNode.EVENT_FIRST_CHILD_CHANGED = 'firstChildChanged';\n RowNode.EVENT_LAST_CHILD_CHANGED = 'lastChildChanged';\n RowNode.EVENT_CHILD_INDEX_CHANGED = 'childIndexChanged';\n RowNode.EVENT_ROW_INDEX_CHANGED = 'rowIndexChanged';\n RowNode.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n RowNode.EVENT_SELECTABLE_CHANGED = 'selectableChanged';\n RowNode.EVENT_UI_LEVEL_CHANGED = 'uiLevelChanged';\n RowNode.EVENT_DRAGGING_CHANGED = 'draggingChanged';\n __decorate([\n Autowired('eventService')\n ], RowNode.prototype, \"mainEventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], RowNode.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('selectionController')\n ], RowNode.prototype, \"selectionController\", void 0);\n __decorate([\n Autowired('columnController')\n ], RowNode.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('valueService')\n ], RowNode.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('rowModel')\n ], RowNode.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('context')\n ], RowNode.prototype, \"context\", void 0);\n __decorate([\n Autowired('valueCache')\n ], RowNode.prototype, \"valueCache\", void 0);\n __decorate([\n Autowired('columnApi')\n ], RowNode.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], RowNode.prototype, \"gridApi\", void 0);\n return RowNode;\n}());\nexport { RowNode };\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","'use strict';\n\n/**\n * Module dependenices\n */\n\nconst clone = require('shallow-clone');\nconst typeOf = require('kind-of');\nconst isPlainObject = require('is-plain-object');\n\nfunction cloneDeep(val, instanceClone) {\n switch (typeOf(val)) {\n case 'object':\n return cloneObjectDeep(val, instanceClone);\n case 'array':\n return cloneArrayDeep(val, instanceClone);\n default: {\n return clone(val);\n }\n }\n}\n\nfunction cloneObjectDeep(val, instanceClone) {\n if (typeof instanceClone === 'function') {\n return instanceClone(val);\n }\n if (instanceClone || isPlainObject(val)) {\n const res = new val.constructor();\n for (let key in val) {\n res[key] = cloneDeep(val[key], instanceClone);\n }\n return res;\n }\n return val;\n}\n\nfunction cloneArrayDeep(val, instanceClone) {\n const res = new val.constructor(val.length);\n for (let i = 0; i < val.length; i++) {\n res[i] = cloneDeep(val[i], instanceClone);\n }\n return res;\n}\n\n/**\n * Expose `cloneDeep`\n */\n\nmodule.exports = cloneDeep;\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { EventService } from \"../eventService\";\nimport { GridOptionsWrapper } from \"../gridOptionsWrapper\";\nimport { Autowired, PreDestroy } from \"./context\";\nimport { _ } from \"../utils\";\nvar BeanStub = /** @class */ (function () {\n function BeanStub() {\n var _this = this;\n this.destroyFunctions = [];\n this.destroyed = false;\n this.getContext = function () { return _this.context; };\n this.isAlive = function () { return !_this.destroyed; };\n }\n // this was a test constructor niall built, when active, it prints after 5 seconds all beans/components that are\n // not destroyed. to use, create a new grid, then api.destroy() before 5 seconds. then anything that gets printed\n // points to a bean or component that was not properly disposed of.\n // constructor() {\n // setTimeout(()=> {\n // if (this.isAlive()) {\n // let prototype: any = Object.getPrototypeOf(this);\n // const constructor: any = prototype.constructor;\n // const constructorString = constructor.toString();\n // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n // console.log('is alive ' + beanName);\n // }\n // }, 5000);\n // }\n // CellComp and GridComp and override this because they get the FrameworkOverrides from the Beans bean\n BeanStub.prototype.getFrameworkOverrides = function () {\n return this.frameworkOverrides;\n };\n BeanStub.prototype.destroy = function () {\n // let prototype: any = Object.getPrototypeOf(this);\n // const constructor: any = prototype.constructor;\n // const constructorString = constructor.toString();\n // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n this.destroyFunctions.forEach(function (func) { return func(); });\n this.destroyFunctions.length = 0;\n this.destroyed = true;\n this.dispatchEvent({ type: BeanStub.EVENT_DESTROYED });\n };\n BeanStub.prototype.addEventListener = function (eventType, listener) {\n if (!this.localEventService) {\n this.localEventService = new EventService();\n }\n this.localEventService.addEventListener(eventType, listener);\n };\n BeanStub.prototype.removeEventListener = function (eventType, listener) {\n if (this.localEventService) {\n this.localEventService.removeEventListener(eventType, listener);\n }\n };\n BeanStub.prototype.dispatchEventAsync = function (event) {\n var _this = this;\n window.setTimeout(function () { return _this.dispatchEvent(event); }, 0);\n };\n BeanStub.prototype.dispatchEvent = function (event) {\n if (this.localEventService) {\n this.localEventService.dispatchEvent(event);\n }\n };\n BeanStub.prototype.addDestroyableEventListener = function (eElement, event, listener) {\n var _this = this;\n if (this.destroyed) {\n return;\n }\n if (eElement instanceof HTMLElement) {\n _.addSafePassiveEventListener(this.getFrameworkOverrides(), eElement, event, listener);\n }\n else if (eElement instanceof Window) {\n eElement.addEventListener(event, listener);\n }\n else if (eElement instanceof GridOptionsWrapper) {\n eElement.addEventListener(event, listener);\n }\n else {\n eElement.addEventListener(event, listener);\n }\n var destroyFunc = function () {\n if (eElement instanceof HTMLElement) {\n eElement.removeEventListener(event, listener);\n }\n else if (eElement instanceof Window) {\n eElement.removeEventListener(event, listener);\n }\n else if (eElement instanceof GridOptionsWrapper) {\n eElement.removeEventListener(event, listener);\n }\n else {\n eElement.removeEventListener(event, listener);\n }\n _this.destroyFunctions = _this.destroyFunctions.filter(function (fn) { return fn !== destroyFunc; });\n };\n this.destroyFunctions.push(destroyFunc);\n return destroyFunc;\n };\n BeanStub.prototype.addDestroyFunc = function (func) {\n // if we are already destroyed, we execute the func now\n if (this.isAlive()) {\n this.destroyFunctions.push(func);\n }\n else {\n func();\n }\n };\n BeanStub.prototype.wireDependentBean = function (bean, context) {\n if (bean.destroy) {\n this.addDestroyFunc(bean.destroy.bind(bean));\n }\n return this.wireBean(bean, context);\n };\n BeanStub.prototype.wireBean = function (bean, context) {\n (context || this.getContext()).wireBean(bean);\n return bean;\n };\n BeanStub.EVENT_DESTROYED = 'destroyed';\n __decorate([\n Autowired('context')\n ], BeanStub.prototype, \"context\", void 0);\n __decorate([\n Autowired('frameworkOverrides')\n ], BeanStub.prototype, \"frameworkOverrides\", void 0);\n __decorate([\n PreDestroy\n ], BeanStub.prototype, \"destroy\", null);\n return BeanStub;\n}());\nexport { BeanStub };\n","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { ColumnGroup } from \"./columnGroup\";\nimport { Column } from \"./column\";\nimport { EventService } from \"../eventService\";\nvar OriginalColumnGroup = /** @class */ (function () {\n function OriginalColumnGroup(colGroupDef, groupId, padding, level) {\n this.localEventService = new EventService();\n this.expandable = false;\n this.colGroupDef = colGroupDef;\n this.groupId = groupId;\n this.expanded = colGroupDef && !!colGroupDef.openByDefault;\n this.padding = padding;\n this.level = level;\n }\n OriginalColumnGroup.prototype.setOriginalParent = function (originalParent) {\n this.originalParent = originalParent;\n };\n OriginalColumnGroup.prototype.getOriginalParent = function () {\n return this.originalParent;\n };\n OriginalColumnGroup.prototype.getLevel = function () {\n return this.level;\n };\n OriginalColumnGroup.prototype.isVisible = function () {\n // return true if at least one child is visible\n if (this.children) {\n return this.children.some(function (child) { return child.isVisible(); });\n }\n return false;\n };\n OriginalColumnGroup.prototype.isPadding = function () {\n return this.padding;\n };\n OriginalColumnGroup.prototype.setExpanded = function (expanded) {\n this.expanded = expanded === undefined ? false : expanded;\n var event = {\n type: OriginalColumnGroup.EVENT_EXPANDED_CHANGED\n };\n this.localEventService.dispatchEvent(event);\n };\n OriginalColumnGroup.prototype.isExpandable = function () {\n return this.expandable;\n };\n OriginalColumnGroup.prototype.isExpanded = function () {\n return this.expanded;\n };\n OriginalColumnGroup.prototype.getGroupId = function () {\n return this.groupId;\n };\n OriginalColumnGroup.prototype.getId = function () {\n return this.getGroupId();\n };\n OriginalColumnGroup.prototype.setChildren = function (children) {\n this.children = children;\n };\n OriginalColumnGroup.prototype.getChildren = function () {\n return this.children;\n };\n OriginalColumnGroup.prototype.getColGroupDef = function () {\n return this.colGroupDef;\n };\n OriginalColumnGroup.prototype.getLeafColumns = function () {\n var result = [];\n this.addLeafColumns(result);\n return result;\n };\n OriginalColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n if (!this.children) {\n return;\n }\n this.children.forEach(function (child) {\n if (child instanceof Column) {\n leafColumns.push(child);\n }\n else if (child instanceof OriginalColumnGroup) {\n child.addLeafColumns(leafColumns);\n }\n });\n };\n OriginalColumnGroup.prototype.getColumnGroupShow = function () {\n return this.padding ? ColumnGroup.HEADER_GROUP_PADDING : this.colGroupDef.columnGroupShow;\n };\n // need to check that this group has at least one col showing when both expanded and contracted.\n // if not, then we don't allow expanding and contracting on this group\n OriginalColumnGroup.prototype.setupExpandable = function () {\n var _this = this;\n this.setExpandable();\n // note - we should be removing this event listener\n this.getLeafColumns().forEach(function (col) { return col.addEventListener(Column.EVENT_VISIBLE_CHANGED, _this.onColumnVisibilityChanged.bind(_this)); });\n };\n OriginalColumnGroup.prototype.setExpandable = function () {\n if (this.isPadding()) {\n return;\n }\n // want to make sure the group doesn't disappear when it's open\n var atLeastOneShowingWhenOpen = false;\n // want to make sure the group doesn't disappear when it's closed\n var atLeastOneShowingWhenClosed = false;\n // want to make sure the group has something to show / hide\n var atLeastOneChangeable = false;\n var children = this.findChildren();\n for (var i = 0, j = children.length; i < j; i++) {\n var abstractColumn = children[i];\n if (!abstractColumn.isVisible()) {\n continue;\n }\n // if the abstractColumn is a grid generated group, there will be no colDef\n var headerGroupShow = abstractColumn.getColumnGroupShow();\n if (headerGroupShow === ColumnGroup.HEADER_GROUP_SHOW_OPEN) {\n atLeastOneShowingWhenOpen = true;\n atLeastOneChangeable = true;\n }\n else if (headerGroupShow === ColumnGroup.HEADER_GROUP_SHOW_CLOSED) {\n atLeastOneShowingWhenClosed = true;\n atLeastOneChangeable = true;\n }\n else {\n atLeastOneShowingWhenOpen = true;\n atLeastOneShowingWhenClosed = true;\n if (headerGroupShow === ColumnGroup.HEADER_GROUP_PADDING) {\n var column = abstractColumn;\n atLeastOneChangeable = column.children.some(function (child) { return child.getColumnGroupShow() !== undefined; });\n }\n }\n }\n var expandable = atLeastOneShowingWhenOpen && atLeastOneShowingWhenClosed && atLeastOneChangeable;\n if (this.expandable !== expandable) {\n this.expandable = expandable;\n var event_1 = {\n type: OriginalColumnGroup.EVENT_EXPANDABLE_CHANGED\n };\n this.localEventService.dispatchEvent(event_1);\n }\n };\n OriginalColumnGroup.prototype.findChildren = function () {\n var children = this.children;\n var firstChild = children[0];\n if (firstChild && (!firstChild.isPadding || !firstChild.isPadding())) {\n return children;\n }\n while (children.length === 1 && children[0] instanceof OriginalColumnGroup) {\n children = children[0].children;\n }\n return children;\n };\n OriginalColumnGroup.prototype.onColumnVisibilityChanged = function () {\n this.setExpandable();\n };\n OriginalColumnGroup.prototype.addEventListener = function (eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n };\n OriginalColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n };\n OriginalColumnGroup.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n OriginalColumnGroup.EVENT_EXPANDABLE_CHANGED = 'expandableChanged';\n return OriginalColumnGroup;\n}());\nexport { OriginalColumnGroup };\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createSvgIcon;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _SvgIcon = _interopRequireDefault(require(\"@material-ui/core/SvgIcon\"));\n\nfunction createSvgIcon(path, displayName) {\n var Component = _react.default.memo(_react.default.forwardRef(function (props, ref) {\n return _react.default.createElement(_SvgIcon.default, (0, _extends2.default)({\n ref: ref\n }, props), path);\n }));\n\n if (process.env.NODE_ENV !== 'production') {\n Component.displayName = \"\".concat(displayName, \"Icon\");\n }\n\n Component.muiName = _SvgIcon.default.muiName;\n return Component;\n}","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Column } from \"./column\";\nimport { EventService } from \"../eventService\";\nimport { Autowired } from \"../context/context\";\nimport { _ } from \"../utils\";\nvar ColumnGroup = /** @class */ (function () {\n function ColumnGroup(originalColumnGroup, groupId, instanceId, pinned) {\n // depends on the open/closed state of the group, only displaying columns are stored here\n this.displayedChildren = [];\n this.localEventService = new EventService();\n this.groupId = groupId;\n this.instanceId = instanceId;\n this.originalColumnGroup = originalColumnGroup;\n this.pinned = pinned;\n }\n // this is static, a it is used outside of this class\n ColumnGroup.createUniqueId = function (groupId, instanceId) {\n return groupId + '_' + instanceId;\n };\n // as the user is adding and removing columns, the groups are recalculated.\n // this reset clears out all children, ready for children to be added again\n ColumnGroup.prototype.reset = function () {\n this.parent = null;\n this.children = null;\n this.displayedChildren = null;\n };\n ColumnGroup.prototype.getParent = function () {\n return this.parent;\n };\n ColumnGroup.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n ColumnGroup.prototype.getUniqueId = function () {\n return ColumnGroup.createUniqueId(this.groupId, this.instanceId);\n };\n ColumnGroup.prototype.isEmptyGroup = function () {\n return this.displayedChildren.length === 0;\n };\n ColumnGroup.prototype.isMoving = function () {\n var allLeafColumns = this.getOriginalColumnGroup().getLeafColumns();\n if (!allLeafColumns || allLeafColumns.length === 0) {\n return false;\n }\n var allMoving = true;\n allLeafColumns.forEach(function (col) {\n if (!col.isMoving()) {\n allMoving = false;\n }\n });\n return allMoving;\n };\n ColumnGroup.prototype.checkLeft = function () {\n // first get all children to setLeft, as it impacts our decision below\n this.displayedChildren.forEach(function (child) {\n if (child instanceof ColumnGroup) {\n child.checkLeft();\n }\n });\n // set our left based on first displayed column\n if (this.displayedChildren.length > 0) {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n var lastChild = _.last(this.displayedChildren);\n var lastChildLeft = lastChild.getLeft();\n this.setLeft(lastChildLeft);\n }\n else {\n var firstChildLeft = this.displayedChildren[0].getLeft();\n this.setLeft(firstChildLeft);\n }\n }\n else {\n // this should never happen, as if we have no displayed columns, then\n // this groups should not even exist.\n this.setLeft(null);\n }\n };\n ColumnGroup.prototype.getLeft = function () {\n return this.left;\n };\n ColumnGroup.prototype.getOldLeft = function () {\n return this.oldLeft;\n };\n ColumnGroup.prototype.setLeft = function (left) {\n this.oldLeft = left;\n if (this.left !== left) {\n this.left = left;\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_LEFT_CHANGED));\n }\n };\n ColumnGroup.prototype.getPinned = function () {\n return this.pinned;\n };\n ColumnGroup.prototype.createAgEvent = function (type) {\n return {\n type: type,\n };\n };\n ColumnGroup.prototype.addEventListener = function (eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n };\n ColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n };\n ColumnGroup.prototype.getGroupId = function () {\n return this.groupId;\n };\n ColumnGroup.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n ColumnGroup.prototype.isChildInThisGroupDeepSearch = function (wantedChild) {\n var result = false;\n this.children.forEach(function (foundChild) {\n if (wantedChild === foundChild) {\n result = true;\n }\n if (foundChild instanceof ColumnGroup) {\n if (foundChild.isChildInThisGroupDeepSearch(wantedChild)) {\n result = true;\n }\n }\n });\n return result;\n };\n ColumnGroup.prototype.getActualWidth = function () {\n var groupActualWidth = 0;\n if (this.displayedChildren) {\n this.displayedChildren.forEach(function (child) {\n groupActualWidth += child.getActualWidth();\n });\n }\n return groupActualWidth;\n };\n ColumnGroup.prototype.isResizable = function () {\n if (!this.displayedChildren) {\n return false;\n }\n // if at least one child is resizable, then the group is resizable\n var result = false;\n this.displayedChildren.forEach(function (child) {\n if (child.isResizable()) {\n result = true;\n }\n });\n return result;\n };\n ColumnGroup.prototype.getMinWidth = function () {\n var result = 0;\n this.displayedChildren.forEach(function (groupChild) {\n result += groupChild.getMinWidth();\n });\n return result;\n };\n ColumnGroup.prototype.addChild = function (child) {\n if (!this.children) {\n this.children = [];\n }\n this.children.push(child);\n };\n ColumnGroup.prototype.getDisplayedChildren = function () {\n return this.displayedChildren;\n };\n ColumnGroup.prototype.getLeafColumns = function () {\n var result = [];\n this.addLeafColumns(result);\n return result;\n };\n ColumnGroup.prototype.getDisplayedLeafColumns = function () {\n var result = [];\n this.addDisplayedLeafColumns(result);\n return result;\n };\n // why two methods here doing the same thing?\n ColumnGroup.prototype.getDefinition = function () {\n return this.originalColumnGroup.getColGroupDef();\n };\n ColumnGroup.prototype.getColGroupDef = function () {\n return this.originalColumnGroup.getColGroupDef();\n };\n ColumnGroup.prototype.isPadding = function () {\n return this.originalColumnGroup.isPadding();\n };\n ColumnGroup.prototype.isExpandable = function () {\n return this.originalColumnGroup.isExpandable();\n };\n ColumnGroup.prototype.isExpanded = function () {\n return this.originalColumnGroup.isExpanded();\n };\n ColumnGroup.prototype.setExpanded = function (expanded) {\n this.originalColumnGroup.setExpanded(expanded);\n };\n ColumnGroup.prototype.addDisplayedLeafColumns = function (leafColumns) {\n this.displayedChildren.forEach(function (child) {\n if (child instanceof Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ColumnGroup) {\n child.addDisplayedLeafColumns(leafColumns);\n }\n });\n };\n ColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n this.children.forEach(function (child) {\n if (child instanceof Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ColumnGroup) {\n child.addLeafColumns(leafColumns);\n }\n });\n };\n ColumnGroup.prototype.getChildren = function () {\n return this.children;\n };\n ColumnGroup.prototype.getColumnGroupShow = function () {\n return this.originalColumnGroup.getColumnGroupShow();\n };\n ColumnGroup.prototype.getOriginalColumnGroup = function () {\n return this.originalColumnGroup;\n };\n ColumnGroup.prototype.calculateDisplayedColumns = function () {\n var _this = this;\n // clear out last time we calculated\n this.displayedChildren = [];\n var topLevelGroup = this;\n // find the column group that is controlling expandable. this is relevant when we have padding (empty)\n // groups, where the expandable is actually the first parent that is not a padding group.\n if (this.isPadding()) {\n while (topLevelGroup.getParent() && topLevelGroup.isPadding()) {\n topLevelGroup = topLevelGroup.getParent();\n }\n }\n var isExpandable = topLevelGroup.originalColumnGroup.isExpandable();\n // it not expandable, everything is visible\n if (!isExpandable) {\n this.displayedChildren = this.children;\n }\n else {\n // Add cols based on columnGroupShow\n // Note - the below also adds padding groups, these are always added because they never have\n // colDef.columnGroupShow set.\n this.children.forEach(function (abstractColumn) {\n var headerGroupShow = abstractColumn.getColumnGroupShow();\n switch (headerGroupShow) {\n case ColumnGroup.HEADER_GROUP_SHOW_OPEN:\n // when set to open, only show col if group is open\n if (topLevelGroup.originalColumnGroup.isExpanded()) {\n _this.displayedChildren.push(abstractColumn);\n }\n break;\n case ColumnGroup.HEADER_GROUP_SHOW_CLOSED:\n // when set to open, only show col if group is open\n if (!topLevelGroup.originalColumnGroup.isExpanded()) {\n _this.displayedChildren.push(abstractColumn);\n }\n break;\n default:\n // default is always show the column\n _this.displayedChildren.push(abstractColumn);\n break;\n }\n });\n }\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED));\n };\n ColumnGroup.HEADER_GROUP_SHOW_OPEN = 'open';\n ColumnGroup.HEADER_GROUP_SHOW_CLOSED = 'closed';\n ColumnGroup.HEADER_GROUP_PADDING = 'padding';\n ColumnGroup.EVENT_LEFT_CHANGED = 'leftChanged';\n ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED = 'displayedChildrenChanged';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ColumnGroup.prototype, \"gridOptionsWrapper\", void 0);\n return ColumnGroup;\n}());\nexport { ColumnGroup };\n","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","import { useTheme as useThemeWithoutDefault } from '@material-ui/styles';\nimport React from 'react';\nimport defaultTheme from './defaultTheme';\nexport default function useTheme() {\n var theme = useThemeWithoutDefault() || defaultTheme;\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n\n return theme;\n}","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar Events = /** @class */ (function () {\n function Events() {\n }\n /** Everything has changed with the columns. Either complete new set of columns set, or user called setState()*/\n Events.EVENT_COLUMN_EVERYTHING_CHANGED = 'columnEverythingChanged';\n /** User has set in new columns. */\n Events.EVENT_NEW_COLUMNS_LOADED = 'newColumnsLoaded';\n /** The pivot mode flag was changed */\n Events.EVENT_COLUMN_PIVOT_MODE_CHANGED = 'columnPivotModeChanged';\n /** A row group column was added, removed or order changed. */\n Events.EVENT_COLUMN_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n /** expandAll / collapseAll was called from the api. */\n Events.EVENT_EXPAND_COLLAPSE_ALL = 'expandOrCollapseAll';\n /** A pivot column was added, removed or order changed. */\n Events.EVENT_COLUMN_PIVOT_CHANGED = 'columnPivotChanged';\n /** The list of grid columns has changed. */\n Events.EVENT_GRID_COLUMNS_CHANGED = 'gridColumnsChanged';\n /** A value column was added, removed or agg function was changed. */\n Events.EVENT_COLUMN_VALUE_CHANGED = 'columnValueChanged';\n /** A column was moved */\n Events.EVENT_COLUMN_MOVED = 'columnMoved';\n /** One or more columns was shown / hidden */\n Events.EVENT_COLUMN_VISIBLE = 'columnVisible';\n /** One or more columns was pinned / unpinned*/\n Events.EVENT_COLUMN_PINNED = 'columnPinned';\n /** A column group was opened / closed */\n Events.EVENT_COLUMN_GROUP_OPENED = 'columnGroupOpened';\n /** One or more columns was resized. If just one, the column in the event is set. */\n Events.EVENT_COLUMN_RESIZED = 'columnResized';\n /** The list of displayed columns has changed, can result from columns open / close, column move, pivot, group, etc */\n Events.EVENT_DISPLAYED_COLUMNS_CHANGED = 'displayedColumnsChanged';\n /** The list of virtual columns has changed, results from viewport changing */\n Events.EVENT_VIRTUAL_COLUMNS_CHANGED = 'virtualColumnsChanged';\n /** A row group was opened / closed */\n Events.EVENT_ROW_GROUP_OPENED = 'rowGroupOpened';\n /** The client has set new data into the grid */\n Events.EVENT_ROW_DATA_CHANGED = 'rowDataChanged';\n /** The client has updated data for the grid */\n Events.EVENT_ROW_DATA_UPDATED = 'rowDataUpdated';\n /** The client has set new floating data into the grid */\n Events.EVENT_PINNED_ROW_DATA_CHANGED = 'pinnedRowDataChanged';\n /** Range selection has changed */\n Events.EVENT_RANGE_SELECTION_CHANGED = 'rangeSelectionChanged';\n /** Chart Range selection has changed */\n Events.EVENT_CHART_RANGE_SELECTION_CHANGED = 'chartRangeSelectionChanged';\n /** Chart Options have changed */\n Events.EVENT_CHART_OPTIONS_CHANGED = 'chartOptionsChanged';\n /** For when the tool panel is shown / hidden */\n Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED = 'toolPanelVisibleChanged';\n /** Model was updated - grid updates the drawn rows when this happens */\n Events.EVENT_MODEL_UPDATED = 'modelUpdated';\n Events.EVENT_PASTE_START = 'pasteStart';\n Events.EVENT_PASTE_END = 'pasteEnd';\n Events.EVENT_CELL_CLICKED = 'cellClicked';\n Events.EVENT_CELL_DOUBLE_CLICKED = 'cellDoubleClicked';\n Events.EVENT_CELL_MOUSE_DOWN = 'cellMouseDown';\n Events.EVENT_CELL_CONTEXT_MENU = 'cellContextMenu';\n Events.EVENT_CELL_VALUE_CHANGED = 'cellValueChanged';\n Events.EVENT_ROW_VALUE_CHANGED = 'rowValueChanged';\n Events.EVENT_CELL_FOCUSED = 'cellFocused';\n Events.EVENT_ROW_SELECTED = 'rowSelected';\n Events.EVENT_SELECTION_CHANGED = 'selectionChanged';\n Events.EVENT_CELL_KEY_DOWN = 'cellKeyDown';\n Events.EVENT_CELL_KEY_PRESS = 'cellKeyPress';\n Events.EVENT_CELL_MOUSE_OVER = 'cellMouseOver';\n Events.EVENT_CELL_MOUSE_OUT = 'cellMouseOut';\n /** 2 events for filtering. The grid LISTENS for filterChanged and afterFilterChanged */\n Events.EVENT_FILTER_CHANGED = 'filterChanged';\n /** Filter was change but not applied. Only useful if apply buttons are used in filters. */\n Events.EVENT_FILTER_MODIFIED = 'filterModified';\n Events.EVENT_FILTER_OPENED = 'filterOpened';\n Events.EVENT_SORT_CHANGED = 'sortChanged';\n /** A row was removed from the dom, for any reason. Use to clean up resources (if any) used by the row. */\n Events.EVENT_VIRTUAL_ROW_REMOVED = 'virtualRowRemoved';\n Events.EVENT_ROW_CLICKED = 'rowClicked';\n Events.EVENT_ROW_DOUBLE_CLICKED = 'rowDoubleClicked';\n /** Gets called once after the grid has finished initialising. */\n Events.EVENT_GRID_READY = 'gridReady';\n /** Width of height of the main grid div has changed. Grid listens for this and does layout of grid if it's\n * changed, so always filling the space it was given. */\n Events.EVENT_GRID_SIZE_CHANGED = 'gridSizeChanged';\n /** The indexes of the rows rendered has changed, eg user has scrolled to a new vertical position. */\n Events.EVENT_VIEWPORT_CHANGED = 'viewportChanged';\n /** Rows were rendered for the first time (ie on async data load). */\n Events.EVENT_FIRST_DATA_RENDERED = 'firstDataRendered';\n /** A column drag has started, either resizing a column or moving a column. */\n Events.EVENT_DRAG_STARTED = 'dragStarted';\n /** A column drag has stopped */\n Events.EVENT_DRAG_STOPPED = 'dragStopped';\n Events.EVENT_ROW_EDITING_STARTED = 'rowEditingStarted';\n Events.EVENT_ROW_EDITING_STOPPED = 'rowEditingStopped';\n Events.EVENT_CELL_EDITING_STARTED = 'cellEditingStarted';\n Events.EVENT_CELL_EDITING_STOPPED = 'cellEditingStopped';\n /** Main body of grid has scrolled, either horizontally or vertically */\n Events.EVENT_BODY_SCROLL = 'bodyScroll';\n Events.EVENT_ANIMATION_QUEUE_EMPTY = 'animationQueueEmpty';\n Events.EVENT_HEIGHT_SCALE_CHANGED = 'heightScaleChanged';\n /** The displayed page for pagination has changed. For example the data was filtered or sorted,\n * or the user has moved to a different page. */\n Events.EVENT_PAGINATION_CHANGED = 'paginationChanged';\n /** Only used by React, Angular 2+, Web Components and VueJS ag-Grid components\n * (not used if doing plain JavaScript or Angular 1.x). If the grid receives changes due\n * to bound properties, this event fires after the grid has finished processing the change. */\n Events.EVENT_COMPONENT_STATE_CHANGED = 'componentStateChanged';\n /** All items from here down are used internally by the grid, not intended for external use. */\n // not documented, either experimental, or we just don't want users using an depending on them\n Events.EVENT_BODY_HEIGHT_CHANGED = 'bodyHeightChanged';\n Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED = 'displayedColumnsWidthChanged';\n Events.EVENT_SCROLL_VISIBILITY_CHANGED = 'scrollVisibilityChanged';\n Events.EVENT_COLUMN_HOVER_CHANGED = 'columnHoverChanged';\n Events.EVENT_FLASH_CELLS = 'flashCells';\n Events.EVENT_ROW_DRAG_ENTER = 'rowDragEnter';\n Events.EVENT_ROW_DRAG_MOVE = 'rowDragMove';\n Events.EVENT_ROW_DRAG_LEAVE = 'rowDragLeave';\n Events.EVENT_ROW_DRAG_END = 'rowDragEnd';\n // primarily for charts\n Events.EVENT_POPUP_TO_FRONT = 'popupToFront';\n // these are used for server side group and agg - only used by CS with Viewport Row Model - intention is\n // to design these better around server side functions and then release to general public when fully working with\n // all the row models.\n Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST = 'columnRowGroupChangeRequest';\n Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST = 'columnPivotChangeRequest';\n Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST = 'columnValueChangeRequest';\n Events.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST = 'columnAggFuncChangeRequest';\n return Events;\n}());\nexport { Events };\n","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport SvgIcon from '../SvgIcon';\n/**\n * Private module reserved for @material-ui/x packages.\n */\n\nexport default function createSvgIcon(path, displayName) {\n var Component = function Component(props, ref) {\n return /*#__PURE__*/React.createElement(SvgIcon, _extends({\n ref: ref\n }, props), path);\n };\n\n if (process.env.NODE_ENV !== 'production') {\n // Need to set `displayName` on the inner component for React.memo.\n // React prior to 16.14 ignores `displayName` on the wrapper.\n Component.displayName = \"\".concat(displayName, \"Icon\");\n }\n\n Component.muiName = SvgIcon.muiName;\n return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nexport default function _createForOfIteratorHelper(o) {\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = unsupportedIterableToArray(o))) {\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var it,\n normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","const { toString, hasOwnProperty } = Object.prototype;\nconst previousComparisons = new Map>();\n\n/**\n * Performs a deep equality check on two JavaScript values, tolerating cycles.\n */\nexport function equal(a: any, b: any): boolean {\n try {\n return check(a, b);\n } finally {\n previousComparisons.clear();\n }\n}\n\n// Allow default imports as well.\nexport default equal;\n\nfunction check(a: any, b: any): boolean {\n // If the two values are strictly equal, our job is easy.\n if (a === b) {\n return true;\n }\n\n // Object.prototype.toString returns a representation of the runtime type of\n // the given value that is considerably more precise than typeof.\n const aTag = toString.call(a);\n const bTag = toString.call(b);\n\n // If the runtime types of a and b are different, they could maybe be equal\n // under some interpretation of equality, but for simplicity and performance\n // we just return false instead.\n if (aTag !== bTag) {\n return false;\n }\n\n switch (aTag) {\n case '[object Array]':\n // Arrays are a lot like other objects, but we can cheaply compare their\n // lengths as a short-cut before comparing their elements.\n if (a.length !== b.length) return false;\n // Fall through to object case...\n case '[object Object]': {\n if (previouslyCompared(a, b)) return true;\n\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n\n // If `a` and `b` have a different number of enumerable keys, they\n // must be different.\n const keyCount = aKeys.length;\n if (keyCount !== bKeys.length) return false;\n\n // Now make sure they have the same keys.\n for (let k = 0; k < keyCount; ++k) {\n if (!hasOwnProperty.call(b, aKeys[k])) {\n return false;\n }\n }\n\n // Finally, check deep equality of all child properties.\n for (let k = 0; k < keyCount; ++k) {\n const key = aKeys[k];\n if (!check(a[key], b[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n case '[object Error]':\n return a.name === b.name && a.message === b.message;\n\n case '[object Number]':\n // Handle NaN, which is !== itself.\n if (a !== a) return b !== b;\n // Fall through to shared +a === +b case...\n case '[object Boolean]':\n case '[object Date]':\n return +a === +b;\n\n case '[object RegExp]':\n case '[object String]':\n return a == `${b}`;\n\n case '[object Map]':\n case '[object Set]': {\n if (a.size !== b.size) return false;\n if (previouslyCompared(a, b)) return true;\n\n const aIterator = a.entries();\n const isMap = aTag === '[object Map]';\n\n while (true) {\n const info = aIterator.next();\n if (info.done) break;\n\n // If a instanceof Set, aValue === aKey.\n const [aKey, aValue] = info.value;\n\n // So this works the same way for both Set and Map.\n if (!b.has(aKey)) {\n return false;\n }\n\n // However, we care about deep equality of values only when dealing\n // with Map structures.\n if (isMap && !check(aValue, b.get(aKey))) {\n return false;\n }\n }\n\n return true;\n }\n }\n\n // Otherwise the values are not equal.\n return false;\n}\n\nfunction previouslyCompared(a: object, b: object): boolean {\n // Though cyclic references can make an object graph appear infinite from the\n // perspective of a depth-first traversal, the graph still contains a finite\n // number of distinct object references. We use the previousComparisons cache\n // to avoid comparing the same pair of object references more than once, which\n // guarantees termination (even if we end up comparing every object in one\n // graph to every object in the other graph, which is extremely unlikely),\n // while still allowing weird isomorphic structures (like rings with different\n // lengths) a chance to pass the equality test.\n let bSet = previousComparisons.get(a);\n if (bSet) {\n // Return true here because we can be sure false will be returned somewhere\n // else if the objects are not equivalent.\n if (bSet.has(b)) return true;\n } else {\n previousComparisons.set(a, bSet = new Set);\n }\n bSet.add(b);\n return false;\n}\n","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport merge from './merge';\n\nfunction compose() {\n for (var _len = arguments.length, styles = new Array(_len), _key = 0; _key < _len; _key++) {\n styles[_key] = arguments[_key];\n }\n\n var fn = function fn(props) {\n return styles.reduce(function (acc, style) {\n var output = style(props);\n\n if (output) {\n return merge(acc, output);\n }\n\n return acc;\n }, {});\n }; // Alternative approach that doesn't yield any performance gain.\n // const handlers = styles.reduce((acc, style) => {\n // style.filterProps.forEach(prop => {\n // acc[prop] = style;\n // });\n // return acc;\n // }, {});\n // const fn = props => {\n // return Object.keys(props).reduce((acc, prop) => {\n // if (handlers[prop]) {\n // return merge(acc, handlers[prop](props));\n // }\n // return acc;\n // }, {});\n // };\n\n\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce(function (acc, style) {\n return _extends(acc, style.propTypes);\n }, {}) : {};\n fn.filterProps = styles.reduce(function (acc, style) {\n return acc.concat(style.filterProps);\n }, []);\n return fn;\n}\n\nexport default compose;","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Bean } from \"./context/context\";\nimport { Qualifier } from \"./context/context\";\nimport { _ } from './utils';\nvar EventService = /** @class */ (function () {\n function EventService() {\n this.allSyncListeners = {};\n this.allAsyncListeners = {};\n this.globalSyncListeners = [];\n this.globalAsyncListeners = [];\n this.asyncFunctionsQueue = [];\n this.scheduled = false;\n this.firedEvents = {};\n }\n EventService_1 = EventService;\n // because this class is used both inside the context and outside the context, we do not\n // use autowired attributes, as that would be confusing, as sometimes the attributes\n // would be wired, and sometimes not.\n //\n // the global event servers used by ag-Grid is autowired by the context once, and this\n // setBeans method gets called once.\n //\n // the times when this class is used outside of the context (eg RowNode has an instance of this\n // class) then it is not a bean, and this setBeans method is not called.\n EventService.prototype.setBeans = function (loggerFactory, gridOptionsWrapper, globalEventListener) {\n if (globalEventListener === void 0) { globalEventListener = null; }\n this.logger = loggerFactory.create('EventService');\n if (globalEventListener) {\n var async = gridOptionsWrapper.useAsyncEvents();\n this.addGlobalListener(globalEventListener, async);\n }\n };\n EventService.prototype.getListenerList = function (eventType, async) {\n var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n var listenerList = listenerMap[eventType];\n if (!listenerList) {\n listenerList = [];\n listenerMap[eventType] = listenerList;\n }\n return listenerList;\n };\n EventService.prototype.addEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n var listenerList = this.getListenerList(eventType, async);\n if (listenerList.indexOf(listener) < 0) {\n listenerList.push(listener);\n }\n };\n // for some events, it's important that the model gets to hear about them before the view,\n // as the model may need to update before the view works on the info. if you register\n // via this method, you get notified before the view parts\n EventService.prototype.addModalPriorityEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n this.addEventListener(eventType + EventService_1.PRIORITY, listener, async);\n };\n EventService.prototype.addGlobalListener = function (listener, async) {\n if (async === void 0) { async = false; }\n if (async) {\n this.globalAsyncListeners.push(listener);\n }\n else {\n this.globalSyncListeners.push(listener);\n }\n };\n EventService.prototype.removeEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n var listenerList = this.getListenerList(eventType, async);\n _.removeFromArray(listenerList, listener);\n };\n EventService.prototype.removeGlobalListener = function (listener, async) {\n if (async === void 0) { async = false; }\n if (async) {\n _.removeFromArray(this.globalAsyncListeners, listener);\n }\n else {\n _.removeFromArray(this.globalSyncListeners, listener);\n }\n };\n // why do we pass the type here? the type is in ColumnChangeEvent, so unless the\n // type is not in other types of events???\n EventService.prototype.dispatchEvent = function (event) {\n // console.log(`dispatching ${eventType}: ${event}`);\n this.dispatchToListeners(event, true);\n this.dispatchToListeners(event, false);\n this.firedEvents[event.type] = true;\n };\n EventService.prototype.dispatchEventOnce = function (event) {\n if (!this.firedEvents[event.type]) {\n this.dispatchEvent(event);\n }\n };\n EventService.prototype.dispatchToListeners = function (event, async) {\n var _this = this;\n var globalListeners = async ? this.globalAsyncListeners : this.globalSyncListeners;\n var eventType = event.type;\n // this allows the columnController to get events before anyone else\n var p1ListenerList = this.getListenerList(eventType + EventService_1.PRIORITY, async);\n _.forEachSnapshotFirst(p1ListenerList, function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return listener(event); });\n }\n else {\n listener(event);\n }\n });\n var listenerList = this.getListenerList(eventType, async);\n _.forEachSnapshotFirst(listenerList, function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return listener(event); });\n }\n else {\n listener(event);\n }\n });\n _.forEachSnapshotFirst(globalListeners, function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return listener(eventType, event); });\n }\n else {\n listener(eventType, event);\n }\n });\n };\n // this gets called inside the grid's thread, for each event that it\n // wants to set async. the grid then batches the events into one setTimeout()\n // because setTimeout() is an expensive operation. ideally we would have\n // each event in it's own setTimeout(), but we batch for performance.\n EventService.prototype.dispatchAsync = function (func) {\n // add to the queue for executing later in the next VM turn\n this.asyncFunctionsQueue.push(func);\n // check if timeout is already scheduled. the first time the grid calls\n // this within it's thread turn, this should be false, so it will schedule\n // the 'flush queue' method the first time it comes here. then the flag is\n // set to 'true' so it will know it's already scheduled for subsequent calls.\n if (!this.scheduled) {\n // if not scheduled, schedule one\n window.setTimeout(this.flushAsyncQueue.bind(this), 0);\n // mark that it is scheduled\n this.scheduled = true;\n }\n };\n // this happens in the next VM turn only, and empties the queue of events\n EventService.prototype.flushAsyncQueue = function () {\n this.scheduled = false;\n // we take a copy, because the event listener could be using\n // the grid, which would cause more events, which would be potentially\n // added to the queue, so safe to take a copy, the new events will\n // get executed in a later VM turn rather than risk updating the\n // queue as we are flushing it.\n var queueCopy = this.asyncFunctionsQueue.slice();\n this.asyncFunctionsQueue = [];\n // execute the queue\n queueCopy.forEach(function (func) { return func(); });\n };\n var EventService_1;\n // this is an old idea niall had, should really take it out, was to do with ordering who gets to process\n // events first, to give model and service objects preference over the view\n EventService.PRIORITY = '-P1';\n __decorate([\n __param(0, Qualifier('loggerFactory')),\n __param(1, Qualifier('gridOptionsWrapper')),\n __param(2, Qualifier('globalEventListener'))\n ], EventService.prototype, \"setBeans\", null);\n EventService = EventService_1 = __decorate([\n Bean('eventService')\n ], EventService);\n return EventService;\n}());\nexport { EventService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { SimpleFilter } from \"./simpleFilter\";\nvar ScalerFilter = /** @class */ (function (_super) {\n __extends(ScalerFilter, _super);\n function ScalerFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ScalerFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.scalarFilterParams = params;\n this.checkDeprecatedParams();\n };\n ScalerFilter.prototype.checkDeprecatedParams = function () {\n if (this.scalarFilterParams.nullComparator) {\n console.warn('ag-Grid: Since v21.0, the property filterParams.nullComparator is deprecated. ' +\n 'Please use filterParams.includeBlanksInEquals, filterParams.includeBlanksInLessThan and ' +\n 'filterParams.includeBlanksInGreaterThan instead.');\n this.scalarFilterParams.includeBlanksInEquals = this.scalarFilterParams.nullComparator.equals;\n this.scalarFilterParams.includeBlanksInLessThan = this.scalarFilterParams.nullComparator.lessThan;\n this.scalarFilterParams.includeBlanksInGreaterThan = this.scalarFilterParams.nullComparator.greaterThan;\n }\n };\n ScalerFilter.prototype.nullComparator = function (selectedOption, filterValue, gridValue) {\n if (gridValue == null) {\n var nullValue = this.canNullsPassFilter(selectedOption);\n if (selectedOption === ScalerFilter.EMPTY) {\n return 0;\n }\n if (selectedOption === ScalerFilter.EQUALS) {\n return nullValue ? 0 : 1;\n }\n if (selectedOption === ScalerFilter.GREATER_THAN) {\n return nullValue ? 1 : -1;\n }\n if (selectedOption === ScalerFilter.GREATER_THAN_OR_EQUAL) {\n return nullValue ? 1 : -1;\n }\n if (selectedOption === ScalerFilter.LESS_THAN_OR_EQUAL) {\n return nullValue ? -1 : 1;\n }\n if (selectedOption === ScalerFilter.LESS_THAN) {\n return nullValue ? -1 : 1;\n }\n if (selectedOption === ScalerFilter.NOT_EQUAL) {\n return nullValue ? 1 : 0;\n }\n }\n var actualComparator = this.comparator();\n return actualComparator(filterValue, gridValue);\n };\n ScalerFilter.prototype.canNullsPassFilter = function (type) {\n switch (type) {\n case SimpleFilter.GREATER_THAN:\n case SimpleFilter.GREATER_THAN_OR_EQUAL:\n return this.scalarFilterParams.includeBlanksInGreaterThan;\n case SimpleFilter.LESS_THAN:\n case SimpleFilter.LESS_THAN_OR_EQUAL:\n return this.scalarFilterParams.includeBlanksInLessThan;\n case SimpleFilter.EQUALS:\n return this.scalarFilterParams.includeBlanksInEquals;\n }\n };\n ScalerFilter.prototype.individualConditionPasses = function (params, filterModel) {\n var cellValue = this.scalarFilterParams.valueGetter(params.node);\n var range = this.mapRangeFromModel(filterModel);\n var filterValue = range.from;\n var filterValueTo = range.to;\n var filterType = filterModel.type;\n var customFilterOption = this.optionsFactory.getCustomOption(filterType);\n if (customFilterOption) {\n // only execute the custom filter if a value exists or a value isn't required, i.e. input is hidden\n if (filterValue != null || customFilterOption.hideFilterInput) {\n return customFilterOption.test(filterValue, cellValue);\n }\n }\n // why this? looks like logic that should be in parent class????\n // if (filterValue == null) {\n // return type === FilterConditionType.MAIN ? true : this.conditionValue === 'AND';\n // }\n var compareResult = this.nullComparator(filterType, filterValue, cellValue);\n if (filterType === ScalerFilter.EQUALS) {\n return compareResult === 0;\n }\n if (filterType === ScalerFilter.GREATER_THAN) {\n return compareResult > 0;\n }\n if (filterType === ScalerFilter.GREATER_THAN_OR_EQUAL) {\n return compareResult >= 0;\n }\n if (filterType === ScalerFilter.LESS_THAN_OR_EQUAL) {\n return compareResult <= 0;\n }\n if (filterType === ScalerFilter.LESS_THAN) {\n return compareResult < 0;\n }\n if (filterType === ScalerFilter.NOT_EQUAL) {\n return compareResult != 0;\n }\n // From now on the type is a range and rawFilterValues must be an array!\n var compareToResult = this.nullComparator(filterType, filterValueTo, cellValue);\n if (filterType === ScalerFilter.IN_RANGE) {\n if (!this.scalarFilterParams.inRangeInclusive) {\n return compareResult > 0 && compareToResult < 0;\n }\n else {\n return compareResult >= 0 && compareToResult <= 0;\n }\n }\n throw new Error('Unexpected type of filter: ' + filterType);\n };\n ScalerFilter.DEFAULT_NULL_COMPARATOR = {\n equals: false,\n lessThan: false,\n greaterThan: false\n };\n return ScalerFilter;\n}(SimpleFilter));\nexport { ScalerFilter };\n","/* tslint:disable */\n\nimport zenObservable from 'zen-observable';\n\nnamespace Observable {\n\n}\n\nimport { ZenObservable } from './types';\n\nexport { ZenObservable };\n\nexport type Observer = ZenObservable.Observer;\nexport type Subscriber = ZenObservable.Subscriber;\nexport type ObservableLike = ZenObservable.ObservableLike;\n\nexport const Observable: {\n new (subscriber: Subscriber): Observable;\n from(\n observable: Observable | ZenObservable.ObservableLike | ArrayLike,\n ): Observable;\n of(...args: Array): Observable;\n} = zenObservable;\n\nexport interface Observable {\n subscribe(\n observerOrNext: ((value: T) => void) | ZenObservable.Observer,\n error?: (error: any) => void,\n complete?: () => void,\n ): ZenObservable.Subscription;\n\n forEach(fn: (value: T) => void): Promise;\n\n map(fn: (value: T) => R): Observable;\n\n filter(fn: (value: T) => boolean): Observable;\n\n reduce(\n fn: (previousValue: R | T, currentValue: T) => R | T,\n initialValue?: R | T,\n ): Observable;\n\n flatMap(fn: (value: T) => ZenObservable.ObservableLike): Observable;\n\n from(\n observable: Observable | ZenObservable.ObservableLike | ArrayLike,\n ): Observable;\n of(...args: Array): Observable;\n}\n","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var value;\n\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value;\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n}","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { AgAbstractLabel } from \"./agAbstractLabel\";\nimport { _ } from \"../utils\";\nvar AgAbstractField = /** @class */ (function (_super) {\n __extends(AgAbstractField, _super);\n function AgAbstractField() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AgAbstractField.prototype.onValueChange = function (callbackFn) {\n var _this = this;\n this.addDestroyableEventListener(this, AgAbstractField.EVENT_CHANGED, function () {\n callbackFn(_this.getValue());\n });\n return this;\n };\n AgAbstractField.prototype.getWidth = function () {\n return this.getGui().clientWidth;\n };\n AgAbstractField.prototype.setWidth = function (width) {\n _.setFixedWidth(this.getGui(), width);\n return this;\n };\n AgAbstractField.prototype.getValue = function () {\n return this.value;\n };\n AgAbstractField.prototype.setValue = function (value, silent) {\n if (this.value === value) {\n return this;\n }\n this.value = value;\n if (!silent) {\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n }\n return this;\n };\n AgAbstractField.EVENT_CHANGED = 'valueChange';\n return AgAbstractField;\n}(AgAbstractLabel));\nexport { AgAbstractField };\n","// TODO v5: consider to make it private\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Used for setting prototype methods that IE8 chokes on.\nvar DELETE = 'delete';\n\n// Constants describing the size of trie nodes.\nvar SHIFT = 5; // Resulted in best performance after ______?\nvar SIZE = 1 << SHIFT;\nvar MASK = SIZE - 1;\n\n// A consistent shared value representing \"not set\" which equals nothing other\n// than itself, and nothing that could be provided externally.\nvar NOT_SET = {};\n\n// Boolean references, Rough equivalent of `bool &`.\nfunction MakeRef() {\n return { value: false };\n}\n\nfunction SetRef(ref) {\n if (ref) {\n ref.value = true;\n }\n}\n\n// A function which returns a value representing an \"owner\" for transient writes\n// to tries. The return value will only ever equal itself, and will not equal\n// the return of any subsequent call of this function.\nfunction OwnerID() {}\n\nfunction ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n}\n\nfunction wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n}\n\nfunction returnTrue() {\n return true;\n}\n\nfunction wholeSlice(begin, end, size) {\n return (\n ((begin === 0 && !isNeg(begin)) ||\n (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size))\n );\n}\n\nfunction resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n}\n\nfunction resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n}\n\nfunction resolveIndex(index, size, defaultIndex) {\n // Sanitize indices using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n return index === undefined\n ? defaultIndex\n : isNeg(index)\n ? size === Infinity\n ? size\n : Math.max(0, size + index) | 0\n : size === undefined || size === index\n ? index\n : Math.min(size, index) | 0;\n}\n\nfunction isNeg(value) {\n // Account for -0 which is negative, but not less than 0.\n return value < 0 || (value === 0 && 1 / value === -Infinity);\n}\n\n// Note: value is unchanged to not break immutable-devtools.\nvar IS_COLLECTION_SYMBOL = '@@__IMMUTABLE_ITERABLE__@@';\n\nfunction isCollection(maybeCollection) {\n return Boolean(maybeCollection && maybeCollection[IS_COLLECTION_SYMBOL]);\n}\n\nvar IS_KEYED_SYMBOL = '@@__IMMUTABLE_KEYED__@@';\n\nfunction isKeyed(maybeKeyed) {\n return Boolean(maybeKeyed && maybeKeyed[IS_KEYED_SYMBOL]);\n}\n\nvar IS_INDEXED_SYMBOL = '@@__IMMUTABLE_INDEXED__@@';\n\nfunction isIndexed(maybeIndexed) {\n return Boolean(maybeIndexed && maybeIndexed[IS_INDEXED_SYMBOL]);\n}\n\nfunction isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n}\n\nvar Collection = function Collection(value) {\n return isCollection(value) ? value : Seq(value);\n};\n\nvar KeyedCollection = /*@__PURE__*/(function (Collection) {\n function KeyedCollection(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n if ( Collection ) KeyedCollection.__proto__ = Collection;\n KeyedCollection.prototype = Object.create( Collection && Collection.prototype );\n KeyedCollection.prototype.constructor = KeyedCollection;\n\n return KeyedCollection;\n}(Collection));\n\nvar IndexedCollection = /*@__PURE__*/(function (Collection) {\n function IndexedCollection(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n if ( Collection ) IndexedCollection.__proto__ = Collection;\n IndexedCollection.prototype = Object.create( Collection && Collection.prototype );\n IndexedCollection.prototype.constructor = IndexedCollection;\n\n return IndexedCollection;\n}(Collection));\n\nvar SetCollection = /*@__PURE__*/(function (Collection) {\n function SetCollection(value) {\n return isCollection(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n if ( Collection ) SetCollection.__proto__ = Collection;\n SetCollection.prototype = Object.create( Collection && Collection.prototype );\n SetCollection.prototype.constructor = SetCollection;\n\n return SetCollection;\n}(Collection));\n\nCollection.Keyed = KeyedCollection;\nCollection.Indexed = IndexedCollection;\nCollection.Set = SetCollection;\n\nvar IS_SEQ_SYMBOL = '@@__IMMUTABLE_SEQ__@@';\n\nfunction isSeq(maybeSeq) {\n return Boolean(maybeSeq && maybeSeq[IS_SEQ_SYMBOL]);\n}\n\nvar IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';\n\nfunction isRecord(maybeRecord) {\n return Boolean(maybeRecord && maybeRecord[IS_RECORD_SYMBOL]);\n}\n\nfunction isImmutable(maybeImmutable) {\n return isCollection(maybeImmutable) || isRecord(maybeImmutable);\n}\n\nvar IS_ORDERED_SYMBOL = '@@__IMMUTABLE_ORDERED__@@';\n\nfunction isOrdered(maybeOrdered) {\n return Boolean(maybeOrdered && maybeOrdered[IS_ORDERED_SYMBOL]);\n}\n\nvar ITERATE_KEYS = 0;\nvar ITERATE_VALUES = 1;\nvar ITERATE_ENTRIES = 2;\n\nvar REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\n\nvar ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\nvar Iterator = function Iterator(next) {\n this.next = next;\n};\n\nIterator.prototype.toString = function toString () {\n return '[Iterator]';\n};\n\nIterator.KEYS = ITERATE_KEYS;\nIterator.VALUES = ITERATE_VALUES;\nIterator.ENTRIES = ITERATE_ENTRIES;\n\nIterator.prototype.inspect = Iterator.prototype.toSource = function() {\n return this.toString();\n};\nIterator.prototype[ITERATOR_SYMBOL] = function() {\n return this;\n};\n\nfunction iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult\n ? (iteratorResult.value = value)\n : (iteratorResult = {\n value: value,\n done: false,\n });\n return iteratorResult;\n}\n\nfunction iteratorDone() {\n return { value: undefined, done: true };\n}\n\nfunction hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n}\n\nfunction isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n}\n\nfunction getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n}\n\nfunction getIteratorFn(iterable) {\n var iteratorFn =\n iterable &&\n ((REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isArrayLike(value) {\n if (Array.isArray(value) || typeof value === 'string') {\n return true;\n }\n\n return (\n value &&\n typeof value === 'object' &&\n Number.isInteger(value.length) &&\n value.length >= 0 &&\n (value.length === 0\n ? // Only {length: 0} is considered Array-like.\n Object.keys(value).length === 1\n : // An object is only Array-like if it has a property where the last value\n // in the array-like may be found (which could be undefined).\n value.hasOwnProperty(value.length - 1))\n );\n}\n\nvar Seq = /*@__PURE__*/(function (Collection$$1) {\n function Seq(value) {\n return value === null || value === undefined\n ? emptySequence()\n : isImmutable(value)\n ? value.toSeq()\n : seqFromValue(value);\n }\n\n if ( Collection$$1 ) Seq.__proto__ = Collection$$1;\n Seq.prototype = Object.create( Collection$$1 && Collection$$1.prototype );\n Seq.prototype.constructor = Seq;\n\n Seq.prototype.toSeq = function toSeq () {\n return this;\n };\n\n Seq.prototype.toString = function toString () {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function cacheResult () {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function __iterate (fn, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n while (i !== size) {\n var entry = cache[reverse ? size - ++i : i++];\n if (fn(entry[1], entry[0], this) === false) {\n break;\n }\n }\n return i;\n }\n return this.__iterateUncached(fn, reverse);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function __iterator (type, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var entry = cache[reverse ? size - ++i : i++];\n return iteratorValue(type, entry[0], entry[1]);\n });\n }\n return this.__iteratorUncached(type, reverse);\n };\n\n return Seq;\n}(Collection));\n\nvar KeyedSeq = /*@__PURE__*/(function (Seq) {\n function KeyedSeq(value) {\n return value === null || value === undefined\n ? emptySequence().toKeyedSeq()\n : isCollection(value)\n ? isKeyed(value)\n ? value.toSeq()\n : value.fromEntrySeq()\n : isRecord(value)\n ? value.toSeq()\n : keyedSeqFromValue(value);\n }\n\n if ( Seq ) KeyedSeq.__proto__ = Seq;\n KeyedSeq.prototype = Object.create( Seq && Seq.prototype );\n KeyedSeq.prototype.constructor = KeyedSeq;\n\n KeyedSeq.prototype.toKeyedSeq = function toKeyedSeq () {\n return this;\n };\n\n return KeyedSeq;\n}(Seq));\n\nvar IndexedSeq = /*@__PURE__*/(function (Seq) {\n function IndexedSeq(value) {\n return value === null || value === undefined\n ? emptySequence()\n : isCollection(value)\n ? isKeyed(value)\n ? value.entrySeq()\n : value.toIndexedSeq()\n : isRecord(value)\n ? value.toSeq().entrySeq()\n : indexedSeqFromValue(value);\n }\n\n if ( Seq ) IndexedSeq.__proto__ = Seq;\n IndexedSeq.prototype = Object.create( Seq && Seq.prototype );\n IndexedSeq.prototype.constructor = IndexedSeq;\n\n IndexedSeq.of = function of (/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function toIndexedSeq () {\n return this;\n };\n\n IndexedSeq.prototype.toString = function toString () {\n return this.__toString('Seq [', ']');\n };\n\n return IndexedSeq;\n}(Seq));\n\nvar SetSeq = /*@__PURE__*/(function (Seq) {\n function SetSeq(value) {\n return (isCollection(value) && !isAssociative(value)\n ? value\n : IndexedSeq(value)\n ).toSetSeq();\n }\n\n if ( Seq ) SetSeq.__proto__ = Seq;\n SetSeq.prototype = Object.create( Seq && Seq.prototype );\n SetSeq.prototype.constructor = SetSeq;\n\n SetSeq.of = function of (/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function toSetSeq () {\n return this;\n };\n\n return SetSeq;\n}(Seq));\n\nSeq.isSeq = isSeq;\nSeq.Keyed = KeyedSeq;\nSeq.Set = SetSeq;\nSeq.Indexed = IndexedSeq;\n\nSeq.prototype[IS_SEQ_SYMBOL] = true;\n\n// #pragma Root Sequences\n\nvar ArraySeq = /*@__PURE__*/(function (IndexedSeq) {\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n if ( IndexedSeq ) ArraySeq.__proto__ = IndexedSeq;\n ArraySeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ArraySeq.prototype.constructor = ArraySeq;\n\n ArraySeq.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function __iterate (fn, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n while (i !== size) {\n var ii = reverse ? size - ++i : i++;\n if (fn(array[ii], ii, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ArraySeq.prototype.__iterator = function __iterator (type, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var ii = reverse ? size - ++i : i++;\n return iteratorValue(type, ii, array[ii]);\n });\n };\n\n return ArraySeq;\n}(IndexedSeq));\n\nvar ObjectSeq = /*@__PURE__*/(function (KeyedSeq) {\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n if ( KeyedSeq ) ObjectSeq.__proto__ = KeyedSeq;\n ObjectSeq.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ObjectSeq.prototype.constructor = ObjectSeq;\n\n ObjectSeq.prototype.get = function get (key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function has (key) {\n return hasOwnProperty.call(this._object, key);\n };\n\n ObjectSeq.prototype.__iterate = function __iterate (fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n while (i !== size) {\n var key = keys[reverse ? size - ++i : i++];\n if (fn(object[key], key, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ObjectSeq.prototype.__iterator = function __iterator (type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var key = keys[reverse ? size - ++i : i++];\n return iteratorValue(type, key, object[key]);\n });\n };\n\n return ObjectSeq;\n}(KeyedSeq));\nObjectSeq.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar CollectionSeq = /*@__PURE__*/(function (IndexedSeq) {\n function CollectionSeq(collection) {\n this._collection = collection;\n this.size = collection.length || collection.size;\n }\n\n if ( IndexedSeq ) CollectionSeq.__proto__ = IndexedSeq;\n CollectionSeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n CollectionSeq.prototype.constructor = CollectionSeq;\n\n CollectionSeq.prototype.__iterateUncached = function __iterateUncached (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n CollectionSeq.prototype.__iteratorUncached = function __iteratorUncached (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function () {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n return CollectionSeq;\n}(IndexedSeq));\n\n// # pragma Helper functions\n\nvar EMPTY_SEQ;\n\nfunction emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n}\n\nfunction keyedSeqFromValue(value) {\n var seq = Array.isArray(value)\n ? new ArraySeq(value)\n : hasIterator(value)\n ? new CollectionSeq(value)\n : undefined;\n if (seq) {\n return seq.fromEntrySeq();\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of [k, v] entries, or keyed object: ' +\n value\n );\n}\n\nfunction indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq;\n }\n throw new TypeError(\n 'Expected Array or collection object of values: ' + value\n );\n}\n\nfunction seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq;\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of values, or keyed object: ' + value\n );\n}\n\nfunction maybeIndexedSeqFromValue(value) {\n return isArrayLike(value)\n ? new ArraySeq(value)\n : hasIterator(value)\n ? new CollectionSeq(value)\n : undefined;\n}\n\nvar IS_MAP_SYMBOL = '@@__IMMUTABLE_MAP__@@';\n\nfunction isMap(maybeMap) {\n return Boolean(maybeMap && maybeMap[IS_MAP_SYMBOL]);\n}\n\nfunction isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n}\n\nfunction isValueObject(maybeValue) {\n return Boolean(\n maybeValue &&\n typeof maybeValue.equals === 'function' &&\n typeof maybeValue.hashCode === 'function'\n );\n}\n\n/**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections are Value Objects: they implement `equals()`\n * and `hashCode()`.\n */\nfunction is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (\n typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function'\n ) {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n return !!(\n isValueObject(valueA) &&\n isValueObject(valueB) &&\n valueA.equals(valueB)\n );\n}\n\nvar imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2\n ? Math.imul\n : function imul(a, b) {\n a |= 0; // int\n b |= 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0)) | 0; // int\n };\n\n// v8 has an optimization for storing 31-bit signed numbers.\n// Values which have either 00 or 11 as the high order bits qualify.\n// This function drops the highest order bit in a signed number, maintaining\n// the sign bit.\nfunction smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xbfffffff);\n}\n\nvar defaultValueOf = Object.prototype.valueOf;\n\nfunction hash(o) {\n switch (typeof o) {\n case 'boolean':\n // The hash values for built-in constants are a 1 value for each 5-byte\n // shift region expect for the first, which encodes the value. This\n // reduces the odds of a hash collision for these common values.\n return o ? 0x42108421 : 0x42108420;\n case 'number':\n return hashNumber(o);\n case 'string':\n return o.length > STRING_HASH_CACHE_MIN_STRLEN\n ? cachedHashString(o)\n : hashString(o);\n case 'object':\n case 'function':\n if (o === null) {\n return 0x42108422;\n }\n if (typeof o.hashCode === 'function') {\n // Drop any high bits from accidentally long hash codes.\n return smi(o.hashCode(o));\n }\n if (o.valueOf !== defaultValueOf && typeof o.valueOf === 'function') {\n o = o.valueOf(o);\n }\n return hashJSObj(o);\n case 'undefined':\n return 0x42108423;\n default:\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + typeof o + ' cannot be hashed.');\n }\n}\n\n// Compress arbitrarily large numbers into smi hashes.\nfunction hashNumber(n) {\n if (n !== n || n === Infinity) {\n return 0;\n }\n var hash = n | 0;\n if (hash !== n) {\n hash ^= n * 0xffffffff;\n }\n while (n > 0xffffffff) {\n n /= 0xffffffff;\n hash ^= n;\n }\n return smi(hash);\n}\n\nfunction cachedHashString(string) {\n var hashed = stringHashCache[string];\n if (hashed === undefined) {\n hashed = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hashed;\n }\n return hashed;\n}\n\n// http://jsperf.com/hashing-strings\nfunction hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hashed = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hashed = (31 * hashed + string.charCodeAt(ii)) | 0;\n }\n return smi(hashed);\n}\n\nfunction hashJSObj(obj) {\n var hashed;\n if (usingWeakMap) {\n hashed = weakMap.get(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = obj[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n if (!canDefineProperty) {\n hashed = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = getIENodeHash(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hashed);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: hashed,\n });\n } else if (\n obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable\n ) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(\n this,\n arguments\n );\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hashed;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hashed;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hashed;\n}\n\n// Get references to ES5 object methods.\nvar isExtensible = Object.isExtensible;\n\n// True if Object.defineProperty works as expected. IE8 fails this test.\nvar canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n})();\n\n// IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n// and avoid memory leaks from the IE cloneNode bug.\nfunction getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n}\n\n// If possible, use a WeakMap.\nvar usingWeakMap = typeof WeakMap === 'function';\nvar weakMap;\nif (usingWeakMap) {\n weakMap = new WeakMap();\n}\n\nvar objHashUID = 0;\n\nvar UID_HASH_KEY = '__immutablehash__';\nif (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n}\n\nvar STRING_HASH_CACHE_MIN_STRLEN = 16;\nvar STRING_HASH_CACHE_MAX_SIZE = 255;\nvar STRING_HASH_CACHE_SIZE = 0;\nvar stringHashCache = {};\n\nvar ToKeyedSequence = /*@__PURE__*/(function (KeyedSeq$$1) {\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n if ( KeyedSeq$$1 ) ToKeyedSequence.__proto__ = KeyedSeq$$1;\n ToKeyedSequence.prototype = Object.create( KeyedSeq$$1 && KeyedSeq$$1.prototype );\n ToKeyedSequence.prototype.constructor = ToKeyedSequence;\n\n ToKeyedSequence.prototype.get = function get (key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function has (key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function valueSeq () {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function reverse () {\n var this$1 = this;\n\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function () { return this$1._iter.toSeq().reverse(); };\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function map (mapper, context) {\n var this$1 = this;\n\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function () { return this$1._iter.toSeq().map(mapper, context); };\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._iter.__iterate(function (v, k) { return fn(v, k, this$1); }, reverse);\n };\n\n ToKeyedSequence.prototype.__iterator = function __iterator (type, reverse) {\n return this._iter.__iterator(type, reverse);\n };\n\n return ToKeyedSequence;\n}(KeyedSeq));\nToKeyedSequence.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar ToIndexedSequence = /*@__PURE__*/(function (IndexedSeq$$1) {\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( IndexedSeq$$1 ) ToIndexedSequence.__proto__ = IndexedSeq$$1;\n ToIndexedSequence.prototype = Object.create( IndexedSeq$$1 && IndexedSeq$$1.prototype );\n ToIndexedSequence.prototype.constructor = ToIndexedSequence;\n\n ToIndexedSequence.prototype.includes = function includes (value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n var i = 0;\n reverse && ensureSize(this);\n return this._iter.__iterate(\n function (v) { return fn(v, reverse ? this$1.size - ++i : i++, this$1); },\n reverse\n );\n };\n\n ToIndexedSequence.prototype.__iterator = function __iterator (type, reverse) {\n var this$1 = this;\n\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var i = 0;\n reverse && ensureSize(this);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(\n type,\n reverse ? this$1.size - ++i : i++,\n step.value,\n step\n );\n });\n };\n\n return ToIndexedSequence;\n}(IndexedSeq));\n\nvar ToSetSequence = /*@__PURE__*/(function (SetSeq$$1) {\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( SetSeq$$1 ) ToSetSequence.__proto__ = SetSeq$$1;\n ToSetSequence.prototype = Object.create( SetSeq$$1 && SetSeq$$1.prototype );\n ToSetSequence.prototype.constructor = ToSetSequence;\n\n ToSetSequence.prototype.has = function has (key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._iter.__iterate(function (v) { return fn(v, v, this$1); }, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(type, step.value, step.value, step);\n });\n };\n\n return ToSetSequence;\n}(SetSeq));\n\nvar FromEntriesSequence = /*@__PURE__*/(function (KeyedSeq$$1) {\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n if ( KeyedSeq$$1 ) FromEntriesSequence.__proto__ = KeyedSeq$$1;\n FromEntriesSequence.prototype = Object.create( KeyedSeq$$1 && KeyedSeq$$1.prototype );\n FromEntriesSequence.prototype.constructor = FromEntriesSequence;\n\n FromEntriesSequence.prototype.entrySeq = function entrySeq () {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._iter.__iterate(function (entry) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return fn(\n indexedCollection ? entry.get(1) : entry[1],\n indexedCollection ? entry.get(0) : entry[0],\n this$1\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return iteratorValue(\n type,\n indexedCollection ? entry.get(0) : entry[0],\n indexedCollection ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n return FromEntriesSequence;\n}(KeyedSeq));\n\nToIndexedSequence.prototype.cacheResult = ToKeyedSequence.prototype.cacheResult = ToSetSequence.prototype.cacheResult = FromEntriesSequence.prototype.cacheResult = cacheResultThrough;\n\nfunction flipFactory(collection) {\n var flipSequence = makeSequence(collection);\n flipSequence._iter = collection;\n flipSequence.size = collection.size;\n flipSequence.flip = function () { return collection; };\n flipSequence.reverse = function() {\n var reversedSequence = collection.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function () { return collection.reverse(); };\n return reversedSequence;\n };\n flipSequence.has = function (key) { return collection.includes(key); };\n flipSequence.includes = function (key) { return collection.has(key); };\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n return collection.__iterate(function (v, k) { return fn(k, v, this$1) !== false; }, reverse);\n };\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = collection.__iterator(type, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return collection.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n };\n return flipSequence;\n}\n\nfunction mapFactory(collection, mapper, context) {\n var mappedSequence = makeSequence(collection);\n mappedSequence.size = collection.size;\n mappedSequence.has = function (key) { return collection.has(key); };\n mappedSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v === NOT_SET\n ? notSetValue\n : mapper.call(context, v, key, collection);\n };\n mappedSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n return collection.__iterate(\n function (v, k, c) { return fn(mapper.call(context, v, k, c), k, this$1) !== false; },\n reverse\n );\n };\n mappedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, collection),\n step\n );\n });\n };\n return mappedSequence;\n}\n\nfunction reverseFactory(collection, useKeys) {\n var this$1 = this;\n\n var reversedSequence = makeSequence(collection);\n reversedSequence._iter = collection;\n reversedSequence.size = collection.size;\n reversedSequence.reverse = function () { return collection; };\n if (collection.flip) {\n reversedSequence.flip = function() {\n var flipSequence = flipFactory(collection);\n flipSequence.reverse = function () { return collection.flip(); };\n return flipSequence;\n };\n }\n reversedSequence.get = function (key, notSetValue) { return collection.get(useKeys ? key : -1 - key, notSetValue); };\n reversedSequence.has = function (key) { return collection.has(useKeys ? key : -1 - key); };\n reversedSequence.includes = function (value) { return collection.includes(value); };\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function(fn, reverse) {\n var this$1 = this;\n\n var i = 0;\n reverse && ensureSize(collection);\n return collection.__iterate(\n function (v, k) { return fn(v, useKeys ? k : reverse ? this$1.size - ++i : i++, this$1); },\n !reverse\n );\n };\n reversedSequence.__iterator = function (type, reverse) {\n var i = 0;\n reverse && ensureSize(collection);\n var iterator = collection.__iterator(ITERATE_ENTRIES, !reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n return iteratorValue(\n type,\n useKeys ? entry[0] : reverse ? this$1.size - ++i : i++,\n entry[1],\n step\n );\n });\n };\n return reversedSequence;\n}\n\nfunction filterFactory(collection, predicate, context, useKeys) {\n var filterSequence = makeSequence(collection);\n if (useKeys) {\n filterSequence.has = function (key) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, collection);\n };\n filterSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, collection)\n ? v\n : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function(type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, collection)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n };\n return filterSequence;\n}\n\nfunction countByFactory(collection, grouper, context) {\n var groups = Map().asMutable();\n collection.__iterate(function (v, k) {\n groups.update(grouper.call(context, v, k, collection), 0, function (a) { return a + 1; });\n });\n return groups.asImmutable();\n}\n\nfunction groupByFactory(collection, grouper, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = (isOrdered(collection) ? OrderedMap() : Map()).asMutable();\n collection.__iterate(function (v, k) {\n groups.update(\n grouper.call(context, v, k, collection),\n function (a) { return ((a = a || []), a.push(isKeyedIter ? [k, v] : v), a); }\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); }).asImmutable();\n}\n\nfunction sliceFactory(collection, begin, end, useKeys) {\n var originalSize = collection.size;\n\n if (wholeSlice(begin, end, originalSize)) {\n return collection;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this collection's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(collection.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(collection);\n\n // If collection.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size =\n sliceSize === 0 ? sliceSize : (collection.size && sliceSize) || undefined;\n\n if (!useKeys && isSeq(collection) && sliceSize >= 0) {\n sliceSeq.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize\n ? collection.get(index + resolvedBegin, notSetValue)\n : notSetValue;\n };\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return (\n fn(v, useKeys ? k : iterations - 1, this$1) !== false &&\n iterations !== sliceSize\n );\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n if (sliceSize === 0) {\n return new Iterator(iteratorDone);\n }\n var iterator = collection.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function () {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES || step.done) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n }\n return iteratorValue(type, iterations - 1, step.value[1], step);\n });\n };\n\n return sliceSeq;\n}\n\nfunction takeWhileFactory(collection, predicate, context) {\n var takeSequence = makeSequence(collection);\n takeSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n collection.__iterate(\n function (v, k, c) { return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$1); }\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function () {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$1)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n}\n\nfunction skipWhileFactory(collection, predicate, context, useKeys) {\n var skipSequence = makeSequence(collection);\n skipSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function () {\n var step;\n var k;\n var v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n }\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$1));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n}\n\nfunction concatFactory(collection, values) {\n var isKeyedCollection = isKeyed(collection);\n var iters = [collection]\n .concat(values)\n .map(function (v) {\n if (!isCollection(v)) {\n v = isKeyedCollection\n ? keyedSeqFromValue(v)\n : indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedCollection) {\n v = KeyedCollection(v);\n }\n return v;\n })\n .filter(function (v) { return v.size !== 0; });\n\n if (iters.length === 0) {\n return collection;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (\n singleton === collection ||\n (isKeyedCollection && isKeyed(singleton)) ||\n (isIndexed(collection) && isIndexed(singleton))\n ) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedCollection) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(collection)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(function (sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n }, 0);\n return concatSeq;\n}\n\nfunction flattenFactory(collection, depth, useKeys) {\n var flatSequence = makeSequence(collection);\n flatSequence.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {\n iter.__iterate(function (v, k) {\n if ((!depth || currentDepth < depth) && isCollection(v)) {\n flatDeep(v, currentDepth + 1);\n } else {\n iterations++;\n if (fn(v, useKeys ? k : iterations - 1, flatSequence) === false) {\n stopped = true;\n }\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(collection, 0);\n return iterations;\n };\n flatSequence.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function () {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isCollection(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n };\n return flatSequence;\n}\n\nfunction flatMapFactory(collection, mapper, context) {\n var coerce = collectionClass(collection);\n return collection\n .toSeq()\n .map(function (v, k) { return coerce(mapper.call(context, v, k, collection)); })\n .flatten(true);\n}\n\nfunction interposeFactory(collection, separator) {\n var interposedSequence = makeSequence(collection);\n interposedSequence.size = collection.size && collection.size * 2 - 1;\n interposedSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n var iterations = 0;\n collection.__iterate(\n function (v) { return (!iterations || fn(separator, iterations++, this$1) !== false) &&\n fn(v, iterations++, this$1) !== false; },\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = collection.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function () {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2\n ? iteratorValue(type, iterations++, separator)\n : iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n}\n\nfunction sortFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedCollection = isKeyed(collection);\n var index = 0;\n var entries = collection\n .toSeq()\n .map(function (v, k) { return [k, v, index++, mapper ? mapper(v, k, collection) : v]; })\n .valueSeq()\n .toArray();\n entries.sort(function (a, b) { return comparator(a[3], b[3]) || a[2] - b[2]; }).forEach(\n isKeyedCollection\n ? function (v, i) {\n entries[i].length = 2;\n }\n : function (v, i) {\n entries[i] = v[1];\n }\n );\n return isKeyedCollection\n ? KeyedSeq(entries)\n : isIndexed(collection)\n ? IndexedSeq(entries)\n : SetSeq(entries);\n}\n\nfunction maxFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = collection\n .toSeq()\n .map(function (v, k) { return [v, mapper(v, k, collection)]; })\n .reduce(function (a, b) { return (maxCompare(comparator, a[1], b[1]) ? b : a); });\n return entry && entry[0];\n }\n return collection.reduce(function (a, b) { return (maxCompare(comparator, a, b) ? b : a); });\n}\n\nfunction maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (\n (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) ||\n comp > 0\n );\n}\n\nfunction zipWithFactory(keyIter, zipper, iters, zipAll) {\n var zipSequence = makeSequence(keyIter);\n var sizes = new ArraySeq(iters).map(function (i) { return i.size; });\n zipSequence.size = zipAll ? sizes.max() : sizes.min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(\n function (i) { return ((i = Collection(i)), getIterator(reverse ? i.reverse() : i)); }\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function () {\n var steps;\n if (!isDone) {\n steps = iterators.map(function (i) { return i.next(); });\n isDone = zipAll ? steps.every(function (s) { return s.done; }) : steps.some(function (s) { return s.done; });\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function (s) { return s.value; }))\n );\n });\n };\n return zipSequence;\n}\n\n// #pragma Helper Functions\n\nfunction reify(iter, seq) {\n return iter === seq ? iter : isSeq(iter) ? seq : iter.constructor(seq);\n}\n\nfunction validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n}\n\nfunction collectionClass(collection) {\n return isKeyed(collection)\n ? KeyedCollection\n : isIndexed(collection)\n ? IndexedCollection\n : SetCollection;\n}\n\nfunction makeSequence(collection) {\n return Object.create(\n (isKeyed(collection)\n ? KeyedSeq\n : isIndexed(collection)\n ? IndexedSeq\n : SetSeq\n ).prototype\n );\n}\n\nfunction cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n }\n return Seq.prototype.cacheResult.call(this);\n}\n\nfunction defaultComparator(a, b) {\n if (a === undefined && b === undefined) {\n return 0;\n }\n\n if (a === undefined) {\n return 1;\n }\n\n if (b === undefined) {\n return -1;\n }\n\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\n// http://jsperf.com/copy-array-inline\nfunction arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n}\n\nfunction invariant(condition, error) {\n if (!condition) { throw new Error(error); }\n}\n\nfunction assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n}\n\nfunction coerceKeyPath(keyPath) {\n if (isArrayLike(keyPath) && typeof keyPath !== 'string') {\n return keyPath;\n }\n if (isOrdered(keyPath)) {\n return keyPath.toArray();\n }\n throw new TypeError(\n 'Invalid keyPath: expected Ordered Collection or Array: ' + keyPath\n );\n}\n\nfunction isPlainObj(value) {\n return (\n value &&\n (typeof value.constructor !== 'function' ||\n value.constructor.name === 'Object')\n );\n}\n\n/**\n * Returns true if the value is a potentially-persistent data structure, either\n * provided by Immutable.js or a plain Array or Object.\n */\nfunction isDataStructure(value) {\n return (\n typeof value === 'object' &&\n (isImmutable(value) || Array.isArray(value) || isPlainObj(value))\n );\n}\n\n/**\n * Converts a value to a string, adding quotes if a string was provided.\n */\nfunction quoteString(value) {\n try {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n } catch (_ignoreError) {\n return JSON.stringify(value);\n }\n}\n\nfunction has(collection, key) {\n return isImmutable(collection)\n ? collection.has(key)\n : isDataStructure(collection) && hasOwnProperty.call(collection, key);\n}\n\nfunction get(collection, key, notSetValue) {\n return isImmutable(collection)\n ? collection.get(key, notSetValue)\n : !has(collection, key)\n ? notSetValue\n : typeof collection.get === 'function'\n ? collection.get(key)\n : collection[key];\n}\n\nfunction shallowCopy(from) {\n if (Array.isArray(from)) {\n return arrCopy(from);\n }\n var to = {};\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n return to;\n}\n\nfunction remove(collection, key) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.remove) {\n throw new TypeError(\n 'Cannot update immutable value without .remove() method: ' + collection\n );\n }\n return collection.remove(key);\n }\n if (!hasOwnProperty.call(collection, key)) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n if (Array.isArray(collectionCopy)) {\n collectionCopy.splice(key, 1);\n } else {\n delete collectionCopy[key];\n }\n return collectionCopy;\n}\n\nfunction set(collection, key, value) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.set) {\n throw new TypeError(\n 'Cannot update immutable value without .set() method: ' + collection\n );\n }\n return collection.set(key, value);\n }\n if (hasOwnProperty.call(collection, key) && value === collection[key]) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n collectionCopy[key] = value;\n return collectionCopy;\n}\n\nfunction updateIn(collection, keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeeply(\n isImmutable(collection),\n collection,\n coerceKeyPath(keyPath),\n 0,\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? notSetValue : updatedValue;\n}\n\nfunction updateInDeeply(\n inImmutable,\n existing,\n keyPath,\n i,\n notSetValue,\n updater\n) {\n var wasNotSet = existing === NOT_SET;\n if (i === keyPath.length) {\n var existingValue = wasNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n if (!wasNotSet && !isDataStructure(existing)) {\n throw new TypeError(\n 'Cannot update within non-data-structure value in path [' +\n keyPath.slice(0, i).map(quoteString) +\n ']: ' +\n existing\n );\n }\n var key = keyPath[i];\n var nextExisting = wasNotSet ? NOT_SET : get(existing, key, NOT_SET);\n var nextUpdated = updateInDeeply(\n nextExisting === NOT_SET ? inImmutable : isImmutable(nextExisting),\n nextExisting,\n keyPath,\n i + 1,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting\n ? existing\n : nextUpdated === NOT_SET\n ? remove(existing, key)\n : set(\n wasNotSet ? (inImmutable ? emptyMap() : {}) : existing,\n key,\n nextUpdated\n );\n}\n\nfunction setIn(collection, keyPath, value) {\n return updateIn(collection, keyPath, NOT_SET, function () { return value; });\n}\n\nfunction setIn$1(keyPath, v) {\n return setIn(this, keyPath, v);\n}\n\nfunction removeIn(collection, keyPath) {\n return updateIn(collection, keyPath, function () { return NOT_SET; });\n}\n\nfunction deleteIn(keyPath) {\n return removeIn(this, keyPath);\n}\n\nfunction update(collection, key, notSetValue, updater) {\n return updateIn(collection, [key], notSetValue, updater);\n}\n\nfunction update$1(key, notSetValue, updater) {\n return arguments.length === 1\n ? key(this)\n : update(this, key, notSetValue, updater);\n}\n\nfunction updateIn$1(keyPath, notSetValue, updater) {\n return updateIn(this, keyPath, notSetValue, updater);\n}\n\nfunction merge() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeIntoKeyedWith(this, iters);\n}\n\nfunction mergeWith(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n if (typeof merger !== 'function') {\n throw new TypeError('Invalid merger function: ' + merger);\n }\n return mergeIntoKeyedWith(this, iters, merger);\n}\n\nfunction mergeIntoKeyedWith(collection, collections, merger) {\n var iters = [];\n for (var ii = 0; ii < collections.length; ii++) {\n var collection$1 = KeyedCollection(collections[ii]);\n if (collection$1.size !== 0) {\n iters.push(collection$1);\n }\n }\n if (iters.length === 0) {\n return collection;\n }\n if (\n collection.toSeq().size === 0 &&\n !collection.__ownerID &&\n iters.length === 1\n ) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function (collection) {\n var mergeIntoCollection = merger\n ? function (value, key) {\n update(\n collection,\n key,\n NOT_SET,\n function (oldVal) { return (oldVal === NOT_SET ? value : merger(oldVal, value, key)); }\n );\n }\n : function (value, key) {\n collection.set(key, value);\n };\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoCollection);\n }\n });\n}\n\nfunction merge$1(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeWithSources(collection, sources);\n}\n\nfunction mergeWith$1(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeWithSources(collection, sources, merger);\n}\n\nfunction mergeDeep(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(collection, sources);\n}\n\nfunction mergeDeepWith(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeDeepWithSources(collection, sources, merger);\n}\n\nfunction mergeDeepWithSources(collection, sources, merger) {\n return mergeWithSources(collection, sources, deepMergerWith(merger));\n}\n\nfunction mergeWithSources(collection, sources, merger) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot merge into non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n return typeof merger === 'function' && collection.mergeWith\n ? collection.mergeWith.apply(collection, [ merger ].concat( sources ))\n : collection.merge\n ? collection.merge.apply(collection, sources)\n : collection.concat.apply(collection, sources);\n }\n var isArray = Array.isArray(collection);\n var merged = collection;\n var Collection$$1 = isArray ? IndexedCollection : KeyedCollection;\n var mergeItem = isArray\n ? function (value) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged.push(value);\n }\n : function (value, key) {\n var hasVal = hasOwnProperty.call(merged, key);\n var nextVal =\n hasVal && merger ? merger(merged[key], value, key) : value;\n if (!hasVal || nextVal !== merged[key]) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged[key] = nextVal;\n }\n };\n for (var i = 0; i < sources.length; i++) {\n Collection$$1(sources[i]).forEach(mergeItem);\n }\n return merged;\n}\n\nfunction deepMergerWith(merger) {\n function deepMerger(oldValue, newValue, key) {\n return isDataStructure(oldValue) && isDataStructure(newValue)\n ? mergeWithSources(oldValue, [newValue], deepMerger)\n : merger\n ? merger(oldValue, newValue, key)\n : newValue;\n }\n return deepMerger;\n}\n\nfunction mergeDeep$1() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeDeepWithSources(this, iters);\n}\n\nfunction mergeDeepWith$1(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(this, iters, merger);\n}\n\nfunction mergeIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn(this, keyPath, emptyMap(), function (m) { return mergeWithSources(m, iters); });\n}\n\nfunction mergeDeepIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn(this, keyPath, emptyMap(), function (m) { return mergeDeepWithSources(m, iters); }\n );\n}\n\nfunction withMutations(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n}\n\nfunction asMutable() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n}\n\nfunction asImmutable() {\n return this.__ensureOwner();\n}\n\nfunction wasAltered() {\n return this.__altered;\n}\n\nvar Map = /*@__PURE__*/(function (KeyedCollection$$1) {\n function Map(value) {\n return value === null || value === undefined\n ? emptyMap()\n : isMap(value) && !isOrdered(value)\n ? value\n : emptyMap().withMutations(function (map) {\n var iter = KeyedCollection$$1(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( KeyedCollection$$1 ) Map.__proto__ = KeyedCollection$$1;\n Map.prototype = Object.create( KeyedCollection$$1 && KeyedCollection$$1.prototype );\n Map.prototype.constructor = Map;\n\n Map.of = function of () {\n var keyValues = [], len = arguments.length;\n while ( len-- ) keyValues[ len ] = arguments[ len ];\n\n return emptyMap().withMutations(function (map) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function toString () {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function get (k, notSetValue) {\n return this._root\n ? this._root.get(0, undefined, k, notSetValue)\n : notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function set (k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.remove = function remove (k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteAll = function deleteAll (keys) {\n var collection = Collection(keys);\n\n if (collection.size === 0) {\n return this;\n }\n\n return this.withMutations(function (map) {\n collection.forEach(function (key) { return map.remove(key); });\n });\n };\n\n Map.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n Map.prototype.map = function map (mapper, context) {\n return this.withMutations(function (map) {\n map.forEach(function (value, key) {\n map.set(key, mapper.call(context, value, key, map));\n });\n });\n };\n\n // @pragma Mutability\n\n Map.prototype.__iterator = function __iterator (type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n var iterations = 0;\n this._root &&\n this._root.iterate(function (entry) {\n iterations++;\n return fn(entry[1], entry[0], this$1);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n return Map;\n}(KeyedCollection));\n\nMap.isMap = isMap;\n\nvar MapPrototype = Map.prototype;\nMapPrototype[IS_MAP_SYMBOL] = true;\nMapPrototype[DELETE] = MapPrototype.remove;\nMapPrototype.removeAll = MapPrototype.deleteAll;\nMapPrototype.setIn = setIn$1;\nMapPrototype.removeIn = MapPrototype.deleteIn = deleteIn;\nMapPrototype.update = update$1;\nMapPrototype.updateIn = updateIn$1;\nMapPrototype.merge = MapPrototype.concat = merge;\nMapPrototype.mergeWith = mergeWith;\nMapPrototype.mergeDeep = mergeDeep$1;\nMapPrototype.mergeDeepWith = mergeDeepWith$1;\nMapPrototype.mergeIn = mergeIn;\nMapPrototype.mergeDeepIn = mergeDeepIn;\nMapPrototype.withMutations = withMutations;\nMapPrototype.wasAltered = wasAltered;\nMapPrototype.asImmutable = asImmutable;\nMapPrototype['@@transducer/init'] = MapPrototype.asMutable = asMutable;\nMapPrototype['@@transducer/step'] = function(result, arr) {\n return result.set(arr[0], arr[1]);\n};\nMapPrototype['@@transducer/result'] = function(obj) {\n return obj.asImmutable();\n};\n\n// #pragma Trie Nodes\n\nvar ArrayMapNode = function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n};\n\nArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n};\n\nvar BitmapIndexedNode = function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n};\n\nBitmapIndexedNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = 1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK);\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0\n ? notSetValue\n : this.nodes[popCount(bitmap & (bit - 1))].get(\n shift + SHIFT,\n keyHash,\n key,\n notSetValue\n );\n};\n\nBitmapIndexedNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (\n exists &&\n !newNode &&\n nodes.length === 2 &&\n isLeafNode(nodes[idx ^ 1])\n ) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? (newNode ? bitmap : bitmap ^ bit) : bitmap | bit;\n var newNodes = exists\n ? newNode\n ? setAt(nodes, idx, newNode, isEditable)\n : spliceOut(nodes, idx, isEditable)\n : spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n};\n\nvar HashArrayMapNode = function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n};\n\nHashArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node\n ? node.get(shift + SHIFT, keyHash, key, notSetValue)\n : notSetValue;\n};\n\nHashArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setAt(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n};\n\nvar HashCollisionNode = function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n};\n\nHashCollisionNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nHashCollisionNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n};\n\nvar ValueNode = function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n};\n\nValueNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n};\n\nValueNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n};\n\n// #pragma Iterators\n\nArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate = function(\n fn,\n reverse\n) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n};\n\nBitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate = function(\n fn,\n reverse\n) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n};\n\n// eslint-disable-next-line no-unused-vars\nValueNode.prototype.iterate = function(fn, reverse) {\n return fn(this.entry);\n};\n\nvar MapIterator = /*@__PURE__*/(function (Iterator$$1) {\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n if ( Iterator$$1 ) MapIterator.__proto__ = Iterator$$1;\n MapIterator.prototype = Object.create( Iterator$$1 && Iterator$$1.prototype );\n MapIterator.prototype.constructor = MapIterator;\n\n MapIterator.prototype.next = function next () {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex = (void 0);\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(\n type,\n node.entries[this._reverse ? maxIndex - index : index]\n );\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n return MapIterator;\n}(Iterator));\n\nfunction mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n}\n\nfunction mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev,\n };\n}\n\nfunction makeMap(size, root, ownerID, hash$$1) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash$$1;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_MAP;\nfunction emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n}\n\nfunction updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef();\n var didAlter = MakeRef();\n newRoot = updateNode(\n map._root,\n map.__ownerID,\n 0,\n undefined,\n k,\n v,\n didChangeSize,\n didAlter\n );\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? (v === NOT_SET ? -1 : 1) : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n}\n\nfunction updateNode(\n node,\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n}\n\nfunction isLeafNode(node) {\n return (\n node.constructor === ValueNode || node.constructor === HashCollisionNode\n );\n}\n\nfunction mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes =\n idx1 === idx2\n ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)]\n : ((newNode = new ValueNode(ownerID, keyHash, entry)),\n idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n}\n\nfunction createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n}\n\nfunction packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n}\n\nfunction expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n}\n\nfunction popCount(x) {\n x -= (x >> 1) & 0x55555555;\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x += x >> 8;\n x += x >> 16;\n return x & 0x7f;\n}\n\nfunction setAt(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n}\n\nfunction spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n}\n\nfunction spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n}\n\nvar MAX_ARRAY_MAP_SIZE = SIZE / 4;\nvar MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\nvar MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\nvar IS_LIST_SYMBOL = '@@__IMMUTABLE_LIST__@@';\n\nfunction isList(maybeList) {\n return Boolean(maybeList && maybeList[IS_LIST_SYMBOL]);\n}\n\nvar List = /*@__PURE__*/(function (IndexedCollection$$1) {\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedCollection$$1(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function (list) {\n list.setSize(size);\n iter.forEach(function (v, i) { return list.set(i, v); });\n });\n }\n\n if ( IndexedCollection$$1 ) List.__proto__ = IndexedCollection$$1;\n List.prototype = Object.create( IndexedCollection$$1 && IndexedCollection$$1.prototype );\n List.prototype.constructor = List;\n\n List.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function toString () {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function get (index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function set (index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function remove (index) {\n return !this.has(index)\n ? this\n : index === 0\n ? this.shift()\n : index === this.size - 1\n ? this.pop()\n : this.splice(index, 1);\n };\n\n List.prototype.insert = function insert (index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function push (/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function (list) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function pop () {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function unshift (/*...values*/) {\n var values = arguments;\n return this.withMutations(function (list) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function shift () {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.concat = function concat (/*...collections*/) {\n var arguments$1 = arguments;\n\n var seqs = [];\n for (var i = 0; i < arguments.length; i++) {\n var argument = arguments$1[i];\n var seq = IndexedCollection$$1(\n typeof argument !== 'string' && hasIterator(argument)\n ? argument\n : [argument]\n );\n if (seq.size !== 0) {\n seqs.push(seq);\n }\n }\n if (seqs.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && seqs.length === 1) {\n return this.constructor(seqs[0]);\n }\n return this.withMutations(function (list) {\n seqs.forEach(function (seq) { return seq.forEach(function (value) { return list.push(value); }); });\n });\n };\n\n List.prototype.setSize = function setSize (size) {\n return setListBounds(this, 0, size);\n };\n\n List.prototype.map = function map (mapper, context) {\n var this$1 = this;\n\n return this.withMutations(function (list) {\n for (var i = 0; i < this$1.size; i++) {\n list.set(i, mapper.call(context, list.get(i), i, list));\n }\n });\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function slice (begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function __iterator (type, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n return new Iterator(function () {\n var value = values();\n return value === DONE\n ? iteratorDone()\n : iteratorValue(type, reverse ? --index : index++, value);\n });\n };\n\n List.prototype.__iterate = function __iterate (fn, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, reverse ? --index : index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyList();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeList(\n this._origin,\n this._capacity,\n this._level,\n this._root,\n this._tail,\n ownerID,\n this.__hash\n );\n };\n\n return List;\n}(IndexedCollection));\n\nList.isList = isList;\n\nvar ListPrototype = List.prototype;\nListPrototype[IS_LIST_SYMBOL] = true;\nListPrototype[DELETE] = ListPrototype.remove;\nListPrototype.merge = ListPrototype.concat;\nListPrototype.setIn = setIn$1;\nListPrototype.deleteIn = ListPrototype.removeIn = deleteIn;\nListPrototype.update = update$1;\nListPrototype.updateIn = updateIn$1;\nListPrototype.mergeIn = mergeIn;\nListPrototype.mergeDeepIn = mergeDeepIn;\nListPrototype.withMutations = withMutations;\nListPrototype.wasAltered = wasAltered;\nListPrototype.asImmutable = asImmutable;\nListPrototype['@@transducer/init'] = ListPrototype.asMutable = asMutable;\nListPrototype['@@transducer/step'] = function(result, arr) {\n return result.push(arr);\n};\nListPrototype['@@transducer/result'] = function(obj) {\n return obj.asImmutable();\n};\n\nvar VNode = function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n};\n\n// TODO: seems like these methods are very similar\n\nVNode.prototype.removeBefore = function removeBefore (ownerID, level, index) {\n if (index === level ? 1 << level : this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild =\n oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n};\n\nVNode.prototype.removeAfter = function removeAfter (ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild =\n oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n};\n\nvar DONE = {};\n\nfunction iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0\n ? iterateLeaf(node, offset)\n : iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n while (true) {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx],\n level - SHIFT,\n offset + (idx << level)\n );\n }\n };\n }\n}\n\nfunction makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n}\n\nvar EMPTY_LIST;\nfunction emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n}\n\nfunction updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function (list) {\n index < 0\n ? setListBounds(list, index).set(0, value)\n : setListBounds(list, 0, index + 1).set(index, value);\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef();\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(\n newRoot,\n list.__ownerID,\n list._level,\n index,\n value,\n didAlter\n );\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n}\n\nfunction updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(\n lowerNode,\n ownerID,\n level - SHIFT,\n index,\n value,\n didAlter\n );\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n if (didAlter) {\n SetRef(didAlter);\n }\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n}\n\nfunction editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n}\n\nfunction listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n}\n\nfunction setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin |= 0;\n }\n if (end !== undefined) {\n end |= 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity =\n end === undefined\n ? oldCapacity\n : end < 0\n ? oldCapacity + end\n : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [undefined, newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail =\n newTailOffset < oldTailOffset\n ? listNodeFor(list, newCapacity - 1)\n : newTailOffset > oldTailOffset\n ? new VNode([], owner)\n : oldTail;\n\n // Merge Tail into tree.\n if (\n oldTail &&\n newTailOffset > oldTailOffset &&\n newOrigin < oldCapacity &&\n oldTail.array.length\n ) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if ((beginIndex !== newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(\n owner,\n newLevel,\n newTailOffset - offsetShift\n );\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n}\n\nfunction getTailOffset(size) {\n return size < SIZE ? 0 : ((size - 1) >>> SHIFT) << SHIFT;\n}\n\nvar OrderedMap = /*@__PURE__*/(function (Map$$1) {\n function OrderedMap(value) {\n return value === null || value === undefined\n ? emptyOrderedMap()\n : isOrderedMap(value)\n ? value\n : emptyOrderedMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( Map$$1 ) OrderedMap.__proto__ = Map$$1;\n OrderedMap.prototype = Object.create( Map$$1 && Map$$1.prototype );\n OrderedMap.prototype.constructor = OrderedMap;\n\n OrderedMap.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function toString () {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function get (k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function set (k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function remove (k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function wasAltered () {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._list.__iterate(\n function (entry) { return entry && fn(entry[1], entry[0], this$1); },\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function __iterator (type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return emptyOrderedMap();\n }\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n return OrderedMap;\n}(Map));\n\nOrderedMap.isOrderedMap = isOrderedMap;\n\nOrderedMap.prototype[IS_ORDERED_SYMBOL] = true;\nOrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\nfunction makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n}\n\nvar EMPTY_ORDERED_MAP;\nfunction emptyOrderedMap() {\n return (\n EMPTY_ORDERED_MAP ||\n (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()))\n );\n}\n\nfunction updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) {\n // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function (entry, idx) { return entry !== undefined && i !== idx; });\n newMap = newList\n .toKeyedSeq()\n .map(function (entry) { return entry[0]; })\n .flip()\n .toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n}\n\nvar IS_STACK_SYMBOL = '@@__IMMUTABLE_STACK__@@';\n\nfunction isStack(maybeStack) {\n return Boolean(maybeStack && maybeStack[IS_STACK_SYMBOL]);\n}\n\nvar Stack = /*@__PURE__*/(function (IndexedCollection$$1) {\n function Stack(value) {\n return value === null || value === undefined\n ? emptyStack()\n : isStack(value)\n ? value\n : emptyStack().pushAll(value);\n }\n\n if ( IndexedCollection$$1 ) Stack.__proto__ = IndexedCollection$$1;\n Stack.prototype = Object.create( IndexedCollection$$1 && IndexedCollection$$1.prototype );\n Stack.prototype.constructor = Stack;\n\n Stack.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function toString () {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function get (index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function peek () {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function push (/*...values*/) {\n var arguments$1 = arguments;\n\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments$1[ii],\n next: head,\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function pushAll (iter) {\n iter = IndexedCollection$$1(iter);\n if (iter.size === 0) {\n return this;\n }\n if (this.size === 0 && isStack(iter)) {\n return iter;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.__iterate(function (value) {\n newSize++;\n head = {\n value: value,\n next: head,\n };\n }, /* reverse */ true);\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function pop () {\n return this.slice(1);\n };\n\n Stack.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection$$1.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyStack();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterate(\n function (v, k) { return fn(v, k, this$1); },\n reverse\n );\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function __iterator (type, reverse) {\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterator(type, reverse);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function () {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n return Stack;\n}(IndexedCollection));\n\nStack.isStack = isStack;\n\nvar StackPrototype = Stack.prototype;\nStackPrototype[IS_STACK_SYMBOL] = true;\nStackPrototype.shift = StackPrototype.pop;\nStackPrototype.unshift = StackPrototype.push;\nStackPrototype.unshiftAll = StackPrototype.pushAll;\nStackPrototype.withMutations = withMutations;\nStackPrototype.wasAltered = wasAltered;\nStackPrototype.asImmutable = asImmutable;\nStackPrototype['@@transducer/init'] = StackPrototype.asMutable = asMutable;\nStackPrototype['@@transducer/step'] = function(result, arr) {\n return result.unshift(arr);\n};\nStackPrototype['@@transducer/result'] = function(obj) {\n return obj.asImmutable();\n};\n\nfunction makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_STACK;\nfunction emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n}\n\nvar IS_SET_SYMBOL = '@@__IMMUTABLE_SET__@@';\n\nfunction isSet(maybeSet) {\n return Boolean(maybeSet && maybeSet[IS_SET_SYMBOL]);\n}\n\nfunction isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n}\n\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isCollection(b) ||\n (a.size !== undefined && b.size !== undefined && a.size !== b.size) ||\n (a.__hash !== undefined &&\n b.__hash !== undefined &&\n a.__hash !== b.__hash) ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return (\n b.every(function (v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done\n );\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function (v, k) {\n if (\n notAssociative\n ? !a.has(v)\n : flipped\n ? !is(v, a.get(k, NOT_SET))\n : !is(a.get(k, NOT_SET), v)\n ) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n}\n\n/**\n * Contributes additional methods to a constructor\n */\nfunction mixin(ctor, methods) {\n var keyCopier = function (key) {\n ctor.prototype[key] = methods[key];\n };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n}\n\nfunction toJS(value) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n if (!isCollection(value)) {\n if (!isDataStructure(value)) {\n return value;\n }\n value = Seq(value);\n }\n if (isKeyed(value)) {\n var result$1 = {};\n value.__iterate(function (v, k) {\n result$1[k] = toJS(v);\n });\n return result$1;\n }\n var result = [];\n value.__iterate(function (v) {\n result.push(toJS(v));\n });\n return result;\n}\n\nvar Set = /*@__PURE__*/(function (SetCollection$$1) {\n function Set(value) {\n return value === null || value === undefined\n ? emptySet()\n : isSet(value) && !isOrdered(value)\n ? value\n : emptySet().withMutations(function (set) {\n var iter = SetCollection$$1(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( SetCollection$$1 ) Set.__proto__ = SetCollection$$1;\n Set.prototype = Object.create( SetCollection$$1 && SetCollection$$1.prototype );\n Set.prototype.constructor = Set;\n\n Set.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n Set.intersect = function intersect (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.intersect.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.union = function union (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.union.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.prototype.toString = function toString () {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function has (value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function add (value) {\n return updateSet(this, this._map.set(value, value));\n };\n\n Set.prototype.remove = function remove (value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function clear () {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.map = function map (mapper, context) {\n var this$1 = this;\n\n var removes = [];\n var adds = [];\n this.forEach(function (value) {\n var mapped = mapper.call(context, value, value, this$1);\n if (mapped !== value) {\n removes.push(value);\n adds.push(mapped);\n }\n });\n return this.withMutations(function (set) {\n removes.forEach(function (value) { return set.remove(value); });\n adds.forEach(function (value) { return set.add(value); });\n });\n };\n\n Set.prototype.union = function union () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n iters = iters.filter(function (x) { return x.size !== 0; });\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function (set) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetCollection$$1(iters[ii]).forEach(function (value) { return set.add(value); });\n }\n });\n };\n\n Set.prototype.intersect = function intersect () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection$$1(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (!iters.every(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.subtract = function subtract () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection$$1(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (iters.some(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function wasAltered () {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._map.__iterate(function (k) { return fn(k, k, this$1); }, reverse);\n };\n\n Set.prototype.__iterator = function __iterator (type, reverse) {\n return this._map.__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return this.__empty();\n }\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n return Set;\n}(SetCollection));\n\nSet.isSet = isSet;\n\nvar SetPrototype = Set.prototype;\nSetPrototype[IS_SET_SYMBOL] = true;\nSetPrototype[DELETE] = SetPrototype.remove;\nSetPrototype.merge = SetPrototype.concat = SetPrototype.union;\nSetPrototype.withMutations = withMutations;\nSetPrototype.asImmutable = asImmutable;\nSetPrototype['@@transducer/init'] = SetPrototype.asMutable = asMutable;\nSetPrototype['@@transducer/step'] = function(result, arr) {\n return result.add(arr);\n};\nSetPrototype['@@transducer/result'] = function(obj) {\n return obj.asImmutable();\n};\n\nSetPrototype.__empty = emptySet;\nSetPrototype.__make = makeSet;\n\nfunction updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map\n ? set\n : newMap.size === 0\n ? set.__empty()\n : set.__make(newMap);\n}\n\nfunction makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_SET;\nfunction emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n}\n\n/**\n * Returns a lazy seq of nums from start (inclusive) to end\n * (exclusive), by step, where start defaults to 0, step to 1, and end to\n * infinity. When start is equal to end, returns empty list.\n */\nvar Range = /*@__PURE__*/(function (IndexedSeq$$1) {\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n if ( IndexedSeq$$1 ) Range.__proto__ = IndexedSeq$$1;\n Range.prototype = Object.create( IndexedSeq$$1 && IndexedSeq$$1.prototype );\n Range.prototype.constructor = Range;\n\n Range.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Range []';\n }\n return (\n 'Range [ ' +\n this._start +\n '...' +\n this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]'\n );\n };\n\n Range.prototype.get = function get (index, notSetValue) {\n return this.has(index)\n ? this._start + wrapIndex(this, index) * this._step\n : notSetValue;\n };\n\n Range.prototype.includes = function includes (searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return (\n possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex)\n );\n };\n\n Range.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(\n this.get(begin, this._end),\n this.get(end, this._end),\n this._step\n );\n };\n\n Range.prototype.indexOf = function indexOf (searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index;\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n while (i !== size) {\n if (fn(value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n value += reverse ? -step : step;\n }\n return i;\n };\n\n Range.prototype.__iterator = function __iterator (type, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var v = value;\n value += reverse ? -step : step;\n return iteratorValue(type, reverse ? size - ++i : i++, v);\n });\n };\n\n Range.prototype.equals = function equals (other) {\n return other instanceof Range\n ? this._start === other._start &&\n this._end === other._end &&\n this._step === other._step\n : deepEqual(this, other);\n };\n\n return Range;\n}(IndexedSeq));\n\nvar EMPTY_RANGE;\n\nfunction getIn(collection, searchKeyPath, notSetValue) {\n var keyPath = coerceKeyPath(searchKeyPath);\n var i = 0;\n while (i !== keyPath.length) {\n collection = get(collection, keyPath[i++], NOT_SET);\n if (collection === NOT_SET) {\n return notSetValue;\n }\n }\n return collection;\n}\n\nfunction getIn$1(searchKeyPath, notSetValue) {\n return getIn(this, searchKeyPath, notSetValue);\n}\n\nfunction hasIn(collection, keyPath) {\n return getIn(collection, keyPath, NOT_SET) !== NOT_SET;\n}\n\nfunction hasIn$1(searchKeyPath) {\n return hasIn(this, searchKeyPath);\n}\n\nfunction toObject() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function (v, k) {\n object[k] = v;\n });\n return object;\n}\n\n// Note: all of these methods are deprecated.\nCollection.isIterable = isCollection;\nCollection.isKeyed = isKeyed;\nCollection.isIndexed = isIndexed;\nCollection.isAssociative = isAssociative;\nCollection.isOrdered = isOrdered;\n\nCollection.Iterator = Iterator;\n\nmixin(Collection, {\n // ### Conversion to other types\n\n toArray: function toArray() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n var useTuples = isKeyed(this);\n var i = 0;\n this.__iterate(function (v, k) {\n // Keyed collections produce an array of tuples.\n array[i++] = useTuples ? [k, v] : v;\n });\n return array;\n },\n\n toIndexedSeq: function toIndexedSeq() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function toJS$1() {\n return toJS(this);\n },\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function toMap() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: toObject,\n\n toOrderedMap: function toOrderedMap() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function toOrderedSet() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function toSet() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function toSetSeq() {\n return new ToSetSequence(this);\n },\n\n toSeq: function toSeq() {\n return isIndexed(this)\n ? this.toIndexedSeq()\n : isKeyed(this)\n ? this.toKeyedSeq()\n : this.toSetSeq();\n },\n\n toStack: function toStack() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function toList() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n // ### Common JavaScript methods and properties\n\n toString: function toString() {\n return '[Collection]';\n },\n\n __toString: function __toString(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return (\n head +\n ' ' +\n this.toSeq()\n .map(this.__toStringMapper)\n .join(', ') +\n ' ' +\n tail\n );\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function concat() {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return reify(this, concatFactory(this, values));\n },\n\n includes: function includes(searchValue) {\n return this.some(function (value) { return is(value, searchValue); });\n },\n\n entries: function entries() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function every(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function (v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function find(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function forEach(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function join(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function (v) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function keys() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function map(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function reduce$1(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n false\n );\n },\n\n reduceRight: function reduceRight(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n true\n );\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function some(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function sort(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function values() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n // ### More sequential methods\n\n butLast: function butLast() {\n return this.slice(0, -1);\n },\n\n isEmpty: function isEmpty() {\n return this.size !== undefined ? this.size === 0 : !this.some(function () { return true; });\n },\n\n count: function count(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function countBy(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function equals(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function entrySeq() {\n var collection = this;\n if (collection._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(collection._cache);\n }\n var entriesSequence = collection\n .toSeq()\n .map(entryMapper)\n .toIndexedSeq();\n entriesSequence.fromEntrySeq = function () { return collection.toSeq(); };\n return entriesSequence;\n },\n\n filterNot: function filterNot(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function findEntry(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function findKey(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function findLast(predicate, context, notSetValue) {\n return this.toKeyedSeq()\n .reverse()\n .find(predicate, context, notSetValue);\n },\n\n findLastEntry: function findLastEntry(predicate, context, notSetValue) {\n return this.toKeyedSeq()\n .reverse()\n .findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function findLastKey(predicate, context) {\n return this.toKeyedSeq()\n .reverse()\n .findKey(predicate, context);\n },\n\n first: function first(notSetValue) {\n return this.find(returnTrue, null, notSetValue);\n },\n\n flatMap: function flatMap(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function fromEntrySeq() {\n return new FromEntriesSequence(this);\n },\n\n get: function get(searchKey, notSetValue) {\n return this.find(function (_, key) { return is(key, searchKey); }, undefined, notSetValue);\n },\n\n getIn: getIn$1,\n\n groupBy: function groupBy(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function has(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: hasIn$1,\n\n isSubset: function isSubset(iter) {\n iter = typeof iter.includes === 'function' ? iter : Collection(iter);\n return this.every(function (value) { return iter.includes(value); });\n },\n\n isSuperset: function isSuperset(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Collection(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function keyOf(searchValue) {\n return this.findKey(function (value) { return is(value, searchValue); });\n },\n\n keySeq: function keySeq() {\n return this.toSeq()\n .map(keyMapper)\n .toIndexedSeq();\n },\n\n last: function last(notSetValue) {\n return this.toSeq()\n .reverse()\n .first(notSetValue);\n },\n\n lastKeyOf: function lastKeyOf(searchValue) {\n return this.toKeyedSeq()\n .reverse()\n .keyOf(searchValue);\n },\n\n max: function max(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function maxBy(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function min(comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator\n );\n },\n\n minBy: function minBy(mapper, comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator,\n mapper\n );\n },\n\n rest: function rest() {\n return this.slice(1);\n },\n\n skip: function skip(amount) {\n return amount === 0 ? this : this.slice(Math.max(0, amount));\n },\n\n skipLast: function skipLast(amount) {\n return amount === 0 ? this : this.slice(0, -Math.max(0, amount));\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function skipUntil(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function sortBy(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function take(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function takeLast(amount) {\n return this.slice(-Math.max(0, amount));\n },\n\n takeWhile: function takeWhile(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function takeUntil(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n update: function update(fn) {\n return fn(this);\n },\n\n valueSeq: function valueSeq() {\n return this.toIndexedSeq();\n },\n\n // ### Hashable Object\n\n hashCode: function hashCode() {\n return this.__hash || (this.__hash = hashCollection(this));\n },\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n});\n\nvar CollectionPrototype = Collection.prototype;\nCollectionPrototype[IS_COLLECTION_SYMBOL] = true;\nCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.values;\nCollectionPrototype.toJSON = CollectionPrototype.toArray;\nCollectionPrototype.__toStringMapper = quoteString;\nCollectionPrototype.inspect = CollectionPrototype.toSource = function() {\n return this.toString();\n};\nCollectionPrototype.chain = CollectionPrototype.flatMap;\nCollectionPrototype.contains = CollectionPrototype.includes;\n\nmixin(KeyedCollection, {\n // ### More sequential methods\n\n flip: function flip() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function mapEntries(mapper, context) {\n var this$1 = this;\n\n var iterations = 0;\n return reify(\n this,\n this.toSeq()\n .map(function (v, k) { return mapper.call(context, [k, v], iterations++, this$1); })\n .fromEntrySeq()\n );\n },\n\n mapKeys: function mapKeys(mapper, context) {\n var this$1 = this;\n\n return reify(\n this,\n this.toSeq()\n .flip()\n .map(function (k, v) { return mapper.call(context, k, v, this$1); })\n .flip()\n );\n },\n});\n\nvar KeyedCollectionPrototype = KeyedCollection.prototype;\nKeyedCollectionPrototype[IS_KEYED_SYMBOL] = true;\nKeyedCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.entries;\nKeyedCollectionPrototype.toJSON = toObject;\nKeyedCollectionPrototype.__toStringMapper = function (v, k) { return quoteString(k) + ': ' + quoteString(v); };\n\nmixin(IndexedCollection, {\n // ### Conversion to other types\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, false);\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function findIndex(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function indexOf(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function lastIndexOf(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function splice(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum || 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1\n ? spliced\n : spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n // ### More collection methods\n\n findLastIndex: function findLastIndex(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function first(notSetValue) {\n return this.get(0, notSetValue);\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function get(index, notSetValue) {\n index = wrapIndex(this, index);\n return index < 0 ||\n (this.size === Infinity || (this.size !== undefined && index > this.size))\n ? notSetValue\n : this.find(function (_, key) { return key === index; }, undefined, notSetValue);\n },\n\n has: function has(index) {\n index = wrapIndex(this, index);\n return (\n index >= 0 &&\n (this.size !== undefined\n ? this.size === Infinity || index < this.size\n : this.indexOf(index) !== -1)\n );\n },\n\n interpose: function interpose(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function interleave(/*...collections*/) {\n var collections = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, collections);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * collections.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function keySeq() {\n return Range(0, this.size);\n },\n\n last: function last(notSetValue) {\n return this.get(-1, notSetValue);\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function zip(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections));\n },\n\n zipAll: function zipAll(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections, true));\n },\n\n zipWith: function zipWith(zipper /*, ...collections */) {\n var collections = arrCopy(arguments);\n collections[0] = this;\n return reify(this, zipWithFactory(this, zipper, collections));\n },\n});\n\nvar IndexedCollectionPrototype = IndexedCollection.prototype;\nIndexedCollectionPrototype[IS_INDEXED_SYMBOL] = true;\nIndexedCollectionPrototype[IS_ORDERED_SYMBOL] = true;\n\nmixin(SetCollection, {\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function get(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function includes(value) {\n return this.has(value);\n },\n\n // ### More sequential methods\n\n keySeq: function keySeq() {\n return this.valueSeq();\n },\n});\n\nSetCollection.prototype.has = CollectionPrototype.includes;\nSetCollection.prototype.contains = SetCollection.prototype.includes;\n\n// Mixin subclasses\n\nmixin(KeyedSeq, KeyedCollection.prototype);\nmixin(IndexedSeq, IndexedCollection.prototype);\nmixin(SetSeq, SetCollection.prototype);\n\n// #pragma Helper functions\n\nfunction reduce(collection, reducer, reduction, context, useFirst, reverse) {\n assertNotInfinite(collection.size);\n collection.__iterate(function (v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n }, reverse);\n return reduction;\n}\n\nfunction keyMapper(v, k) {\n return k;\n}\n\nfunction entryMapper(v, k) {\n return [k, v];\n}\n\nfunction not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n\nfunction neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n };\n}\n\nfunction defaultZipper() {\n return arrCopy(arguments);\n}\n\nfunction defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n}\n\nfunction hashCollection(collection) {\n if (collection.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(collection);\n var keyed = isKeyed(collection);\n var h = ordered ? 1 : 0;\n var size = collection.__iterate(\n keyed\n ? ordered\n ? function (v, k) {\n h = (31 * h + hashMerge(hash(v), hash(k))) | 0;\n }\n : function (v, k) {\n h = (h + hashMerge(hash(v), hash(k))) | 0;\n }\n : ordered\n ? function (v) {\n h = (31 * h + hash(v)) | 0;\n }\n : function (v) {\n h = (h + hash(v)) | 0;\n }\n );\n return murmurHashOfSize(size, h);\n}\n\nfunction murmurHashOfSize(size, h) {\n h = imul(h, 0xcc9e2d51);\n h = imul((h << 15) | (h >>> -15), 0x1b873593);\n h = imul((h << 13) | (h >>> -13), 5);\n h = ((h + 0xe6546b64) | 0) ^ size;\n h = imul(h ^ (h >>> 16), 0x85ebca6b);\n h = imul(h ^ (h >>> 13), 0xc2b2ae35);\n h = smi(h ^ (h >>> 16));\n return h;\n}\n\nfunction hashMerge(a, b) {\n return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; // int\n}\n\nvar OrderedSet = /*@__PURE__*/(function (Set$$1) {\n function OrderedSet(value) {\n return value === null || value === undefined\n ? emptyOrderedSet()\n : isOrderedSet(value)\n ? value\n : emptyOrderedSet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( Set$$1 ) OrderedSet.__proto__ = Set$$1;\n OrderedSet.prototype = Object.create( Set$$1 && Set$$1.prototype );\n OrderedSet.prototype.constructor = OrderedSet;\n\n OrderedSet.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function toString () {\n return this.__toString('OrderedSet {', '}');\n };\n\n return OrderedSet;\n}(Set));\n\nOrderedSet.isOrderedSet = isOrderedSet;\n\nvar OrderedSetPrototype = OrderedSet.prototype;\nOrderedSetPrototype[IS_ORDERED_SYMBOL] = true;\nOrderedSetPrototype.zip = IndexedCollectionPrototype.zip;\nOrderedSetPrototype.zipWith = IndexedCollectionPrototype.zipWith;\n\nOrderedSetPrototype.__empty = emptyOrderedSet;\nOrderedSetPrototype.__make = makeOrderedSet;\n\nfunction makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_ORDERED_SET;\nfunction emptyOrderedSet() {\n return (\n EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()))\n );\n}\n\nvar Record = function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n var this$1 = this;\n\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n var indices = (RecordTypePrototype._indices = {});\n // Deprecated: left to attempt not to break any external code which\n // relies on a ._name property existing on record instances.\n // Use Record.getDescriptiveName() instead\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n for (var i = 0; i < keys.length; i++) {\n var propName = keys[i];\n indices[propName] = i;\n if (RecordTypePrototype[propName]) {\n /* eslint-disable no-console */\n typeof console === 'object' &&\n console.warn &&\n console.warn(\n 'Cannot define ' +\n recordName(this) +\n ' with property \"' +\n propName +\n '\" since that property name is part of the Record API.'\n );\n /* eslint-enable no-console */\n } else {\n setProp(RecordTypePrototype, propName);\n }\n }\n }\n this.__ownerID = undefined;\n this._values = List().withMutations(function (l) {\n l.setSize(this$1._keys.length);\n KeyedCollection(values).forEach(function (v, k) {\n l.set(this$1._indices[k], v === this$1._defaultValues[k] ? undefined : v);\n });\n });\n };\n\n var RecordTypePrototype = (RecordType.prototype = Object.create(\n RecordPrototype\n ));\n RecordTypePrototype.constructor = RecordType;\n\n if (name) {\n RecordType.displayName = name;\n }\n\n return RecordType;\n};\n\nRecord.prototype.toString = function toString () {\n var str = recordName(this) + ' { ';\n var keys = this._keys;\n var k;\n for (var i = 0, l = keys.length; i !== l; i++) {\n k = keys[i];\n str += (i ? ', ' : '') + k + ': ' + quoteString(this.get(k));\n }\n return str + ' }';\n};\n\nRecord.prototype.equals = function equals (other) {\n return (\n this === other ||\n (other &&\n this._keys === other._keys &&\n recordSeq(this).equals(recordSeq(other)))\n );\n};\n\nRecord.prototype.hashCode = function hashCode () {\n return recordSeq(this).hashCode();\n};\n\n// @pragma Access\n\nRecord.prototype.has = function has (k) {\n return this._indices.hasOwnProperty(k);\n};\n\nRecord.prototype.get = function get (k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var index = this._indices[k];\n var value = this._values.get(index);\n return value === undefined ? this._defaultValues[k] : value;\n};\n\n// @pragma Modification\n\nRecord.prototype.set = function set (k, v) {\n if (this.has(k)) {\n var newValues = this._values.set(\n this._indices[k],\n v === this._defaultValues[k] ? undefined : v\n );\n if (newValues !== this._values && !this.__ownerID) {\n return makeRecord(this, newValues);\n }\n }\n return this;\n};\n\nRecord.prototype.remove = function remove (k) {\n return this.set(k);\n};\n\nRecord.prototype.clear = function clear () {\n var newValues = this._values.clear().setSize(this._keys.length);\n return this.__ownerID ? this : makeRecord(this, newValues);\n};\n\nRecord.prototype.wasAltered = function wasAltered () {\n return this._values.wasAltered();\n};\n\nRecord.prototype.toSeq = function toSeq () {\n return recordSeq(this);\n};\n\nRecord.prototype.toJS = function toJS$1 () {\n return toJS(this);\n};\n\nRecord.prototype.entries = function entries () {\n return this.__iterator(ITERATE_ENTRIES);\n};\n\nRecord.prototype.__iterator = function __iterator (type, reverse) {\n return recordSeq(this).__iterator(type, reverse);\n};\n\nRecord.prototype.__iterate = function __iterate (fn, reverse) {\n return recordSeq(this).__iterate(fn, reverse);\n};\n\nRecord.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newValues = this._values.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._values = newValues;\n return this;\n }\n return makeRecord(this, newValues, ownerID);\n};\n\nRecord.isRecord = isRecord;\nRecord.getDescriptiveName = recordName;\nvar RecordPrototype = Record.prototype;\nRecordPrototype[IS_RECORD_SYMBOL] = true;\nRecordPrototype[DELETE] = RecordPrototype.remove;\nRecordPrototype.deleteIn = RecordPrototype.removeIn = deleteIn;\nRecordPrototype.getIn = getIn$1;\nRecordPrototype.hasIn = CollectionPrototype.hasIn;\nRecordPrototype.merge = merge;\nRecordPrototype.mergeWith = mergeWith;\nRecordPrototype.mergeIn = mergeIn;\nRecordPrototype.mergeDeep = mergeDeep$1;\nRecordPrototype.mergeDeepWith = mergeDeepWith$1;\nRecordPrototype.mergeDeepIn = mergeDeepIn;\nRecordPrototype.setIn = setIn$1;\nRecordPrototype.update = update$1;\nRecordPrototype.updateIn = updateIn$1;\nRecordPrototype.withMutations = withMutations;\nRecordPrototype.asMutable = asMutable;\nRecordPrototype.asImmutable = asImmutable;\nRecordPrototype[ITERATOR_SYMBOL] = RecordPrototype.entries;\nRecordPrototype.toJSON = RecordPrototype.toObject =\n CollectionPrototype.toObject;\nRecordPrototype.inspect = RecordPrototype.toSource = function() {\n return this.toString();\n};\n\nfunction makeRecord(likeRecord, values, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._values = values;\n record.__ownerID = ownerID;\n return record;\n}\n\nfunction recordName(record) {\n return record.constructor.displayName || record.constructor.name || 'Record';\n}\n\nfunction recordSeq(record) {\n return keyedSeqFromValue(record._keys.map(function (k) { return [k, record.get(k)]; }));\n}\n\nfunction setProp(prototype, name) {\n try {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n },\n });\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n}\n\n/**\n * Returns a lazy Seq of `value` repeated `times` times. When `times` is\n * undefined, returns an infinite sequence of `value`.\n */\nvar Repeat = /*@__PURE__*/(function (IndexedSeq$$1) {\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n if ( IndexedSeq$$1 ) Repeat.__proto__ = IndexedSeq$$1;\n Repeat.prototype = Object.create( IndexedSeq$$1 && IndexedSeq$$1.prototype );\n Repeat.prototype.constructor = Repeat;\n\n Repeat.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function includes (searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function slice (begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size)\n ? this\n : new Repeat(\n this._value,\n resolveEnd(end, size) - resolveBegin(begin, size)\n );\n };\n\n Repeat.prototype.reverse = function reverse () {\n return this;\n };\n\n Repeat.prototype.indexOf = function indexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var i = 0;\n while (i !== size) {\n if (fn(this._value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n }\n return i;\n };\n\n Repeat.prototype.__iterator = function __iterator (type, reverse) {\n var this$1 = this;\n\n var size = this.size;\n var i = 0;\n return new Iterator(\n function () { return i === size\n ? iteratorDone()\n : iteratorValue(type, reverse ? size - ++i : i++, this$1._value); }\n );\n };\n\n Repeat.prototype.equals = function equals (other) {\n return other instanceof Repeat\n ? is(this._value, other._value)\n : deepEqual(other);\n };\n\n return Repeat;\n}(IndexedSeq));\n\nvar EMPTY_REPEAT;\n\nfunction fromJS(value, converter) {\n return fromJSWith(\n [],\n converter || defaultConverter,\n value,\n '',\n converter && converter.length > 2 ? [] : undefined,\n { '': value }\n );\n}\n\nfunction fromJSWith(stack, converter, value, key, keyPath, parentValue) {\n var toSeq = Array.isArray(value)\n ? IndexedSeq\n : isPlainObj(value)\n ? KeyedSeq\n : null;\n if (toSeq) {\n if (~stack.indexOf(value)) {\n throw new TypeError('Cannot convert circular structure to Immutable');\n }\n stack.push(value);\n keyPath && key !== '' && keyPath.push(key);\n var converted = converter.call(\n parentValue,\n key,\n toSeq(value).map(function (v, k) { return fromJSWith(stack, converter, v, k, keyPath, value); }\n ),\n keyPath && keyPath.slice()\n );\n stack.pop();\n keyPath && keyPath.pop();\n return converted;\n }\n return value;\n}\n\nfunction defaultConverter(k, v) {\n return isKeyed(v) ? v.toMap() : v.toList();\n}\n\nvar version = \"4.0.0-rc.11\";\n\nvar Immutable = {\n version: version,\n\n Collection: Collection,\n // Note: Iterable is deprecated\n Iterable: Collection,\n\n Seq: Seq,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS,\n hash: hash,\n\n isImmutable: isImmutable,\n isCollection: isCollection,\n isKeyed: isKeyed,\n isIndexed: isIndexed,\n isAssociative: isAssociative,\n isOrdered: isOrdered,\n isValueObject: isValueObject,\n isSeq: isSeq,\n isList: isList,\n isMap: isMap,\n isOrderedMap: isOrderedMap,\n isStack: isStack,\n isSet: isSet,\n isOrderedSet: isOrderedSet,\n isRecord: isRecord,\n\n get: get,\n getIn: getIn,\n has: has,\n hasIn: hasIn,\n merge: merge$1,\n mergeDeep: mergeDeep,\n mergeWith: mergeWith$1,\n mergeDeepWith: mergeDeepWith,\n remove: remove,\n removeIn: removeIn,\n set: set,\n setIn: setIn,\n update: update,\n updateIn: updateIn,\n};\n\n// Note: Iterable is deprecated\nvar Iterable = Collection;\n\nexport default Immutable;\nexport { version, Collection, Iterable, Seq, Map, OrderedMap, List, Stack, Set, OrderedSet, Record, Range, Repeat, is, fromJS, hash, isImmutable, isCollection, isKeyed, isIndexed, isAssociative, isOrdered, isValueObject, get, getIn, has, hasIn, merge$1 as merge, mergeDeep, mergeWith$1 as mergeWith, mergeDeepWith, remove, removeIn, set, setIn, update, updateIn };\n","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport var easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n}; // Follow https://material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\n\nexport var duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\n\nfunction formatMs(milliseconds) {\n return \"\".concat(Math.round(milliseconds), \"ms\");\n}\n/**\n * @param {string|Array} props\n * @param {object} param\n * @param {string} param.prop\n * @param {number} param.duration\n * @param {string} param.easing\n * @param {number} param.delay\n */\n\n\nexport default {\n easing: easing,\n duration: duration,\n create: function create() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['all'];\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var _options$duration = options.duration,\n durationOption = _options$duration === void 0 ? duration.standard : _options$duration,\n _options$easing = options.easing,\n easingOption = _options$easing === void 0 ? easing.easeInOut : _options$easing,\n _options$delay = options.delay,\n delay = _options$delay === void 0 ? 0 : _options$delay,\n other = _objectWithoutProperties(options, [\"duration\", \"easing\", \"delay\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n var isString = function isString(value) {\n return typeof value === 'string';\n };\n\n var isNumber = function isNumber(value) {\n return !isNaN(parseFloat(value));\n };\n\n if (!isString(props) && !Array.isArray(props)) {\n console.error('Material-UI: Argument \"props\" must be a string or Array.');\n }\n\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(\"Material-UI: Argument \\\"duration\\\" must be a number or a string but found \".concat(durationOption, \".\"));\n }\n\n if (!isString(easingOption)) {\n console.error('Material-UI: Argument \"easing\" must be a string.');\n }\n\n if (!isNumber(delay) && !isString(delay)) {\n console.error('Material-UI: Argument \"delay\" must be a number or a string.');\n }\n\n if (Object.keys(other).length !== 0) {\n console.error(\"Material-UI: Unrecognized argument(s) [\".concat(Object.keys(other).join(','), \"].\"));\n }\n }\n\n return (Array.isArray(props) ? props : [props]).map(function (animatedProp) {\n return \"\".concat(animatedProp, \" \").concat(typeof durationOption === 'string' ? durationOption : formatMs(durationOption), \" \").concat(easingOption, \" \").concat(typeof delay === 'string' ? delay : formatMs(delay));\n }).join(',');\n },\n getAutoHeightDuration: function getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n\n var constant = height / 36; // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n\n return Math.round((4 + 15 * Math.pow(constant, 0.25) + constant / 5) * 10);\n }\n};","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { EventService } from \"../eventService\";\nimport { _ } from \"../utils\";\nvar TouchListener = /** @class */ (function () {\n function TouchListener(eElement, preventMouseClick) {\n var _this = this;\n if (preventMouseClick === void 0) { preventMouseClick = false; }\n this.destroyFuncs = [];\n this.touching = false;\n this.eventService = new EventService();\n this.eElement = eElement;\n this.preventMouseClick = preventMouseClick;\n var startListener = this.onTouchStart.bind(this);\n var moveListener = this.onTouchMove.bind(this);\n var endListener = this.onTouchEnd.bind(this);\n this.eElement.addEventListener(\"touchstart\", startListener, { passive: true });\n this.eElement.addEventListener(\"touchmove\", moveListener, { passive: true });\n // we set passive=false, as we want to prevent default on this event\n this.eElement.addEventListener(\"touchend\", endListener, { passive: false });\n this.destroyFuncs.push(function () {\n _this.eElement.removeEventListener(\"touchstart\", startListener, { passive: true });\n _this.eElement.removeEventListener(\"touchmove\", moveListener, { passive: true });\n _this.eElement.removeEventListener(\"touchend\", endListener, { passive: false });\n });\n }\n TouchListener.prototype.getActiveTouch = function (touchList) {\n for (var i = 0; i < touchList.length; i++) {\n var matches = touchList[i].identifier === this.touchStart.identifier;\n if (matches) {\n return touchList[i];\n }\n }\n return null;\n };\n TouchListener.prototype.addEventListener = function (eventType, listener) {\n this.eventService.addEventListener(eventType, listener);\n };\n TouchListener.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n TouchListener.prototype.onTouchStart = function (touchEvent) {\n var _this = this;\n // only looking at one touch point at any time\n if (this.touching) {\n return;\n }\n this.touchStart = touchEvent.touches[0];\n this.touching = true;\n this.moved = false;\n var touchStartCopy = this.touchStart;\n window.setTimeout(function () {\n var touchesMatch = _this.touchStart === touchStartCopy;\n if (_this.touching && touchesMatch && !_this.moved) {\n _this.moved = true;\n var event_1 = {\n type: TouchListener.EVENT_LONG_TAP,\n touchStart: _this.touchStart,\n touchEvent: touchEvent\n };\n _this.eventService.dispatchEvent(event_1);\n }\n }, 500);\n };\n TouchListener.prototype.onTouchMove = function (touchEvent) {\n if (!this.touching) {\n return;\n }\n var touch = this.getActiveTouch(touchEvent.touches);\n if (!touch) {\n return;\n }\n var eventIsFarAway = !_.areEventsNear(touch, this.touchStart, 4);\n if (eventIsFarAway) {\n this.moved = true;\n }\n };\n TouchListener.prototype.onTouchEnd = function (touchEvent) {\n if (!this.touching) {\n return;\n }\n if (!this.moved) {\n var event_2 = {\n type: TouchListener.EVENT_TAP,\n touchStart: this.touchStart\n };\n this.eventService.dispatchEvent(event_2);\n this.checkForDoubleTap();\n }\n // stops the tap from also been processed as a mouse click\n if (this.preventMouseClick) {\n touchEvent.preventDefault();\n }\n this.touching = false;\n };\n TouchListener.prototype.checkForDoubleTap = function () {\n var now = new Date().getTime();\n if (this.lastTapTime && this.lastTapTime > 0) {\n // if previous tap, see if duration is short enough to be considered double tap\n var interval = now - this.lastTapTime;\n if (interval > TouchListener.DOUBLE_TAP_MILLIS) {\n // dispatch double tap event\n var event_3 = {\n type: TouchListener.EVENT_DOUBLE_TAP,\n touchStart: this.touchStart\n };\n this.eventService.dispatchEvent(event_3);\n // this stops a tripple tap ending up as two double taps\n this.lastTapTime = null;\n }\n else {\n this.lastTapTime = now;\n }\n }\n else {\n this.lastTapTime = now;\n }\n };\n TouchListener.prototype.destroy = function () {\n this.destroyFuncs.forEach(function (func) { return func(); });\n };\n TouchListener.EVENT_TAP = \"tap\";\n TouchListener.EVENT_DOUBLE_TAP = \"doubleTap\";\n TouchListener.EVENT_LONG_TAP = \"longTap\";\n TouchListener.DOUBLE_TAP_MILLIS = 500;\n return TouchListener;\n}());\nexport { TouchListener };\n","import * as React from 'react';\nvar useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n/**\n * https://github.com/facebook/react/issues/14099#issuecomment-440013892\n *\n * @param {function} fn\n */\n\nexport default function useEventCallback(fn) {\n var ref = React.useRef(fn);\n useEnhancedEffect(function () {\n ref.current = fn;\n });\n return React.useCallback(function () {\n return (0, ref.current).apply(void 0, arguments);\n }, []);\n}","export default function buildFormatLongFn(args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n return React.useContext(FormControlContext);\n}","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexport var isBrowser = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === 'object' && document.nodeType === 9;\n\nexport default isBrowser;\n","export var reflow = function reflow(node) {\n return node.scrollTop;\n};\nexport function getTransitionProps(props, options) {\n var timeout = props.timeout,\n _props$style = props.style,\n style = _props$style === void 0 ? {} : _props$style;\n return {\n duration: style.transitionDuration || typeof timeout === 'number' ? timeout : timeout[options.mode] || 0,\n delay: style.transitionDelay\n };\n}","import inspect from '../jsutils/inspect';\nexport var QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n InterfaceTypeDefinition: ['description', 'name', 'directives', 'fields'],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexport var BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nexport function visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n\n /* eslint-disable no-undef-init */\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n\n for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n clone[k] = node[k];\n }\n\n node = clone;\n }\n\n var editOffset = 0;\n\n for (var ii = 0; ii < edits.length; ii++) {\n var editKey = edits[ii][0];\n var editValue = edits[ii][1];\n\n if (inArray) {\n editKey -= editOffset;\n }\n\n if (inArray && editValue === null) {\n node.splice(editKey, 1);\n editOffset++;\n } else {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else {\n key = parent ? inArray ? index : keys[index] : undefined;\n node = parent ? parent[key] : newRoot;\n\n if (node === null || node === undefined) {\n continue;\n }\n\n if (parent) {\n path.push(key);\n }\n }\n\n var result = void 0;\n\n if (!Array.isArray(node)) {\n if (!isNode(node)) {\n throw new Error('Invalid AST Node: ' + inspect(node));\n }\n\n var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n\n if (visitFn) {\n result = visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n stack = {\n inArray: inArray,\n index: index,\n keys: keys,\n edits: edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : visitorKeys[node.kind] || [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n newRoot = edits[edits.length - 1][1];\n }\n\n return newRoot;\n}\n\nfunction isNode(maybeNode) {\n return Boolean(maybeNode && typeof maybeNode.kind === 'string');\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\n\nexport function visitInParallel(visitors) {\n var skipping = new Array(visitors.length);\n return {\n enter: function enter(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (!skipping[i]) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n }\n },\n leave: function leave(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (!skipping[i]) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n true);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n }\n };\n}\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\n\nexport function visitWithTypeInfo(typeInfo, visitor) {\n return {\n enter: function enter(node) {\n typeInfo.enter(node);\n var fn = getVisitFn(visitor, node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitor, arguments);\n\n if (result !== undefined) {\n typeInfo.leave(node);\n\n if (isNode(result)) {\n typeInfo.enter(result);\n }\n }\n\n return result;\n }\n },\n leave: function leave(node) {\n var fn = getVisitFn(visitor, node.kind,\n /* isLeaving */\n true);\n var result;\n\n if (fn) {\n result = fn.apply(visitor, arguments);\n }\n\n typeInfo.leave(node);\n return result;\n }\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n\n var specificKindVisitor = specificVisitor[kind];\n\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * var result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import Observable from 'zen-observable-ts';\n\nimport { GraphQLRequest, Operation } from './types';\nimport { ApolloLink } from './link';\n\nimport { getOperationName } from 'apollo-utilities';\nimport { invariant, InvariantError } from 'ts-invariant';\nexport { getOperationName };\n\nexport function validateOperation(operation: GraphQLRequest): GraphQLRequest {\n const OPERATION_FIELDS = [\n 'query',\n 'operationName',\n 'variables',\n 'extensions',\n 'context',\n ];\n for (let key of Object.keys(operation)) {\n if (OPERATION_FIELDS.indexOf(key) < 0) {\n throw new InvariantError(`illegal argument: ${key}`);\n }\n }\n\n return operation;\n}\n\nexport class LinkError extends Error {\n public link: ApolloLink;\n constructor(message?: string, link?: ApolloLink) {\n super(message);\n this.link = link;\n }\n}\n\nexport function isTerminating(link: ApolloLink): boolean {\n return link.request.length <= 1;\n}\n\nexport function toPromise(observable: Observable): Promise {\n let completed = false;\n return new Promise((resolve, reject) => {\n observable.subscribe({\n next: data => {\n if (completed) {\n invariant.warn(\n `Promise Wrapper does not support multiple results from Observable`,\n );\n } else {\n completed = true;\n resolve(data);\n }\n },\n error: reject,\n });\n });\n}\n\n// backwards compat\nexport const makePromise = toPromise;\n\nexport function fromPromise(promise: Promise): Observable {\n return new Observable(observer => {\n promise\n .then((value: T) => {\n observer.next(value);\n observer.complete();\n })\n .catch(observer.error.bind(observer));\n });\n}\n\nexport function fromError(errorValue: any): Observable {\n return new Observable(observer => {\n observer.error(errorValue);\n });\n}\n\nexport function transformOperation(operation: GraphQLRequest): GraphQLRequest {\n const transformedOperation: GraphQLRequest = {\n variables: operation.variables || {},\n extensions: operation.extensions || {},\n operationName: operation.operationName,\n query: operation.query,\n };\n\n // best guess at an operation name\n if (!transformedOperation.operationName) {\n transformedOperation.operationName =\n typeof transformedOperation.query !== 'string'\n ? getOperationName(transformedOperation.query)\n : '';\n }\n\n return transformedOperation as Operation;\n}\n\nexport function createOperation(\n starting: any,\n operation: GraphQLRequest,\n): Operation {\n let context = { ...starting };\n const setContext = next => {\n if (typeof next === 'function') {\n context = { ...context, ...next(context) };\n } else {\n context = { ...context, ...next };\n }\n };\n const getContext = () => ({ ...context });\n\n Object.defineProperty(operation, 'setContext', {\n enumerable: false,\n value: setContext,\n });\n\n Object.defineProperty(operation, 'getContext', {\n enumerable: false,\n value: getContext,\n });\n\n Object.defineProperty(operation, 'toKey', {\n enumerable: false,\n value: () => getKey(operation),\n });\n\n return operation as Operation;\n}\n\nexport function getKey(operation: GraphQLRequest) {\n // XXX We're assuming here that query and variables will be serialized in\n // the same order, which might not always be true.\n const { query, variables, operationName } = operation;\n return JSON.stringify([operationName, query, variables]);\n}\n","import Observable from 'zen-observable-ts';\nimport { invariant, InvariantError } from 'ts-invariant';\n\nimport {\n GraphQLRequest,\n NextLink,\n Operation,\n RequestHandler,\n FetchResult,\n} from './types';\n\nimport {\n validateOperation,\n isTerminating,\n LinkError,\n transformOperation,\n createOperation,\n} from './linkUtils';\n\nfunction passthrough(op, forward) {\n return forward ? forward(op) : Observable.of();\n}\n\nfunction toLink(handler: RequestHandler | ApolloLink) {\n return typeof handler === 'function' ? new ApolloLink(handler) : handler;\n}\n\nexport function empty(): ApolloLink {\n return new ApolloLink(() => Observable.of());\n}\n\nexport function from(links: ApolloLink[]): ApolloLink {\n if (links.length === 0) return empty();\n return links.map(toLink).reduce((x, y) => x.concat(y));\n}\n\nexport function split(\n test: (op: Operation) => boolean,\n left: ApolloLink | RequestHandler,\n right?: ApolloLink | RequestHandler,\n): ApolloLink {\n const leftLink = toLink(left);\n const rightLink = toLink(right || new ApolloLink(passthrough));\n\n if (isTerminating(leftLink) && isTerminating(rightLink)) {\n return new ApolloLink(operation => {\n return test(operation)\n ? leftLink.request(operation) || Observable.of()\n : rightLink.request(operation) || Observable.of();\n });\n } else {\n return new ApolloLink((operation, forward) => {\n return test(operation)\n ? leftLink.request(operation, forward) || Observable.of()\n : rightLink.request(operation, forward) || Observable.of();\n });\n }\n}\n\n// join two Links together\nexport const concat = (\n first: ApolloLink | RequestHandler,\n second: ApolloLink | RequestHandler,\n) => {\n const firstLink = toLink(first);\n if (isTerminating(firstLink)) {\n invariant.warn(\n new LinkError(\n `You are calling concat on a terminating link, which will have no effect`,\n firstLink,\n ),\n );\n return firstLink;\n }\n const nextLink = toLink(second);\n\n if (isTerminating(nextLink)) {\n return new ApolloLink(\n operation =>\n firstLink.request(\n operation,\n op => nextLink.request(op) || Observable.of(),\n ) || Observable.of(),\n );\n } else {\n return new ApolloLink((operation, forward) => {\n return (\n firstLink.request(operation, op => {\n return nextLink.request(op, forward) || Observable.of();\n }) || Observable.of()\n );\n });\n }\n};\n\nexport class ApolloLink {\n public static empty = empty;\n public static from = from;\n public static split = split;\n public static execute = execute;\n\n constructor(request?: RequestHandler) {\n if (request) this.request = request;\n }\n\n public split(\n test: (op: Operation) => boolean,\n left: ApolloLink | RequestHandler,\n right?: ApolloLink | RequestHandler,\n ): ApolloLink {\n return this.concat(split(test, left, right || new ApolloLink(passthrough)));\n }\n\n public concat(next: ApolloLink | RequestHandler): ApolloLink {\n return concat(this, next);\n }\n\n public request(\n operation: Operation,\n forward?: NextLink,\n ): Observable | null {\n throw new InvariantError('request is not implemented');\n }\n}\n\nexport function execute(\n link: ApolloLink,\n operation: GraphQLRequest,\n): Observable {\n return (\n link.request(\n createOperation(\n operation.context,\n transformOperation(validateOperation(operation)),\n ),\n ) || Observable.of()\n );\n}\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n\n if (isProduction) {\n throw new Error(prefix);\n } else {\n throw new Error(prefix + \": \" + (message || ''));\n }\n}\n\nexport default invariant;\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { Component } from \"./component\";\nimport { _ } from \"../utils\";\nvar PopupComponent = /** @class */ (function (_super) {\n __extends(PopupComponent, _super);\n function PopupComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PopupComponent.prototype.isPopup = function () {\n return true;\n };\n PopupComponent.prototype.setParentComponent = function (container) {\n _.addCssClass(container.getGui(), 'ag-has-popup');\n _super.prototype.setParentComponent.call(this, container);\n };\n PopupComponent.prototype.destroy = function () {\n var parentComp = this.parentComponent;\n var hasParent = parentComp && parentComp.isAlive();\n if (hasParent) {\n _.removeCssClass(parentComp.getGui(), 'ag-has-popup');\n }\n _super.prototype.destroy.call(this);\n };\n return PopupComponent;\n}(Component));\nexport { PopupComponent };\n","export default function formControlState(_ref) {\n var props = _ref.props,\n states = _ref.states,\n muiFormControl = _ref.muiFormControl;\n return states.reduce(function (acc, state) {\n acc[state] = props[state];\n\n if (muiFormControl) {\n if (typeof props[state] === 'undefined') {\n acc[state] = muiFormControl[state];\n }\n }\n\n return acc;\n }, {});\n}","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nfunction getStatics(component) {\n if (ReactIs.isMemo(component)) {\n return MEMO_STATICS;\n }\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"../widgets/component\";\nimport { PostConstruct } from \"../context/context\";\nimport { RowNode } from \"../entities/rowNode\";\nimport { DragSourceType } from \"../dragAndDrop/dragAndDropService\";\nimport { Events } from \"../eventKeys\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { _ } from \"../utils\";\nvar RowDragComp = /** @class */ (function (_super) {\n __extends(RowDragComp, _super);\n function RowDragComp(rowNode, column, cellValue, beans) {\n var _this = _super.call(this, \"
\") || this;\n _this.rowNode = rowNode;\n _this.column = column;\n _this.cellValue = cellValue;\n _this.beans = beans;\n return _this;\n }\n RowDragComp.prototype.postConstruct = function () {\n var eGui = this.getGui();\n eGui.appendChild(_.createIconNoSpan('rowDrag', this.beans.gridOptionsWrapper, null));\n this.addDragSource();\n this.checkCompatibility();\n if (this.beans.gridOptionsWrapper.isRowDragManaged()) {\n this.addFeature(new ManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column), this.beans.context);\n }\n else {\n this.addFeature(new NonManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column), this.beans.context);\n }\n };\n // returns true if all compatibility items work out\n RowDragComp.prototype.checkCompatibility = function () {\n var managed = this.beans.gridOptionsWrapper.isRowDragManaged();\n var treeData = this.beans.gridOptionsWrapper.isTreeData();\n if (treeData && managed) {\n _.doOnce(function () {\n return console.warn('ag-Grid: If using row drag with tree data, you cannot have rowDragManaged=true');\n }, 'RowDragComp.managedAndTreeData');\n }\n };\n RowDragComp.prototype.addDragSource = function () {\n var _this = this;\n var dragItem = {\n rowNode: this.rowNode\n };\n var dragSource = {\n type: DragSourceType.RowDrag,\n eElement: this.getGui(),\n dragItemName: this.cellValue,\n dragItemCallback: function () { return dragItem; },\n dragStartPixels: 0\n };\n this.beans.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.beans.dragAndDropService.removeDragSource(dragSource); });\n };\n __decorate([\n PostConstruct\n ], RowDragComp.prototype, \"postConstruct\", null);\n return RowDragComp;\n}(Component));\nexport { RowDragComp };\nvar VisibilityStrategy = /** @class */ (function (_super) {\n __extends(VisibilityStrategy, _super);\n function VisibilityStrategy(parent, rowNode, column) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.column = column;\n _this.rowNode = rowNode;\n return _this;\n }\n VisibilityStrategy.prototype.setDisplayedOrVisible = function (neverDisplayed) {\n if (neverDisplayed) {\n this.parent.setDisplayed(false);\n }\n else {\n var shown = this.column.isRowDrag(this.rowNode);\n var isShownSometimes = _.isFunction(this.column.getColDef().rowDrag);\n // if shown sometimes, them some rows can have drag handle while other don't,\n // so we use setVisible to keep the handles horizontally aligned (as setVisible\n // keeps the empty space, whereas setDisplayed looses the space)\n if (isShownSometimes) {\n this.parent.setVisible(shown);\n }\n else {\n this.parent.setDisplayed(shown);\n }\n }\n };\n return VisibilityStrategy;\n}(BeanStub));\n// when non managed, the visibility depends on suppressRowDrag property only\nvar NonManagedVisibilityStrategy = /** @class */ (function (_super) {\n __extends(NonManagedVisibilityStrategy, _super);\n function NonManagedVisibilityStrategy(parent, beans, rowNode, column) {\n var _this = _super.call(this, parent, rowNode, column) || this;\n _this.beans = beans;\n return _this;\n }\n NonManagedVisibilityStrategy.prototype.postConstruct = function () {\n this.addDestroyableEventListener(this.beans.gridOptionsWrapper, 'suppressRowDrag', this.onSuppressRowDrag.bind(this));\n // in case data changes, then we need to update visibility of drag item\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.workOutVisibility();\n };\n NonManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {\n this.workOutVisibility();\n };\n NonManagedVisibilityStrategy.prototype.workOutVisibility = function () {\n // only show the drag if both sort and filter are not present\n var neverDisplayed = this.beans.gridOptionsWrapper.isSuppressRowDrag();\n this.setDisplayedOrVisible(neverDisplayed);\n };\n __decorate([\n PostConstruct\n ], NonManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n return NonManagedVisibilityStrategy;\n}(VisibilityStrategy));\n// when managed, the visibility depends on sort, filter and row group, as well as suppressRowDrag property\nvar ManagedVisibilityStrategy = /** @class */ (function (_super) {\n __extends(ManagedVisibilityStrategy, _super);\n function ManagedVisibilityStrategy(parent, beans, rowNode, column) {\n var _this = _super.call(this, parent, rowNode, column) || this;\n _this.beans = beans;\n return _this;\n }\n ManagedVisibilityStrategy.prototype.postConstruct = function () {\n // we do not show the component if sort, filter or grouping is active\n this.addDestroyableEventListener(this.beans.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.addDestroyableEventListener(this.beans.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addDestroyableEventListener(this.beans.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));\n // in case data changes, then we need to update visibility of drag item\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.addDestroyableEventListener(this.beans.gridOptionsWrapper, 'suppressRowDrag', this.onSuppressRowDrag.bind(this));\n this.updateSortActive();\n this.updateFilterActive();\n this.updateRowGroupActive();\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.updateRowGroupActive = function () {\n var rowGroups = this.beans.columnController.getRowGroupColumns();\n this.rowGroupActive = !_.missingOrEmpty(rowGroups);\n };\n ManagedVisibilityStrategy.prototype.onRowGroupChanged = function () {\n this.updateRowGroupActive();\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.updateSortActive = function () {\n var sortModel = this.beans.sortController.getSortModel();\n this.sortActive = !_.missingOrEmpty(sortModel);\n };\n ManagedVisibilityStrategy.prototype.onSortChanged = function () {\n this.updateSortActive();\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.updateFilterActive = function () {\n this.filterActive = this.beans.filterManager.isAnyFilterPresent();\n };\n ManagedVisibilityStrategy.prototype.onFilterChanged = function () {\n this.updateFilterActive();\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.workOutVisibility = function () {\n // only show the drag if both sort and filter are not present\n var sortOrFilterOrGroupActive = this.sortActive || this.filterActive || this.rowGroupActive;\n var suppressRowDrag = this.beans.gridOptionsWrapper.isSuppressRowDrag();\n var neverDisplayed = sortOrFilterOrGroupActive || suppressRowDrag;\n this.setDisplayedOrVisible(neverDisplayed);\n };\n __decorate([\n PostConstruct\n ], ManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n return ManagedVisibilityStrategy;\n}(VisibilityStrategy));\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"../widgets/component\";\nimport { PostConstruct } from \"../context/context\";\nimport { _ } from \"../utils\";\nvar DndSourceComp = /** @class */ (function (_super) {\n __extends(DndSourceComp, _super);\n function DndSourceComp(rowNode, column, cellValue, beans, eCell) {\n var _this = _super.call(this, \"
\") || this;\n _this.rowNode = rowNode;\n _this.column = column;\n _this.cellValue = cellValue;\n _this.beans = beans;\n _this.eCell = eCell;\n return _this;\n }\n DndSourceComp.prototype.postConstruct = function () {\n var eGui = this.getGui();\n eGui.appendChild(_.createIconNoSpan('rowDrag', this.beans.gridOptionsWrapper, null));\n this.addDragSource();\n this.checkVisibility();\n };\n DndSourceComp.prototype.addDragSource = function () {\n this.addGuiEventListener('dragstart', this.onDragStart.bind(this));\n };\n DndSourceComp.prototype.onDragStart = function (dragEvent) {\n var _this = this;\n var providedOnRowDrag = this.column.getColDef().dndSourceOnRowDrag;\n var isIE = _.isBrowserIE();\n if (!isIE) {\n dragEvent.dataTransfer.setDragImage(this.eCell, 0, 0);\n }\n // default behaviour is to convert data to json and set into drag component\n var defaultOnRowDrag = function () {\n try {\n var jsonData = JSON.stringify(_this.rowNode.data);\n if (isIE) {\n dragEvent.dataTransfer.setData('text', jsonData);\n }\n else {\n dragEvent.dataTransfer.setData('application/json', jsonData);\n dragEvent.dataTransfer.setData('text/plain', jsonData);\n }\n }\n catch (e) {\n // if we cannot convert the data to json, then we do not set the type\n }\n };\n if (providedOnRowDrag) {\n providedOnRowDrag({ rowNode: this.rowNode, dragEvent: dragEvent });\n }\n else {\n defaultOnRowDrag();\n }\n };\n DndSourceComp.prototype.checkVisibility = function () {\n var visible = this.column.isDndSource(this.rowNode);\n this.setDisplayed(visible);\n };\n __decorate([\n PostConstruct\n ], DndSourceComp.prototype, \"postConstruct\", null);\n return DndSourceComp;\n}(Component));\nexport { DndSourceComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Constants } from \"../constants\";\nimport { Events } from \"../events\";\nimport { Component } from \"../widgets/component\";\nimport { CheckboxSelectionComponent } from \"./checkboxSelectionComponent\";\nimport { CellRangeType } from \"../interfaces/iRangeController\";\nimport { RowDragComp } from \"./rowDragComp\";\nimport { PopupEditorWrapper } from \"./cellEditors/popupEditorWrapper\";\nimport { _ } from \"../utils\";\nimport { DndSourceComp } from \"./dndSourceComp\";\nvar CellComp = /** @class */ (function (_super) {\n __extends(CellComp, _super);\n function CellComp(scope, beans, column, rowNode, rowComp, autoHeightCell, printLayout) {\n var _this = _super.call(this) || this;\n _this.editingCell = false;\n _this.suppressRefreshCell = false;\n _this.scope = null;\n // every time we go into edit mode, or back again, this gets incremented.\n // it's the components way of dealing with the async nature of framework components,\n // so if a framework component takes a while to be created, we know if the object\n // is still relevant when creating is finished. eg we could click edit / un-edit 20\n // times before the first React edit component comes back - we should discard\n // the first 19.\n _this.cellEditorVersion = 0;\n _this.cellRendererVersion = 0;\n _this.scope = scope;\n _this.beans = beans;\n _this.column = column;\n _this.rowNode = rowNode;\n _this.rowComp = rowComp;\n _this.autoHeightCell = autoHeightCell;\n _this.printLayout = printLayout;\n _this.createGridCellVo();\n _this.rangeSelectionEnabled = _this.beans.rangeController && beans.gridOptionsWrapper.isEnableRangeSelection();\n _this.cellFocused = _this.beans.focusedCellController.isCellFocused(_this.cellPosition);\n _this.firstRightPinned = _this.column.isFirstRightPinned();\n _this.lastLeftPinned = _this.column.isLastLeftPinned();\n if (_this.rangeSelectionEnabled && _this.beans.rangeController) {\n var rangeController = _this.beans.rangeController;\n _this.rangeCount = rangeController.getCellRangeCount(_this.cellPosition);\n if (_this.rangeCount) {\n _this.hasChartRange = rangeController.getCellRanges().every(function (range) { return _.exists(range.type); });\n }\n }\n _this.getValueAndFormat();\n _this.setUsingWrapper();\n _this.chooseCellRenderer();\n _this.setupColSpan();\n _this.rowSpan = _this.column.getRowSpan(_this.rowNode);\n return _this;\n }\n CellComp.prototype.getCreateTemplate = function () {\n var unselectable = !this.beans.gridOptionsWrapper.isEnableCellTextSelection() ? 'unselectable=\"on\"' : '';\n var templateParts = [];\n var col = this.column;\n var width = this.getCellWidth();\n var left = this.modifyLeftForPrintLayout(this.getCellLeft());\n var valueToRender = this.getInitialValueToRender();\n var valueSanitised = _.get(this.column, 'colDef.template', null) ? valueToRender : _.escape(valueToRender);\n this.tooltip = this.getToolTip();\n var tooltipSanitised = _.escape(this.tooltip);\n var colIdSanitised = _.escape(col.getId());\n var wrapperStartTemplate = '';\n var wrapperEndTemplate = '';\n var stylesFromColDef = this.preProcessStylesFromColDef();\n var cssClasses = this.getInitialCssClasses();\n var stylesForRowSpanning = this.getStylesForRowSpanning();\n if (this.usingWrapper) {\n wrapperStartTemplate = \"
\";\n wrapperEndTemplate = '
';\n }\n templateParts.push(\"\");\n templateParts.push(wrapperStartTemplate);\n if (_.exists(valueSanitised, true)) {\n templateParts.push(valueSanitised);\n }\n templateParts.push(wrapperEndTemplate);\n templateParts.push(\"\");\n return templateParts.join('');\n };\n CellComp.prototype.getStylesForRowSpanning = function () {\n if (this.rowSpan === 1) {\n return '';\n }\n var singleRowHeight = this.beans.gridOptionsWrapper.getRowHeightAsNumber();\n var totalRowHeight = singleRowHeight * this.rowSpan;\n return \"height: \" + totalRowHeight + \"px; z-index: 1;\";\n };\n CellComp.prototype.afterAttached = function () {\n var querySelector = \"[comp-id=\\\"\" + this.getCompId() + \"\\\"]\";\n var eGui = this.eParentRow.querySelector(querySelector);\n this.setGui(eGui);\n // all of these have dependencies on the eGui, so only do them after eGui is set\n this.addDomData();\n this.populateTemplate();\n this.createCellRendererInstance(true);\n this.angular1Compile();\n // if not doing enterprise, then range selection service would be missing\n // so need to check before trying to use it\n if (this.rangeSelectionEnabled) {\n if (this.shouldHaveSelectionHandle()) {\n this.addSelectionHandle();\n }\n }\n if (_.exists(this.tooltip) && !this.beans.gridOptionsWrapper.isEnableBrowserTooltips()) {\n this.beans.tooltipManager.registerTooltip(this);\n }\n };\n CellComp.prototype.onColumnHover = function () {\n var isHovered = this.beans.columnHoverService.isHovered(this.column);\n _.addOrRemoveCssClass(this.getGui(), 'ag-column-hover', isHovered);\n };\n CellComp.prototype.onCellChanged = function (event) {\n var eventImpactsThisCell = event.column === this.column;\n if (eventImpactsThisCell) {\n this.refreshCell({});\n }\n };\n CellComp.prototype.getCellLeft = function () {\n var mostLeftCol;\n if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {\n mostLeftCol = _.last(this.colsSpanning);\n }\n else {\n mostLeftCol = this.column;\n }\n return mostLeftCol.getLeft();\n };\n CellComp.prototype.getCellWidth = function () {\n if (!this.colsSpanning) {\n return this.column.getActualWidth();\n }\n var result = 0;\n this.colsSpanning.forEach(function (col) { return result += col.getActualWidth(); });\n return result;\n };\n CellComp.prototype.onFlashCells = function (event) {\n var cellId = this.beans.cellPositionUtils.createId(this.cellPosition);\n var shouldFlash = event.cells[cellId];\n if (shouldFlash) {\n this.animateCell('highlight');\n }\n };\n CellComp.prototype.setupColSpan = function () {\n // if no col span is active, then we don't set it up, as it would be wasteful of CPU\n if (_.missing(this.getComponentHolder().colSpan)) {\n return;\n }\n // because we are col spanning, a reorder of the cols can change what cols we are spanning over\n this.addDestroyableEventListener(this.beans.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayColumnsChanged.bind(this));\n // because we are spanning over multiple cols, we check for width any time any cols width changes.\n // this is expensive - really we should be explicitly checking only the cols we are spanning over\n // instead of every col, however it would be tricky code to track the cols we are spanning over, so\n // because hardly anyone will be using colSpan, am favouring this easier way for more maintainable code.\n this.addDestroyableEventListener(this.beans.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onWidthChanged.bind(this));\n this.colsSpanning = this.getColSpanningList();\n };\n CellComp.prototype.getColSpanningList = function () {\n var colSpan = this.column.getColSpan(this.rowNode);\n var colsSpanning = [];\n // if just one col, the col span is just the column we are in\n if (colSpan === 1) {\n colsSpanning.push(this.column);\n }\n else {\n var pointer = this.column;\n var pinned = this.column.getPinned();\n for (var i = 0; pointer && i < colSpan; i++) {\n colsSpanning.push(pointer);\n pointer = this.beans.columnController.getDisplayedColAfter(pointer);\n if (!pointer || _.missing(pointer)) {\n break;\n }\n // we do not allow col spanning to span outside of pinned areas\n if (pinned !== pointer.getPinned()) {\n break;\n }\n }\n }\n return colsSpanning;\n };\n CellComp.prototype.onDisplayColumnsChanged = function () {\n var colsSpanning = this.getColSpanningList();\n if (!_.compareArrays(this.colsSpanning, colsSpanning)) {\n this.colsSpanning = colsSpanning;\n this.onWidthChanged();\n this.onLeftChanged(); // left changes when doing RTL\n }\n };\n CellComp.prototype.getInitialCssClasses = function () {\n var cssClasses = [\"ag-cell\", \"ag-cell-not-inline-editing\"];\n // if we are putting the cell into a dummy container, to work out it's height,\n // then we don't put the height css in, as we want cell to fit height in that case.\n if (!this.autoHeightCell) {\n cssClasses.push('ag-cell-with-height');\n }\n var doingFocusCss = !this.beans.gridOptionsWrapper.isSuppressCellSelection();\n if (doingFocusCss && this.cellFocused) {\n // otherwise the class depends on the focus state\n cssClasses.push('ag-cell-focus');\n }\n if (this.firstRightPinned) {\n cssClasses.push('ag-cell-first-right-pinned');\n }\n if (this.lastLeftPinned) {\n cssClasses.push('ag-cell-last-left-pinned');\n }\n if (this.beans.columnHoverService.isHovered(this.column)) {\n cssClasses.push('ag-column-hover');\n }\n _.pushAll(cssClasses, this.preProcessClassesFromColDef());\n _.pushAll(cssClasses, this.preProcessCellClassRules());\n _.pushAll(cssClasses, this.getInitialRangeClasses());\n // if using the wrapper, this class goes on the wrapper instead\n if (!this.usingWrapper) {\n cssClasses.push('ag-cell-value');\n }\n return cssClasses;\n };\n CellComp.prototype.getInitialValueToRender = function () {\n // if using a cellRenderer, then render the html from the cell renderer if it exists\n if (this.usingCellRenderer) {\n if (typeof this.cellRendererGui === 'string') {\n return this.cellRendererGui;\n }\n return '';\n }\n var colDef = this.getComponentHolder();\n if (colDef.template) {\n // template is really only used for angular 1 - as people using ng1 are used to providing templates with\n // bindings in it. in ng2, people will hopefully want to provide components, not templates.\n return colDef.template;\n }\n if (colDef.templateUrl) {\n // likewise for templateUrl - it's for ng1 really - when we move away from ng1, we can take these out.\n // niall was pro angular 1 when writing template and templateUrl, if writing from scratch now, would\n // not do these, but would follow a pattern that was friendly towards components, not templates.\n var template = this.beans.templateService.getTemplate(colDef.templateUrl, this.refreshCell.bind(this, true));\n return template || '';\n }\n return this.getValueToUse();\n };\n CellComp.prototype.getRenderedRow = function () {\n return this.rowComp;\n };\n CellComp.prototype.isSuppressNavigable = function () {\n return this.column.isSuppressNavigable(this.rowNode);\n };\n CellComp.prototype.getCellRenderer = function () {\n return this.cellRenderer;\n };\n CellComp.prototype.getCellEditor = function () {\n return this.cellEditor;\n };\n // + stop editing {forceRefresh: true, suppressFlash: true}\n // + event cellChanged {}\n // + cellRenderer.params.refresh() {} -> method passes 'as is' to the cellRenderer, so params could be anything\n // + rowComp: event dataChanged {animate: update, newData: !update}\n // + rowComp: api refreshCells() {animate: true/false}\n // + rowRenderer: api softRefreshView() {}\n CellComp.prototype.refreshCell = function (params) {\n // if we are in the middle of 'stopEditing', then we don't refresh here, as refresh gets called explicitly\n if (this.suppressRefreshCell || this.editingCell) {\n return;\n }\n var colDef = this.getComponentHolder();\n var newData = params && params.newData;\n var suppressFlash = (params && params.suppressFlash) || colDef.suppressCellFlash;\n var forceRefresh = params && params.forceRefresh;\n var oldValue = this.value;\n this.getValueAndFormat();\n // for simple values only (not pojo's), see if the value is the same, and if it is, skip the refresh.\n // when never allow skipping after an edit, as after editing, we need to put the GUI back to the way\n // if was before the edit.\n var valuesDifferent = !this.valuesAreEqual(oldValue, this.value);\n var dataNeedsUpdating = forceRefresh || valuesDifferent;\n if (dataNeedsUpdating) {\n // if it's 'new data', then we don't refresh the cellRenderer, even if refresh method is available.\n // this is because if the whole data is new (ie we are showing stock price 'BBA' now and not 'SSD')\n // then we are not showing a movement in the stock price, rather we are showing different stock.\n var cellRendererRefreshed = newData ? false : this.attemptCellRendererRefresh();\n // we do the replace if not doing refresh, or if refresh was unsuccessful.\n // the refresh can be unsuccessful if we are using a framework (eg ng2 or react) and the framework\n // wrapper has the refresh method, but the underlying component doesn't\n if (!cellRendererRefreshed) {\n this.replaceContentsAfterRefresh();\n }\n // we don't want to flash the cells when processing a filter change, as otherwise the UI would\n // be to busy. see comment in FilterManager with regards processingFilterChange\n var processingFilterChange = this.beans.filterManager.isSuppressFlashingCellsBecauseFiltering();\n var flashCell = !suppressFlash && !processingFilterChange &&\n (this.beans.gridOptionsWrapper.isEnableCellChangeFlash() || colDef.enableCellChangeFlash);\n if (flashCell) {\n this.flashCell();\n }\n // need to check rules. note, we ignore colDef classes and styles, these are assumed to be static\n this.postProcessStylesFromColDef();\n this.postProcessClassesFromColDef();\n }\n // we can't readily determine if the data in an angularjs template has changed, so here we just update\n // and recompile (if applicable)\n this.updateAngular1ScopeAndCompile();\n this.refreshToolTip();\n // we do cellClassRules even if the value has not changed, so that users who have rules that\n // look at other parts of the row (where the other part of the row might of changed) will work.\n this.postProcessCellClassRules();\n };\n // user can also call this via API\n CellComp.prototype.flashCell = function () {\n this.animateCell('data-changed');\n };\n CellComp.prototype.animateCell = function (cssName) {\n var fullName = 'ag-cell-' + cssName;\n var animationFullName = 'ag-cell-' + cssName + '-animation';\n var element = this.getGui();\n // we want to highlight the cells, without any animation\n _.addCssClass(element, fullName);\n _.removeCssClass(element, animationFullName);\n // then once that is applied, we remove the highlight with animation\n window.setTimeout(function () {\n _.removeCssClass(element, fullName);\n _.addCssClass(element, animationFullName);\n window.setTimeout(function () {\n // and then to leave things as we got them, we remove the animation\n _.removeCssClass(element, animationFullName);\n }, 1000);\n }, 500);\n };\n CellComp.prototype.replaceContentsAfterRefresh = function () {\n // otherwise we rip out the cell and replace it\n _.clearElement(this.eParentOfValue);\n // remove old renderer component if it exists\n if (this.cellRenderer && this.cellRenderer.destroy) {\n this.cellRenderer.destroy();\n }\n this.cellRenderer = null;\n this.cellRendererGui = null;\n // populate\n this.putDataIntoCellAfterRefresh();\n this.updateAngular1ScopeAndCompile();\n };\n CellComp.prototype.updateAngular1ScopeAndCompile = function () {\n if (this.beans.gridOptionsWrapper.isAngularCompileRows() && this.scope) {\n this.scope.data = __assign({}, this.rowNode.data);\n this.angular1Compile();\n }\n };\n CellComp.prototype.angular1Compile = function () {\n // if angular compiling, then need to also compile the cell again (angular compiling sucks, please wait...)\n if (this.beans.gridOptionsWrapper.isAngularCompileRows()) {\n var eGui = this.getGui();\n // only compile the node if it hasn't already been done\n // this prevents \"orphaned\" node leaks\n if (!eGui.classList.contains('ng-scope') || eGui.childElementCount === 0) {\n var compiledElement_1 = this.beans.$compile(eGui)(this.scope);\n this.addDestroyFunc(function () {\n compiledElement_1.remove();\n });\n }\n }\n };\n CellComp.prototype.postProcessStylesFromColDef = function () {\n var stylesToUse = this.processStylesFromColDef();\n if (stylesToUse) {\n _.addStylesToElement(this.getGui(), stylesToUse);\n }\n };\n CellComp.prototype.preProcessStylesFromColDef = function () {\n var stylesToUse = this.processStylesFromColDef();\n return _.cssStyleObjectToMarkup(stylesToUse);\n };\n CellComp.prototype.processStylesFromColDef = function () {\n var colDef = this.getComponentHolder();\n if (colDef.cellStyle) {\n var cssToUse = void 0;\n if (typeof colDef.cellStyle === 'function') {\n var cellStyleParams = {\n value: this.value,\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n column: this.column,\n $scope: this.scope,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi()\n };\n var cellStyleFunc = colDef.cellStyle;\n cssToUse = cellStyleFunc(cellStyleParams);\n }\n else {\n cssToUse = colDef.cellStyle;\n }\n return cssToUse;\n }\n };\n CellComp.prototype.postProcessClassesFromColDef = function () {\n var _this = this;\n this.processClassesFromColDef(function (className) { return _.addCssClass(_this.getGui(), className); });\n };\n CellComp.prototype.preProcessClassesFromColDef = function () {\n var res = [];\n this.processClassesFromColDef(function (className) { return res.push(className); });\n return res;\n };\n CellComp.prototype.processClassesFromColDef = function (onApplicableClass) {\n var colDef = this.getComponentHolder();\n this.beans.stylingService.processStaticCellClasses(colDef, {\n value: this.value,\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n rowIndex: this.rowNode.rowIndex,\n $scope: this.scope,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n }, onApplicableClass);\n };\n CellComp.prototype.putDataIntoCellAfterRefresh = function () {\n // template gets preference, then cellRenderer, then do it ourselves\n var colDef = this.getComponentHolder();\n if (colDef.template) {\n // template is really only used for angular 1 - as people using ng1 are used to providing templates with\n // bindings in it. in ng2, people will hopefully want to provide components, not templates.\n this.eParentOfValue.innerHTML = colDef.template;\n }\n else if (colDef.templateUrl) {\n // likewise for templateUrl - it's for ng1 really - when we move away from ng1, we can take these out.\n // niall was pro angular 1 when writing template and templateUrl, if writing from scratch now, would\n // not do these, but would follow a pattern that was friendly towards components, not templates.\n var template = this.beans.templateService.getTemplate(colDef.templateUrl, this.refreshCell.bind(this, true));\n if (template) {\n this.eParentOfValue.innerHTML = template;\n }\n }\n else {\n // we can switch from using a cell renderer back to the default if a user\n // is using cellRendererSelect\n this.chooseCellRenderer();\n if (this.usingCellRenderer) {\n this.createCellRendererInstance();\n }\n else {\n var valueToUse = this.getValueToUse();\n if (valueToUse !== null && valueToUse !== undefined) {\n this.eParentOfValue.innerHTML = _.escape(valueToUse);\n }\n }\n }\n };\n CellComp.prototype.attemptCellRendererRefresh = function () {\n if (_.missing(this.cellRenderer) || !this.cellRenderer || _.missing(this.cellRenderer.refresh)) {\n return false;\n }\n // if the cell renderer has a refresh method, we call this instead of doing a refresh\n var params = this.createCellRendererParams();\n // take any custom params off of the user\n var finalParams = this.beans.userComponentFactory.createFinalParams(this.getComponentHolder(), this.cellRendererType, params);\n var result = this.cellRenderer.refresh(finalParams);\n // NOTE on undefined: previous version of the cellRenderer.refresh() interface\n // returned nothing, if the method existed, we assumed it refreshed. so for\n // backwards compatibility, we assume if method exists and returns nothing,\n // that it was successful.\n return result === true || result === undefined;\n };\n CellComp.prototype.refreshToolTip = function () {\n var newTooltip = this.getToolTip();\n if (this.tooltip === newTooltip) {\n return;\n }\n var hasNewTooltip = _.exists(newTooltip);\n var hadTooltip = _.exists(this.tooltip);\n if (hasNewTooltip && this.tooltip === newTooltip.toString()) {\n return;\n }\n this.tooltip = newTooltip;\n if (this.beans.gridOptionsWrapper.isEnableBrowserTooltips()) {\n if (hasNewTooltip) {\n var tooltipSanitised = _.escape(this.tooltip);\n this.eParentOfValue.setAttribute('title', tooltipSanitised);\n }\n else {\n this.eParentOfValue.removeAttribute('title');\n }\n }\n else {\n if (hadTooltip) {\n if (!hasNewTooltip) {\n this.beans.tooltipManager.unregisterTooltip(this);\n }\n }\n else if (hasNewTooltip) {\n this.beans.tooltipManager.registerTooltip(this);\n }\n }\n };\n CellComp.prototype.valuesAreEqual = function (val1, val2) {\n // if the user provided an equals method, use that, otherwise do simple comparison\n var colDef = this.getComponentHolder();\n var equalsMethod = colDef ? colDef.equals : null;\n if (equalsMethod) {\n return equalsMethod(val1, val2);\n }\n return val1 === val2;\n };\n CellComp.prototype.getToolTip = function () {\n var colDef = this.getComponentHolder();\n var data = this.rowNode.data;\n if (colDef.tooltipField && _.exists(data)) {\n return _.getValueUsingField(data, colDef.tooltipField, this.column.isTooltipFieldContainsDots());\n }\n var valueGetter = colDef.tooltipValueGetter || colDef.tooltip;\n if (valueGetter) {\n return valueGetter({\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n colDef: colDef,\n column: this.getColumn(),\n context: this.beans.gridOptionsWrapper.getContext(),\n value: this.value,\n valueFormatted: this.valueFormatted,\n rowIndex: this.cellPosition.rowIndex,\n node: this.rowNode,\n data: this.rowNode.data,\n $scope: this.scope,\n });\n }\n return null;\n };\n CellComp.prototype.getTooltipText = function (escape) {\n if (escape === void 0) { escape = true; }\n return escape ? _.escape(this.tooltip) : this.tooltip;\n };\n CellComp.prototype.processCellClassRules = function (onApplicableClass, onNotApplicableClass) {\n var colDef = this.getComponentHolder();\n this.beans.stylingService.processClassRules(colDef.cellClassRules, {\n value: this.value,\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n rowIndex: this.cellPosition.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n $scope: this.scope,\n context: this.beans.gridOptionsWrapper.getContext()\n }, onApplicableClass, onNotApplicableClass);\n };\n CellComp.prototype.postProcessCellClassRules = function () {\n var _this = this;\n this.processCellClassRules(function (className) {\n _.addCssClass(_this.getGui(), className);\n }, function (className) {\n _.removeCssClass(_this.getGui(), className);\n });\n };\n CellComp.prototype.preProcessCellClassRules = function () {\n var res = [];\n this.processCellClassRules(function (className) {\n res.push(className);\n }, function (className) {\n // not catered for, if creating, no need\n // to remove class as it was never there\n });\n return res;\n };\n // a wrapper is used when we are putting a selection checkbox in the cell with the value\n CellComp.prototype.setUsingWrapper = function () {\n var colDef = this.getComponentHolder();\n // never allow selection or dragging on pinned rows\n if (this.rowNode.rowPinned) {\n this.usingWrapper = false;\n this.includeSelectionComponent = false;\n this.includeRowDraggingComponent = false;\n this.includeDndSourceComponent = false;\n return;\n }\n var cbSelectionIsFunc = typeof colDef.checkboxSelection === 'function';\n var rowDraggableIsFunc = typeof colDef.rowDrag === 'function';\n var dndSourceIsFunc = typeof colDef.dndSource === 'function';\n this.includeSelectionComponent = cbSelectionIsFunc || colDef.checkboxSelection === true;\n this.includeRowDraggingComponent = rowDraggableIsFunc || colDef.rowDrag === true;\n this.includeDndSourceComponent = dndSourceIsFunc || colDef.dndSource === true;\n this.usingWrapper = this.includeRowDraggingComponent || this.includeSelectionComponent || this.includeDndSourceComponent;\n };\n CellComp.prototype.chooseCellRenderer = function () {\n // template gets preference, then cellRenderer, then do it ourselves\n var colDef = this.getComponentHolder();\n // templates are for ng1, ideally we wouldn't have these, they are ng1 support\n // inside the core which is bad\n if (colDef.template || colDef.templateUrl) {\n this.usingCellRenderer = false;\n return;\n }\n var params = this.createCellRendererParams();\n var cellRenderer = this.beans.userComponentFactory.lookupComponentClassDef(colDef, 'cellRenderer', params);\n var pinnedRowCellRenderer = this.beans.userComponentFactory.lookupComponentClassDef(colDef, 'pinnedRowCellRenderer', params);\n if (pinnedRowCellRenderer && this.rowNode.rowPinned) {\n this.cellRendererType = CellComp.CELL_RENDERER_TYPE_PINNED;\n this.usingCellRenderer = true;\n }\n else if (cellRenderer) {\n this.cellRendererType = CellComp.CELL_RENDERER_TYPE_NORMAL;\n this.usingCellRenderer = true;\n }\n else {\n this.usingCellRenderer = false;\n }\n };\n CellComp.prototype.createCellRendererInstance = function (useTaskService) {\n var _this = this;\n if (useTaskService === void 0) { useTaskService = false; }\n if (!this.usingCellRenderer) {\n return;\n }\n // never use task service if angularCompileRows=true, as that assume the cell renderers\n // are finished when the row is created. also we never use it if animation frame service\n // is turned off.\n // and lastly we never use it if doing auto-height, as the auto-height service checks the\n // row height directly after the cell is created, it doesn't wait around for the tasks to complete\n var angularCompileRows = this.beans.gridOptionsWrapper.isAngularCompileRows();\n var suppressAnimationFrame = this.beans.gridOptionsWrapper.isSuppressAnimationFrame();\n if (angularCompileRows || suppressAnimationFrame || this.autoHeightCell) {\n useTaskService = false;\n }\n var params = this.createCellRendererParams();\n this.cellRendererVersion++;\n var callback = this.afterCellRendererCreated.bind(this, this.cellRendererVersion);\n var cellRendererTypeNormal = this.cellRendererType === CellComp.CELL_RENDERER_TYPE_NORMAL;\n var task = function () {\n // this can return null in the event that the user has switched from a renderer component to nothing, for example\n // when using a cellRendererSelect to return a component or null depending on row data etc\n var componentPromise;\n if (cellRendererTypeNormal) {\n componentPromise = _this.beans.userComponentFactory.newCellRenderer(_this.getComponentHolder(), params);\n }\n else {\n componentPromise = _this.beans.userComponentFactory.newPinnedRowCellRenderer(_this.getComponentHolder(), params);\n }\n if (componentPromise) {\n componentPromise.then(callback);\n }\n };\n if (useTaskService) {\n this.beans.taskQueue.createTask(task, this.rowNode.rowIndex, 'createTasksP2');\n }\n else {\n task();\n }\n };\n CellComp.prototype.afterCellRendererCreated = function (cellRendererVersion, cellRenderer) {\n // see if daemon\n if (!this.isAlive() || (cellRendererVersion !== this.cellRendererVersion)) {\n if (cellRenderer.destroy) {\n cellRenderer.destroy();\n }\n return;\n }\n this.cellRenderer = cellRenderer;\n this.cellRendererGui = this.cellRenderer.getGui();\n if (_.missing(this.cellRendererGui)) {\n return;\n }\n // if async components, then it's possible the user started editing since\n // this call was made\n if (!this.editingCell) {\n this.eParentOfValue.appendChild(this.cellRendererGui);\n }\n };\n CellComp.prototype.createCellRendererParams = function () {\n var _this = this;\n var params = {\n value: this.value,\n valueFormatted: this.valueFormatted,\n getValue: this.getValue.bind(this),\n setValue: function (value) {\n _this.beans.valueService.setValue(_this.rowNode, _this.column, value);\n },\n formatValue: this.formatValue.bind(this),\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: this.getComponentHolder(),\n column: this.column,\n $scope: this.scope,\n rowIndex: this.cellPosition.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n refreshCell: this.refreshCell.bind(this),\n eGridCell: this.getGui(),\n eParentOfValue: this.eParentOfValue,\n // these bits are not documented anywhere, so we could drop them?\n // it was in the olden days to allow user to register for when rendered\n // row was removed (the row comp was removed), however now that the user\n // can provide components for cells, the destroy method gets call when this\n // happens so no longer need to fire event.\n addRowCompListener: this.rowComp ? this.rowComp.addEventListener.bind(this.rowComp) : null,\n addRenderedRowListener: function (eventType, listener) {\n console.warn('ag-Grid: since ag-Grid .v11, params.addRenderedRowListener() is now params.addRowCompListener()');\n if (_this.rowComp) {\n _this.rowComp.addEventListener(eventType, listener);\n }\n }\n };\n return params;\n };\n CellComp.prototype.formatValue = function (value) {\n var valueFormatted = this.beans.valueFormatterService.formatValue(this.column, this.rowNode, this.scope, value);\n var valueFormattedExists = valueFormatted !== null && valueFormatted !== undefined;\n return valueFormattedExists ? valueFormatted : value;\n };\n CellComp.prototype.getValueToUse = function () {\n var valueFormattedExists = this.valueFormatted !== null && this.valueFormatted !== undefined;\n return valueFormattedExists ? this.valueFormatted : this.value;\n };\n CellComp.prototype.getValueAndFormat = function () {\n this.value = this.getValue();\n this.valueFormatted = this.beans.valueFormatterService.formatValue(this.column, this.rowNode, this.scope, this.value);\n };\n CellComp.prototype.getValue = function () {\n // if we don't check this, then the grid will render leaf groups as open even if we are not\n // allowing the user to open leaf groups. confused? remember for pivot mode we don't allow\n // opening leaf groups, so we have to force leafGroups to be closed in case the user expanded\n // them via the API, or user user expanded them in the UI before turning on pivot mode\n var lockedClosedGroup = this.rowNode.leafGroup && this.beans.columnController.isPivotMode();\n var isOpenGroup = this.rowNode.group && this.rowNode.expanded && !this.rowNode.footer && !lockedClosedGroup;\n // are we showing group footers\n var groupFootersEnabled = this.beans.gridOptionsWrapper.isGroupIncludeFooter();\n // if doing footers, we normally don't show agg data at group level when group is open\n var groupAlwaysShowAggData = this.beans.gridOptionsWrapper.isGroupSuppressBlankHeader();\n // if doing grouping and footers, we don't want to include the agg value\n // in the header when the group is open\n var ignoreAggData = (isOpenGroup && groupFootersEnabled) && !groupAlwaysShowAggData;\n return this.beans.valueService.getValue(this.column, this.rowNode, false, ignoreAggData);\n };\n CellComp.prototype.onMouseEvent = function (eventName, mouseEvent) {\n if (_.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n switch (eventName) {\n case 'click':\n this.onCellClicked(mouseEvent);\n break;\n case 'mousedown':\n this.onMouseDown(mouseEvent);\n break;\n case 'dblclick':\n this.onCellDoubleClicked(mouseEvent);\n break;\n case 'mouseout':\n this.onMouseOut(mouseEvent);\n break;\n case 'mouseover':\n this.onMouseOver(mouseEvent);\n break;\n }\n };\n CellComp.prototype.dispatchCellContextMenuEvent = function (event) {\n var colDef = this.getComponentHolder();\n var cellContextMenuEvent = this.createEvent(event, Events.EVENT_CELL_CONTEXT_MENU);\n this.beans.eventService.dispatchEvent(cellContextMenuEvent);\n if (colDef.onCellContextMenu) {\n // to make the callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellContextMenu(cellContextMenuEvent); }, 0);\n }\n };\n CellComp.prototype.createEvent = function (domEvent, eventType) {\n var event = {\n node: this.rowNode,\n data: this.rowNode.data,\n value: this.value,\n column: this.column,\n colDef: this.getComponentHolder(),\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridApi,\n columnApi: this.beans.columnApi,\n rowPinned: this.rowNode.rowPinned,\n event: domEvent,\n type: eventType,\n rowIndex: this.rowNode.rowIndex\n };\n // because we are hacking in $scope for angular 1, we have to de-reference\n if (this.scope) {\n event.$scope = this.scope;\n }\n return event;\n };\n CellComp.prototype.onMouseOut = function (mouseEvent) {\n var cellMouseOutEvent = this.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_OUT);\n this.beans.eventService.dispatchEvent(cellMouseOutEvent);\n this.beans.columnHoverService.clearMouseOver();\n };\n CellComp.prototype.onMouseOver = function (mouseEvent) {\n var cellMouseOverEvent = this.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_OVER);\n this.beans.eventService.dispatchEvent(cellMouseOverEvent);\n this.beans.columnHoverService.setMouseOver([this.column]);\n };\n CellComp.prototype.onCellDoubleClicked = function (mouseEvent) {\n var colDef = this.getComponentHolder();\n // always dispatch event to eventService\n var cellDoubleClickedEvent = this.createEvent(mouseEvent, Events.EVENT_CELL_DOUBLE_CLICKED);\n this.beans.eventService.dispatchEvent(cellDoubleClickedEvent);\n // check if colDef also wants to handle event\n if (typeof colDef.onCellDoubleClicked === 'function') {\n // to make the callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellDoubleClicked(cellDoubleClickedEvent); }, 0);\n }\n var editOnDoubleClick = !this.beans.gridOptionsWrapper.isSingleClickEdit()\n && !this.beans.gridOptionsWrapper.isSuppressClickEdit();\n if (editOnDoubleClick) {\n this.startRowOrCellEdit();\n }\n };\n // called by rowRenderer when user navigates via tab key\n CellComp.prototype.startRowOrCellEdit = function (keyPress, charPress) {\n if (this.beans.gridOptionsWrapper.isFullRowEdit()) {\n this.rowComp.startRowEditing(keyPress, charPress, this);\n }\n else {\n this.startEditingIfEnabled(keyPress, charPress, true);\n }\n };\n CellComp.prototype.isCellEditable = function () {\n return this.column.isCellEditable(this.rowNode);\n };\n // either called internally if single cell editing, or called by rowRenderer if row editing\n CellComp.prototype.startEditingIfEnabled = function (keyPress, charPress, cellStartedEdit) {\n if (keyPress === void 0) { keyPress = null; }\n if (charPress === void 0) { charPress = null; }\n if (cellStartedEdit === void 0) { cellStartedEdit = false; }\n // don't do it if not editable\n if (!this.isCellEditable()) {\n return;\n }\n // don't do it if already editing\n if (this.editingCell) {\n return;\n }\n this.editingCell = true;\n this.cellEditorVersion++;\n var callback = this.afterCellEditorCreated.bind(this, this.cellEditorVersion);\n var params = this.createCellEditorParams(keyPress, charPress, cellStartedEdit);\n this.createCellEditor(params).then(callback);\n // if we don't do this, and editor component is async, then there will be a period\n // when the component isn't present and keyboard navigation won't work - so example\n // of user hitting tab quickly (more quickly than renderers getting created) won't work\n var cellEditorAsync = _.missing(this.cellEditor);\n if (cellEditorAsync && cellStartedEdit) {\n this.focusCell(true);\n }\n };\n CellComp.prototype.createCellEditor = function (params) {\n var _this = this;\n var cellEditorPromise = this.beans.userComponentFactory.newCellEditor(this.column.getColDef(), params);\n return cellEditorPromise.map(function (cellEditor) {\n var isPopup = cellEditor.isPopup && cellEditor.isPopup();\n if (!isPopup) {\n return cellEditor;\n }\n if (_this.beans.gridOptionsWrapper.isFullRowEdit()) {\n console.warn('ag-Grid: popup cellEditor does not work with fullRowEdit - you cannot use them both ' +\n '- either turn off fullRowEdit, or stop using popup editors.');\n }\n // if a popup, then we wrap in a popup editor and return the popup\n var popupEditorWrapper = new PopupEditorWrapper(cellEditor);\n _this.beans.context.wireBean(popupEditorWrapper);\n popupEditorWrapper.init(params);\n return popupEditorWrapper;\n });\n };\n CellComp.prototype.afterCellEditorCreated = function (cellEditorVersion, cellEditor) {\n // if editingCell=false, means user cancelled the editor before component was ready.\n // if versionMismatch, then user cancelled the edit, then started the edit again, and this\n // is the first editor which is now stale.\n var versionMismatch = cellEditorVersion !== this.cellEditorVersion;\n if (versionMismatch || !this.editingCell) {\n if (cellEditor.destroy) {\n cellEditor.destroy();\n }\n return;\n }\n if (cellEditor.isCancelBeforeStart && cellEditor.isCancelBeforeStart()) {\n if (cellEditor.destroy) {\n cellEditor.destroy();\n }\n this.editingCell = false;\n return;\n }\n if (!cellEditor.getGui) {\n console.warn(\"ag-Grid: cellEditor for column \" + this.column.getId() + \" is missing getGui() method\");\n // no getGui, for React guys, see if they attached a react component directly\n if (cellEditor.render) {\n console.warn(\"ag-Grid: we found 'render' on the component, are you trying to set a React renderer but added it as colDef.cellEditor instead of colDef.cellEditorFmk?\");\n }\n if (cellEditor.destroy) {\n cellEditor.destroy();\n }\n this.editingCell = false;\n return;\n }\n this.cellEditor = cellEditor;\n this.cellEditorInPopup = cellEditor.isPopup !== undefined && cellEditor.isPopup();\n this.setInlineEditingClass();\n if (this.cellEditorInPopup) {\n this.addPopupCellEditor();\n }\n else {\n this.addInCellEditor();\n }\n if (cellEditor.afterGuiAttached) {\n cellEditor.afterGuiAttached();\n }\n var event = this.createEvent(null, Events.EVENT_CELL_EDITING_STARTED);\n this.beans.eventService.dispatchEvent(event);\n };\n CellComp.prototype.addInCellEditor = function () {\n _.clearElement(this.getGui());\n if (this.cellEditor) {\n this.getGui().appendChild(this.cellEditor.getGui());\n }\n this.angular1Compile();\n };\n CellComp.prototype.addPopupCellEditor = function () {\n var _this = this;\n var ePopupGui = this.cellEditor ? this.cellEditor.getGui() : null;\n var useModelPopup = this.beans.gridOptionsWrapper.isStopEditingWhenGridLosesFocus();\n this.hideEditorPopup = this.beans.popupService.addPopup(useModelPopup, ePopupGui, true, \n // callback for when popup disappears\n function () {\n _this.onPopupEditorClosed();\n });\n this.beans.popupService.positionPopupOverComponent({\n column: this.column,\n rowNode: this.rowNode,\n type: 'popupCellEditor',\n eventSource: this.getGui(),\n ePopup: ePopupGui,\n keepWithinBounds: true\n });\n this.angular1Compile();\n };\n CellComp.prototype.onPopupEditorClosed = function () {\n // we only call stopEditing if we are editing, as\n // it's possible the popup called 'stop editing'\n // before this, eg if 'enter key' was pressed on\n // the editor.\n if (this.editingCell) {\n // note: this only happens when use clicks outside of the grid. if use clicks on another\n // cell, then the editing will have already stopped on this cell\n this.stopRowOrCellEdit();\n // we only focus cell again if this cell is still focused. it is possible\n // it is not focused if the user cancelled the edit by clicking on another\n // cell outside of this one\n if (this.beans.focusedCellController.isCellFocused(this.cellPosition)) {\n this.focusCell(true);\n }\n }\n };\n // if we are editing inline, then we don't have the padding in the cell (set in the themes)\n // to allow the text editor full access to the entire cell\n CellComp.prototype.setInlineEditingClass = function () {\n if (!this.isAlive()) {\n return;\n }\n // ag-cell-inline-editing - appears when user is inline editing\n // ag-cell-not-inline-editing - appears when user is no inline editing\n // ag-cell-popup-editing - appears when user is editing cell in popup (appears on the cell, not on the popup)\n // note: one of {ag-cell-inline-editing, ag-cell-not-inline-editing} is always present, they toggle.\n // however {ag-cell-popup-editing} shows when popup, so you have both {ag-cell-popup-editing}\n // and {ag-cell-not-inline-editing} showing at the same time.\n var editingInline = this.editingCell && !this.cellEditorInPopup;\n var popupEditorShowing = this.editingCell && this.cellEditorInPopup;\n _.addOrRemoveCssClass(this.getGui(), \"ag-cell-inline-editing\", editingInline);\n _.addOrRemoveCssClass(this.getGui(), \"ag-cell-not-inline-editing\", !editingInline);\n _.addOrRemoveCssClass(this.getGui(), \"ag-cell-popup-editing\", popupEditorShowing);\n _.addOrRemoveCssClass(this.getGui().parentNode, \"ag-row-inline-editing\", editingInline);\n _.addOrRemoveCssClass(this.getGui().parentNode, \"ag-row-not-inline-editing\", !editingInline);\n };\n CellComp.prototype.createCellEditorParams = function (keyPress, charPress, cellStartedEdit) {\n var params = {\n value: this.getValue(),\n keyPress: keyPress,\n charPress: charPress,\n column: this.column,\n colDef: this.column.getColDef(),\n rowIndex: this.cellPosition.rowIndex,\n node: this.rowNode,\n data: this.rowNode.data,\n api: this.beans.gridOptionsWrapper.getApi(),\n cellStartedEdit: cellStartedEdit,\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n $scope: this.scope,\n onKeyDown: this.onKeyDown.bind(this),\n stopEditing: this.stopEditingAndFocus.bind(this),\n eGridCell: this.getGui(),\n parseValue: this.parseValue.bind(this),\n formatValue: this.formatValue.bind(this)\n };\n return params;\n };\n // cell editors call this, when they want to stop for reasons other\n // than what we pick up on. eg selecting from a dropdown ends editing.\n CellComp.prototype.stopEditingAndFocus = function (suppressNavigateAfterEdit) {\n if (suppressNavigateAfterEdit === void 0) { suppressNavigateAfterEdit = false; }\n this.stopRowOrCellEdit();\n this.focusCell(true);\n if (!suppressNavigateAfterEdit) {\n this.navigateAfterEdit();\n }\n };\n CellComp.prototype.parseValue = function (newValue) {\n var colDef = this.getComponentHolder();\n var params = {\n node: this.rowNode,\n data: this.rowNode.data,\n oldValue: this.value,\n newValue: newValue,\n colDef: colDef,\n column: this.column,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n };\n var valueParser = colDef.valueParser;\n return _.exists(valueParser) ? this.beans.expressionService.evaluate(valueParser, params) : newValue;\n };\n CellComp.prototype.focusCell = function (forceBrowserFocus) {\n if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }\n this.beans.focusedCellController.setFocusedCell(this.cellPosition.rowIndex, this.column, this.rowNode.rowPinned, forceBrowserFocus);\n this.refreshHandle();\n };\n CellComp.prototype.setFocusInOnEditor = function () {\n if (this.editingCell) {\n if (this.cellEditor && this.cellEditor.focusIn) {\n // if the editor is present, then we just focus it\n this.cellEditor.focusIn();\n }\n else {\n // if the editor is not present, it means async cell editor (eg React fibre)\n // and we are trying to set focus before the cell editor is present, so we\n // focus the cell instead\n this.focusCell(true);\n }\n }\n };\n CellComp.prototype.isEditing = function () {\n return this.editingCell;\n };\n CellComp.prototype.onKeyDown = function (event) {\n var key = event.which || event.keyCode;\n switch (key) {\n case Constants.KEY_ENTER:\n this.onEnterKeyDown();\n break;\n case Constants.KEY_F2:\n this.onF2KeyDown();\n break;\n case Constants.KEY_ESCAPE:\n this.onEscapeKeyDown();\n break;\n case Constants.KEY_TAB:\n this.onTabKeyDown(event);\n break;\n case Constants.KEY_BACKSPACE:\n case Constants.KEY_DELETE:\n this.onBackspaceOrDeleteKeyPressed(key);\n break;\n case Constants.KEY_DOWN:\n case Constants.KEY_UP:\n case Constants.KEY_RIGHT:\n case Constants.KEY_LEFT:\n this.onNavigationKeyPressed(event, key);\n break;\n }\n };\n CellComp.prototype.setFocusOutOnEditor = function () {\n if (this.editingCell && this.cellEditor && this.cellEditor.focusOut) {\n this.cellEditor.focusOut();\n }\n };\n CellComp.prototype.onNavigationKeyPressed = function (event, key) {\n if (this.editingCell) {\n return;\n }\n if (event.shiftKey && this.rangeSelectionEnabled) {\n this.onShiftRangeSelect(key);\n }\n else {\n this.beans.rowRenderer.navigateToNextCell(event, key, this.cellPosition, true);\n }\n // if we don't prevent default, the grid will scroll with the navigation keys\n event.preventDefault();\n };\n CellComp.prototype.onShiftRangeSelect = function (key) {\n if (!this.beans.rangeController) {\n return;\n }\n var endCell = this.beans.rangeController.extendLatestRangeInDirection(key);\n if (endCell) {\n this.beans.rowRenderer.ensureCellVisible(endCell);\n }\n };\n CellComp.prototype.onTabKeyDown = function (event) {\n this.beans.rowRenderer.onTabKeyDown(this, event);\n };\n CellComp.prototype.onBackspaceOrDeleteKeyPressed = function (key) {\n if (!this.editingCell) {\n this.startRowOrCellEdit(key);\n }\n };\n CellComp.prototype.onEnterKeyDown = function () {\n if (this.editingCell || this.rowComp.isEditing()) {\n this.stopEditingAndFocus();\n }\n else {\n if (this.beans.gridOptionsWrapper.isEnterMovesDown()) {\n this.beans.rowRenderer.navigateToNextCell(null, Constants.KEY_DOWN, this.cellPosition, false);\n }\n else {\n this.startRowOrCellEdit(Constants.KEY_ENTER);\n }\n }\n };\n CellComp.prototype.navigateAfterEdit = function () {\n var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();\n if (fullRowEdit) {\n return;\n }\n var enterMovesDownAfterEdit = this.beans.gridOptionsWrapper.isEnterMovesDownAfterEdit();\n if (enterMovesDownAfterEdit) {\n this.beans.rowRenderer.navigateToNextCell(null, Constants.KEY_DOWN, this.cellPosition, false);\n }\n };\n CellComp.prototype.onF2KeyDown = function () {\n if (!this.editingCell) {\n this.startRowOrCellEdit(Constants.KEY_F2);\n }\n };\n CellComp.prototype.onEscapeKeyDown = function () {\n if (this.editingCell) {\n this.stopRowOrCellEdit(true);\n this.focusCell(true);\n }\n };\n CellComp.prototype.onKeyPress = function (event) {\n // check this, in case focus is on a (for example) a text field inside the cell,\n // in which cse we should not be listening for these key pressed\n var eventTarget = _.getTarget(event);\n var eventOnChildComponent = eventTarget !== this.getGui();\n if (eventOnChildComponent || this.editingCell) {\n return;\n }\n var pressedChar = String.fromCharCode(event.charCode);\n if (pressedChar === ' ') {\n this.onSpaceKeyPressed(event);\n }\n else {\n if (_.isEventFromPrintableCharacter(event)) {\n this.startRowOrCellEdit(null, pressedChar);\n // if we don't prevent default, then the keypress also gets applied to the text field\n // (at least when doing the default editor), but we need to allow the editor to decide\n // what it wants to do. we only do this IF editing was started - otherwise it messes\n // up when the use is not doing editing, but using rendering with text fields in cellRenderer\n // (as it would block the the user from typing into text fields).\n event.preventDefault();\n }\n }\n };\n CellComp.prototype.onSpaceKeyPressed = function (event) {\n if (!this.editingCell && this.beans.gridOptionsWrapper.isRowSelection()) {\n var selected = this.rowNode.isSelected();\n this.rowNode.setSelected(!selected);\n }\n // prevent default as space key, by default, moves browser scroll down\n event.preventDefault();\n };\n CellComp.prototype.onMouseDown = function (mouseEvent) {\n // we only need to pass true to focusCell in when the browser is IE\n // and we are trying to focus a cell (has ag-cell class), otherwise\n // we pass false, as we don't want the cell to focus also get the browser\n // focus. if we did, then the cellRenderer could have a text field in it,\n // for example, and as the user clicks on the text field, the text field,\n // the focus doesn't get to the text field, instead to goes to the div\n // behind, making it impossible to select the text field.\n var forceBrowserFocus = false;\n var button = mouseEvent.button, ctrlKey = mouseEvent.ctrlKey, metaKey = mouseEvent.metaKey, shiftKey = mouseEvent.shiftKey, target = mouseEvent.target;\n var _a = this.beans, eventService = _a.eventService, rangeController = _a.rangeController;\n if (rangeController) {\n var cellInRange = rangeController.isCellInAnyRange(this.getCellPosition());\n if (cellInRange && button === 2) {\n return;\n }\n }\n if (_.isBrowserIE() || _.isBrowserEdge()) {\n if (this.getGui().contains(target)) {\n forceBrowserFocus = true;\n }\n }\n if (!shiftKey || (rangeController && !rangeController.getCellRanges().length)) {\n this.focusCell(forceBrowserFocus);\n }\n else {\n // if a range is being changed, we need to make sure the focused cell does not change.\n mouseEvent.preventDefault();\n }\n // if we are clicking on a checkbox, we need to make sure the cell wrapping that checkbox\n // is focused but we don't want to change the range selection, so return here.\n if (_.isElementChildOfClass(target, 'ag-selection-checkbox', 3)) {\n return;\n }\n // if it's a right click, then if the cell is already in range,\n // don't change the range, however if the cell is not in a range,\n // we set a new range\n var leftMouseButtonClick = _.isLeftClick(mouseEvent);\n if (leftMouseButtonClick && rangeController) {\n var thisCell = this.cellPosition;\n if (shiftKey) {\n rangeController.extendLatestRangeToCell(thisCell);\n }\n else {\n var ctrlKeyPressed = ctrlKey || metaKey;\n rangeController.setRangeToCell(thisCell, ctrlKeyPressed);\n }\n }\n var cellMouseDownEvent = this.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_DOWN);\n eventService.dispatchEvent(cellMouseDownEvent);\n };\n // returns true if on iPad and this is second 'click' event in 200ms\n CellComp.prototype.isDoubleClickOnIPad = function () {\n if (_.isIOSUserAgent() && !_.isEventSupported('dblclick')) {\n return false;\n }\n var nowMillis = new Date().getTime();\n var res = nowMillis - this.lastIPadMouseClickEvent < 200;\n this.lastIPadMouseClickEvent = nowMillis;\n return res;\n };\n CellComp.prototype.onCellClicked = function (mouseEvent) {\n // iPad doesn't have double click - so we need to mimic it do enable editing for\n // iPad.\n if (this.isDoubleClickOnIPad()) {\n this.onCellDoubleClicked(mouseEvent);\n mouseEvent.preventDefault(); // if we don't do this, then iPad zooms in\n return;\n }\n var cellClickedEvent = this.createEvent(mouseEvent, Events.EVENT_CELL_CLICKED);\n this.beans.eventService.dispatchEvent(cellClickedEvent);\n var colDef = this.getComponentHolder();\n if (colDef.onCellClicked) {\n // to make callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellClicked(cellClickedEvent); }, 0);\n }\n var editOnSingleClick = (this.beans.gridOptionsWrapper.isSingleClickEdit() || colDef.singleClickEdit)\n && !this.beans.gridOptionsWrapper.isSuppressClickEdit();\n if (editOnSingleClick) {\n this.startRowOrCellEdit();\n }\n };\n CellComp.prototype.createGridCellVo = function () {\n this.cellPosition = {\n rowIndex: this.rowNode.rowIndex,\n rowPinned: this.rowNode.rowPinned,\n column: this.column\n };\n };\n CellComp.prototype.getCellPosition = function () {\n return this.cellPosition;\n };\n CellComp.prototype.getParentRow = function () {\n return this.eParentRow;\n };\n CellComp.prototype.setParentRow = function (eParentRow) {\n this.eParentRow = eParentRow;\n };\n CellComp.prototype.getColumn = function () {\n return this.column;\n };\n CellComp.prototype.getComponentHolder = function () {\n return this.column.getColDef();\n };\n CellComp.prototype.detach = function () {\n this.eParentRow.removeChild(this.getGui());\n };\n // if the row is also getting destroyed, then we don't need to remove from dom,\n // as the row will also get removed, so no need to take out the cells from the row\n // if the row is going (removing is an expensive operation, so only need to remove\n // the top part)\n CellComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.stopEditing();\n if (this.cellRenderer && this.cellRenderer.destroy) {\n this.cellRenderer.destroy();\n this.cellRenderer = null;\n }\n if (this.selectionHandle) {\n this.selectionHandle.destroy();\n }\n };\n CellComp.prototype.onLeftChanged = function () {\n var left = this.modifyLeftForPrintLayout(this.getCellLeft());\n this.getGui().style.left = left + 'px';\n };\n CellComp.prototype.modifyLeftForPrintLayout = function (leftPosition) {\n if (!this.printLayout) {\n return leftPosition;\n }\n if (this.column.getPinned() === Constants.PINNED_LEFT) {\n return leftPosition;\n }\n if (this.column.getPinned() === Constants.PINNED_RIGHT) {\n var leftWidth_1 = this.beans.columnController.getPinnedLeftContainerWidth();\n var bodyWidth = this.beans.columnController.getBodyContainerWidth();\n return leftWidth_1 + bodyWidth + leftPosition;\n }\n // is in body\n var leftWidth = this.beans.columnController.getPinnedLeftContainerWidth();\n return leftWidth + leftPosition;\n };\n CellComp.prototype.onWidthChanged = function () {\n var width = this.getCellWidth();\n this.getGui().style.width = width + 'px';\n };\n CellComp.prototype.getRangeBorders = function () {\n var _this = this;\n var isRtl = this.beans.gridOptionsWrapper.isEnableRtl();\n var top = false;\n var right = false;\n var bottom = false;\n var left = false;\n var thisCol = this.cellPosition.column;\n var rangeController = this.beans.rangeController;\n var leftCol;\n var rightCol;\n if (isRtl) {\n leftCol = this.beans.columnController.getDisplayedColAfter(thisCol);\n rightCol = this.beans.columnController.getDisplayedColBefore(thisCol);\n }\n else {\n leftCol = this.beans.columnController.getDisplayedColBefore(thisCol);\n rightCol = this.beans.columnController.getDisplayedColAfter(thisCol);\n }\n var ranges = rangeController.getCellRanges().filter(function (range) { return rangeController.isCellInSpecificRange(_this.cellPosition, range); });\n // this means we are the first column in the grid\n if (!leftCol) {\n left = true;\n }\n // this means we are the last column in the grid\n if (!rightCol) {\n right = true;\n }\n for (var i = 0; i < ranges.length; i++) {\n if (top && right && bottom && left) {\n break;\n }\n var range = ranges[i];\n var startRow = rangeController.getRangeStartRow(range);\n var endRow = rangeController.getRangeEndRow(range);\n if (!top && this.beans.rowPositionUtils.sameRow(startRow, this.cellPosition)) {\n top = true;\n }\n if (!bottom && this.beans.rowPositionUtils.sameRow(endRow, this.cellPosition)) {\n bottom = true;\n }\n if (!left && range.columns.indexOf(leftCol) < 0) {\n left = true;\n }\n if (!right && range.columns.indexOf(rightCol) < 0) {\n right = true;\n }\n }\n return { top: top, right: right, bottom: bottom, left: left };\n };\n CellComp.prototype.getInitialRangeClasses = function () {\n var res = [];\n if (!this.rangeSelectionEnabled || !this.rangeCount) {\n return res;\n }\n var beans = this.beans;\n var rangeController = beans.rangeController;\n res.push('ag-cell-range-selected');\n if (this.hasChartRange) {\n res.push('ag-cell-range-chart');\n }\n var count = Math.min(this.rangeCount, 4);\n res.push(\"ag-cell-range-selected-\" + count);\n if (this.rangeCount === 1 && !rangeController.isMoreThanOneCell()) {\n res.push('ag-cell-range-single-cell');\n }\n if (this.rangeCount > 0) {\n var borders = this.getRangeBorders();\n if (borders.top) {\n res.push('ag-cell-range-top');\n }\n if (borders.right) {\n res.push('ag-cell-range-right');\n }\n if (borders.bottom) {\n res.push('ag-cell-range-bottom');\n }\n if (borders.left) {\n res.push('ag-cell-range-left');\n }\n }\n if (!!this.selectionHandle) {\n res.push('ag-cell-range-handle');\n }\n return res;\n };\n CellComp.prototype.onRowIndexChanged = function () {\n // when index changes, this influences items that need the index, so we update the\n // grid cell so they are working off the new index.\n this.createGridCellVo();\n // when the index of the row changes, ie means the cell may have lost or gained focus\n this.onCellFocused();\n // check range selection\n this.onRangeSelectionChanged();\n };\n CellComp.prototype.onRangeSelectionChanged = function () {\n if (!this.beans.rangeController) {\n return;\n }\n var _a = this, beans = _a.beans, cellPosition = _a.cellPosition, rangeCount = _a.rangeCount;\n var rangeController = beans.rangeController;\n var newRangeCount = rangeController.getCellRangeCount(cellPosition);\n var element = this.getGui();\n if (rangeCount !== newRangeCount) {\n _.addOrRemoveCssClass(element, 'ag-cell-range-selected', newRangeCount !== 0);\n _.addOrRemoveCssClass(element, 'ag-cell-range-selected-1', newRangeCount === 1);\n _.addOrRemoveCssClass(element, 'ag-cell-range-selected-2', newRangeCount === 2);\n _.addOrRemoveCssClass(element, 'ag-cell-range-selected-3', newRangeCount === 3);\n _.addOrRemoveCssClass(element, 'ag-cell-range-selected-4', newRangeCount >= 4);\n this.rangeCount = newRangeCount;\n }\n var hasChartRange = this.rangeCount && rangeController.getCellRanges().every(function (range) { return _.exists(range.type); });\n if (this.hasChartRange !== hasChartRange) {\n _.addOrRemoveCssClass(element, 'ag-cell-range-chart', hasChartRange);\n this.hasChartRange = hasChartRange;\n }\n this.updateRangeBorders();\n var isSingleCell = this.rangeCount === 1 && !rangeController.isMoreThanOneCell();\n _.addOrRemoveCssClass(element, 'ag-cell-range-single-cell', isSingleCell);\n this.refreshHandle();\n _.addOrRemoveCssClass(element, 'ag-cell-range-handle', !!this.selectionHandle);\n };\n CellComp.prototype.shouldHaveSelectionHandle = function () {\n var _a = this.beans, gridOptionsWrapper = _a.gridOptionsWrapper, rangeController = _a.rangeController;\n var el = this.getGui();\n var cellRanges = rangeController.getCellRanges();\n var rangesLen = cellRanges.length;\n if (!rangesLen) {\n return false;\n }\n var lastRange = _.last(cellRanges);\n var isFirstRangeCategory = cellRanges[0].type === CellRangeType.DIMENSION;\n var handlesAllowed = (gridOptionsWrapper.isEnableFillHandle() ||\n gridOptionsWrapper.isEnableRangeHandle() ||\n this.hasChartRange && !isFirstRangeCategory) && rangesLen === 1 &&\n !this.editingCell;\n if (!handlesAllowed && this.hasChartRange) {\n var cellPosition = this.getCellPosition();\n handlesAllowed =\n isFirstRangeCategory &&\n rangesLen === 2 &&\n rangeController.isCellInSpecificRange(this.getCellPosition(), lastRange);\n var isCategory = isFirstRangeCategory &&\n rangeController.isCellInSpecificRange(cellPosition, cellRanges[0]);\n _.addOrRemoveCssClass(el, 'ag-cell-range-chart-category', isCategory);\n }\n return this.rangeCount &&\n handlesAllowed &&\n lastRange.endRow != null &&\n this.beans.rangeController.isContiguousRange(lastRange) &&\n (_.containsClass(el, 'ag-cell-range-single-cell') ||\n (_.containsClass(el, 'ag-cell-range-bottom') && _.containsClass(el, 'ag-cell-range-right')));\n };\n CellComp.prototype.addSelectionHandle = function () {\n var _a = this.beans, gridOptionsWrapper = _a.gridOptionsWrapper, context = _a.context, rangeController = _a.rangeController;\n var cellRangeType = _.last(rangeController.getCellRanges()).type;\n var type = (gridOptionsWrapper.isEnableFillHandle() && _.missing(cellRangeType)) ? 'fill' : 'range';\n if (this.selectionHandle && this.selectionHandle.getType() !== type) {\n this.selectionHandle.destroy();\n this.selectionHandle = undefined;\n }\n if (!this.selectionHandle) {\n this.selectionHandle = context.createComponentFromElement(document.createElement(\"ag-\" + type + \"-handle\"));\n }\n this.selectionHandle.refresh(this);\n };\n CellComp.prototype.updateRangeBordersIfRangeCount = function () {\n // we only need to update range borders if we are in a range\n if (this.rangeCount > 0) {\n this.updateRangeBorders();\n this.refreshHandle();\n }\n };\n CellComp.prototype.refreshHandle = function () {\n if (!this.beans.rangeController) {\n return;\n }\n var shouldHaveSelectionHandle = this.shouldHaveSelectionHandle();\n if (this.selectionHandle && !shouldHaveSelectionHandle) {\n this.selectionHandle.destroy();\n this.selectionHandle = null;\n }\n if (shouldHaveSelectionHandle) {\n this.addSelectionHandle();\n }\n };\n CellComp.prototype.updateRangeBorders = function () {\n var rangeBorders = this.getRangeBorders();\n var isSingleCell = this.rangeCount === 1 && !this.beans.rangeController.isMoreThanOneCell();\n var isTop = !isSingleCell && rangeBorders.top;\n var isRight = !isSingleCell && rangeBorders.right;\n var isBottom = !isSingleCell && rangeBorders.bottom;\n var isLeft = !isSingleCell && rangeBorders.left;\n var element = this.getGui();\n _.addOrRemoveCssClass(element, 'ag-cell-range-top', isTop);\n _.addOrRemoveCssClass(element, 'ag-cell-range-right', isRight);\n _.addOrRemoveCssClass(element, 'ag-cell-range-bottom', isBottom);\n _.addOrRemoveCssClass(element, 'ag-cell-range-left', isLeft);\n };\n CellComp.prototype.onFirstRightPinnedChanged = function () {\n var firstRightPinned = this.column.isFirstRightPinned();\n if (this.firstRightPinned !== firstRightPinned) {\n this.firstRightPinned = firstRightPinned;\n _.addOrRemoveCssClass(this.getGui(), 'ag-cell-first-right-pinned', firstRightPinned);\n }\n };\n CellComp.prototype.onLastLeftPinnedChanged = function () {\n var lastLeftPinned = this.column.isLastLeftPinned();\n if (this.lastLeftPinned !== lastLeftPinned) {\n this.lastLeftPinned = lastLeftPinned;\n _.addOrRemoveCssClass(this.getGui(), 'ag-cell-last-left-pinned', lastLeftPinned);\n }\n };\n CellComp.prototype.populateTemplate = function () {\n if (this.usingWrapper) {\n this.eParentOfValue = this.getRefElement('eCellValue');\n this.eCellWrapper = this.getRefElement('eCellWrapper');\n if (this.includeRowDraggingComponent) {\n this.addRowDragging();\n }\n if (this.includeDndSourceComponent) {\n this.addDndSource();\n }\n if (this.includeSelectionComponent) {\n this.addSelectionCheckbox();\n }\n }\n else {\n this.eParentOfValue = this.getGui();\n }\n };\n CellComp.prototype.getFrameworkOverrides = function () {\n return this.beans.frameworkOverrides;\n };\n CellComp.prototype.addRowDragging = function () {\n var pagination = this.beans.gridOptionsWrapper.isPagination();\n var rowDragManaged = this.beans.gridOptionsWrapper.isRowDragManaged();\n var clientSideRowModelActive = this.beans.gridOptionsWrapper.isRowModelDefault();\n if (rowDragManaged) {\n // row dragging only available in default row model\n if (!clientSideRowModelActive) {\n _.doOnce(function () { return console.warn('ag-Grid: managed row dragging is only allowed in the Client Side Row Model'); }, 'CellComp.addRowDragging');\n return;\n }\n if (pagination) {\n _.doOnce(function () { return console.warn('ag-Grid: managed row dragging is not possible when doing pagination'); }, 'CellComp.addRowDragging');\n return;\n }\n }\n var rowDraggingComp = new RowDragComp(this.rowNode, this.column, this.getValueToUse(), this.beans);\n this.addFeature(rowDraggingComp, this.beans.context);\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(rowDraggingComp.getGui(), this.eParentOfValue);\n };\n CellComp.prototype.addDndSource = function () {\n var dndSourceComp = new DndSourceComp(this.rowNode, this.column, this.getValueToUse(), this.beans, this.getGui());\n this.addFeature(dndSourceComp, this.beans.context);\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(dndSourceComp.getGui(), this.eParentOfValue);\n };\n CellComp.prototype.addSelectionCheckbox = function () {\n var cbSelectionComponent = new CheckboxSelectionComponent();\n this.beans.context.wireBean(cbSelectionComponent);\n var visibleFunc = this.getComponentHolder().checkboxSelection;\n visibleFunc = typeof visibleFunc === 'function' ? visibleFunc : null;\n cbSelectionComponent.init({ rowNode: this.rowNode, column: this.column, visibleFunc: visibleFunc });\n this.addDestroyFunc(function () { return cbSelectionComponent.destroy(); });\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(cbSelectionComponent.getGui(), this.eParentOfValue);\n };\n CellComp.prototype.addDomData = function () {\n var _this = this;\n var element = this.getGui();\n this.beans.gridOptionsWrapper.setDomData(element, CellComp.DOM_DATA_KEY_CELL_COMP, this);\n this.addDestroyFunc(function () {\n return _this.beans.gridOptionsWrapper.setDomData(element, CellComp.DOM_DATA_KEY_CELL_COMP, null);\n });\n };\n CellComp.prototype.onCellFocused = function (event) {\n var cellFocused = this.beans.focusedCellController.isCellFocused(this.cellPosition);\n // see if we need to change the classes on this cell\n if (cellFocused !== this.cellFocused) {\n // if we are not doing cell selection, then the focus class does not change\n var doingFocusCss = !this.beans.gridOptionsWrapper.isSuppressCellSelection();\n if (doingFocusCss) {\n _.addOrRemoveCssClass(this.getGui(), 'ag-cell-focus', cellFocused);\n }\n this.cellFocused = cellFocused;\n }\n // see if we need to force browser focus - this can happen if focus is programmatically set\n if (cellFocused && event && event.forceBrowserFocus) {\n this.getGui().focus();\n // Fix for AG-3465 \"IE11 - After editing cell's content, selection doesn't go one cell below on enter\"\n // IE can fail to focus the cell after the first call to focus(), and needs a second call\n if (!document.activeElement || document.activeElement === document.body) {\n this.getGui().focus();\n }\n }\n // if another cell was focused, and we are editing, then stop editing\n var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();\n if (!cellFocused && !fullRowEdit && this.editingCell) {\n this.stopRowOrCellEdit();\n }\n };\n // pass in 'true' to cancel the editing.\n CellComp.prototype.stopRowOrCellEdit = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n if (this.beans.gridOptionsWrapper.isFullRowEdit()) {\n this.rowComp.stopRowEditing(cancel);\n }\n else {\n this.stopEditing(cancel);\n }\n };\n CellComp.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n if (!this.editingCell) {\n return;\n }\n // if no cell editor, this means due to async, that the cell editor never got initialised,\n // so we just carry on regardless as if the editing was never started.\n if (!this.cellEditor) {\n this.editingCell = false;\n return;\n }\n var newValueExists = false;\n var newValue;\n if (!cancel) {\n // also have another option here to cancel after editing, so for example user could have a popup editor and\n // it is closed by user clicking outside the editor. then the editor will close automatically (with false\n // passed above) and we need to see if the editor wants to accept the new value.\n var userWantsToCancel = this.cellEditor.isCancelAfterEnd && this.cellEditor.isCancelAfterEnd();\n if (!userWantsToCancel) {\n newValue = this.cellEditor.getValue();\n newValueExists = true;\n }\n }\n // it is important we set this after setValue() above, as otherwise the cell will flash\n // when editing stops. the 'refresh' method checks editing, and doesn't refresh editing cells.\n // thus it will skip the refresh on this cell until the end of this method where we call\n // refresh directly and we suppress the flash.\n this.editingCell = false;\n if (this.cellEditor.destroy) {\n this.cellEditor.destroy();\n }\n // important to clear this out - as parts of the code will check for\n // this to see if an async cellEditor has yet to be created\n this.cellEditor = null;\n if (this.cellEditorInPopup && this.hideEditorPopup) {\n this.hideEditorPopup();\n this.hideEditorPopup = null;\n }\n else {\n _.clearElement(this.getGui());\n // put the cell back the way it was before editing\n if (this.usingWrapper) {\n // if wrapper, then put the wrapper back\n this.getGui().appendChild(this.eCellWrapper);\n }\n else {\n // if cellRenderer, then put the gui back in. if the renderer has\n // a refresh, it will be called. however if it doesn't, then later\n // the renderer will be destroyed and a new one will be created.\n if (this.cellRenderer) {\n // we know it's a dom element (not a string) because we converted\n // it after the gui was attached if it was a string.\n var eCell = this.cellRendererGui;\n // can be null if cell was previously null / contained empty string,\n // this will result in new value not being rendered.\n if (eCell) {\n this.getGui().appendChild(eCell);\n }\n }\n }\n }\n this.setInlineEditingClass();\n if (newValueExists) {\n // we suppressRefreshCell because the call to rowNode.setDataValue() results in change detection\n // getting triggered, which results in all cells getting refreshed. we do not want this refresh\n // to happen on this call as we want to call it explicitly below. otherwise refresh gets called twice.\n // if we only did this refresh (and not the one below) then the cell would flash and not be forced.\n this.suppressRefreshCell = true;\n this.rowNode.setDataValue(this.column, newValue);\n this.suppressRefreshCell = false;\n }\n // we suppress the flash, as it is not correct to flash the cell the user has finished editing,\n // the user doesn't need to flash as they were the one who did the edit, the flash is pointless\n // (as the flash is meant to draw the user to a change that they didn't manually do themselves).\n this.refreshCell({ forceRefresh: true, suppressFlash: true });\n var event = this.createEvent(null, Events.EVENT_CELL_EDITING_STOPPED);\n this.beans.eventService.dispatchEvent(event);\n };\n CellComp.DOM_DATA_KEY_CELL_COMP = 'cellComp';\n CellComp.CELL_RENDERER_TYPE_NORMAL = 'cellRenderer';\n CellComp.CELL_RENDERER_TYPE_PINNED = 'pinnedRowCellRenderer';\n return CellComp;\n}(Component));\nexport { CellComp };\n","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func) {\n var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 166;\n var timeout;\n\n function debounced() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n // eslint-disable-next-line consistent-this\n var that = this;\n\n var later = function later() {\n func.apply(that, args);\n };\n\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n\n debounced.clear = function () {\n clearTimeout(timeout);\n };\n\n return debounced;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\n/**\n * These keys are used for validating properties supplied on a gridOptions object, and for code generation.\n * If you change the properties on the gridOptions interface, you *must* update this file as well to be consistent.\n */\nvar PropertyKeys = /** @class */ (function () {\n function PropertyKeys() {\n }\n PropertyKeys.STRING_PROPERTIES = [\n 'sortingOrder', 'rowClass', 'rowSelection', 'overlayLoadingTemplate',\n 'overlayNoRowsTemplate', 'quickFilterText', 'rowModelType',\n 'editType', 'domLayout', 'clipboardDeliminator', 'rowGroupPanelShow',\n 'multiSortKey', 'pivotColumnGroupTotals', 'pivotRowTotals', 'pivotPanelShow'\n ];\n PropertyKeys.OBJECT_PROPERTIES = [\n 'components', 'frameworkComponents', 'rowStyle', 'context', 'autoGroupColumnDef', 'groupColumnDef', 'localeText',\n 'icons', 'datasource', 'serverSideDatasource', 'viewportDatasource', 'groupRowRendererParams', 'aggFuncs',\n 'fullWidthCellRendererParams', 'defaultColGroupDef', 'defaultColDef', 'defaultExportParams', 'columnTypes',\n 'rowClassRules', 'detailGridOptions', 'detailCellRendererParams', 'loadingCellRendererParams', 'loadingOverlayComponentParams',\n 'noRowsOverlayComponentParams', 'popupParent', 'colResizeDefault', 'reduxStore', 'statusBar', 'sideBar'\n ];\n PropertyKeys.ARRAY_PROPERTIES = [\n 'slaveGrids', 'alignedGrids', 'rowData', 'columnDefs', 'excelStyles', 'pinnedTopRowData', 'pinnedBottomRowData'\n ];\n PropertyKeys.NUMBER_PROPERTIES = [\n 'rowHeight', 'detailRowHeight', 'rowBuffer', 'colWidth', 'headerHeight', 'groupHeaderHeight',\n 'floatingFiltersHeight', 'pivotHeaderHeight', 'pivotGroupHeaderHeight', 'groupDefaultExpanded',\n 'minColWidth', 'maxColWidth', 'viewportRowModelPageSize', 'viewportRowModelBufferSize',\n 'autoSizePadding', 'maxBlocksInCache', 'maxConcurrentDatasourceRequests',\n 'cacheOverflowSize', 'paginationPageSize', 'cacheBlockSize', 'infiniteInitialRowCount',\n 'scrollbarWidth', 'paginationStartPage', 'infiniteBlockSize', 'batchUpdateWaitMillis',\n 'blockLoadDebounceMillis', 'keepDetailRowsCount'\n ];\n PropertyKeys.BOOLEAN_PROPERTIES = [\n 'toolPanelSuppressRowGroups', 'toolPanelSuppressValues', 'toolPanelSuppressPivots', 'toolPanelSuppressPivotMode',\n 'toolPanelSuppressSideButtons', 'toolPanelSuppressColumnFilter', 'toolPanelSuppressColumnSelectAll',\n 'toolPanelSuppressColumnExpandAll', 'suppressMakeColumnVisibleAfterUnGroup', 'suppressRowClickSelection',\n 'suppressCellSelection', 'suppressHorizontalScroll', 'alwaysShowVerticalScroll', 'debug', 'enableBrowserTooltips', 'enableColResize',\n 'enableCellExpressions', 'enableSorting', 'enableServerSideSorting', 'enableFilter', 'enableServerSideFilter',\n 'angularCompileRows', 'angularCompileFilters', 'angularCompileHeaders', 'groupSuppressAutoColumn', 'groupSelectsChildren',\n 'groupIncludeFooter', 'groupIncludeTotalFooter', 'groupUseEntireRow', 'groupSuppressRow', 'groupSuppressBlankHeader',\n 'forPrint', 'suppressMenuHide', 'rowDeselection', 'unSortIcon', 'suppressMultiSort', 'singleClickEdit',\n 'suppressLoadingOverlay', 'suppressNoRowsOverlay', 'suppressAutoSize', 'suppressParentsInRowNodes', 'showToolPanel',\n 'suppressColumnMoveAnimation', 'suppressMovableColumns', 'suppressFieldDotNotation', 'enableRangeSelection',\n 'enableRangeHandle', 'enableFillHandle', 'suppressClearOnFillReduction', 'deltaSort', 'suppressTouch', 'suppressAsyncEvents',\n 'allowContextMenuWithControlKey', 'suppressContextMenu', 'suppressMenuFilterPanel', 'suppressMenuMainPanel', 'suppressMenuColumnPanel',\n 'rememberGroupStateWhenNewData', 'enableCellChangeFlash', 'suppressDragLeaveHidesColumns', 'suppressMiddleClickScrolls',\n 'suppressPreventDefaultOnMouseWheel', 'suppressUseColIdForGroups', 'suppressCopyRowsToClipboard', 'copyHeadersToClipboard', 'pivotMode',\n 'suppressAggFuncInHeader', 'suppressColumnVirtualisation', 'suppressAggAtRootLevel', 'suppressFocusAfterRefresh', 'functionsPassive',\n 'functionsReadOnly', 'animateRows', 'groupSelectsFiltered', 'groupRemoveSingleChildren', 'groupRemoveLowestSingleChildren', 'enableRtl',\n 'suppressClickEdit', 'rowDragManaged', 'suppressRowDrag', 'enableGroupEdit', 'embedFullWidthRows', 'deprecatedEmbedFullWidthRows',\n 'suppressTabbing', 'suppressPaginationPanel', 'floatingFilter', 'groupHideOpenParents', 'groupMultiAutoColumn', 'pagination',\n 'stopEditingWhenGridLosesFocus', 'paginationAutoPageSize', 'suppressScrollOnNewData', 'purgeClosedRowNodes', 'cacheQuickFilter',\n 'deltaRowDataMode', 'ensureDomOrder', 'accentedSort', 'pivotTotals', 'suppressChangeDetection', 'valueCache', 'valueCacheNeverExpires',\n 'aggregateOnlyChangedColumns', 'suppressAnimationFrame', 'suppressExcelExport', 'suppressCsvExport', 'treeData', 'masterDetail',\n 'suppressMultiRangeSelection', 'enterMovesDownAfterEdit', 'enterMovesDown', 'suppressPropertyNamesCheck', 'rowMultiSelectWithClick',\n 'contractColumnSelection', 'suppressEnterpriseResetOnNewColumns', 'enableOldSetFilterModel', 'suppressRowHoverHighlight',\n 'gridAutoHeight', 'suppressRowTransform', 'suppressClipboardPaste', 'serverSideSortingAlwaysResets', 'reactNext',\n 'suppressSetColumnStateEvents', 'enableCharts', 'deltaColumnMode', 'suppressMaintainUnsortedOrder', 'enableCellTextSelection',\n 'suppressBrowserResizeObserver', 'suppressMaxRenderedRowRestriction', 'excludeChildrenWhenTreeDataFiltering',\n 'keepDetailRows', 'paginateChildRows', 'preventDefaultOnContextMenu'\n ];\n /** You do not need to include event callbacks in this list, as they are generated automatically. */\n PropertyKeys.FUNCTION_PROPERTIES = [\n 'localeTextFunc', 'groupRowInnerRenderer', 'groupRowInnerRendererFramework',\n 'dateComponent', 'dateComponentFramework', 'groupRowRenderer', 'groupRowRendererFramework', 'isExternalFilterPresent',\n 'getRowHeight', 'doesExternalFilterPass', 'getRowClass', 'getRowStyle', 'getRowClassRules',\n 'traverseNode', 'getContextMenuItems', 'getMainMenuItems', 'processRowPostCreate', 'processCellForClipboard',\n 'getNodeChildDetails', 'groupRowAggNodes', 'getRowNodeId', 'isFullWidthCell', 'fullWidthCellRenderer',\n 'fullWidthCellRendererFramework', 'doesDataFlower', 'processSecondaryColDef', 'processSecondaryColGroupDef',\n 'getBusinessKeyForNode', 'sendToClipboard', 'navigateToNextCell', 'tabToNextCell', 'getDetailRowData',\n 'processCellFromClipboard', 'getDocument', 'postProcessPopup', 'getChildCount', 'getDataPath', 'loadingCellRenderer',\n 'loadingCellRendererFramework', 'loadingOverlayComponent', 'loadingOverlayComponentFramework', 'noRowsOverlayComponent',\n 'noRowsOverlayComponentFramework', 'detailCellRenderer', 'detailCellRendererFramework',\n 'defaultGroupSortComparator', 'isRowMaster', 'isRowSelectable', 'postSort', 'processHeaderForClipboard',\n 'paginationNumberFormatter', 'processDataFromClipboard', 'getServerSideGroupKey', 'isServerSideGroup',\n 'suppressKeyboardEvent', 'createChartContainer', 'processChartOptions', 'getChartToolbarItems', 'fillOperation'\n ];\n PropertyKeys.ALL_PROPERTIES = __spreadArrays(PropertyKeys.ARRAY_PROPERTIES, PropertyKeys.OBJECT_PROPERTIES, PropertyKeys.STRING_PROPERTIES, PropertyKeys.NUMBER_PROPERTIES, PropertyKeys.FUNCTION_PROPERTIES, PropertyKeys.BOOLEAN_PROPERTIES);\n /**\n * Used when performing property checks. This avoids noise caused when using frameworks, which can add their own\n * framework-specific properties to colDefs, gridOptions etc.\n */\n PropertyKeys.FRAMEWORK_PROPERTIES = [\n '__ob__', '__metadata__', 'mappedColumnProperties', 'hasChildColumns', 'toColDef', 'createColDefFromGridColumn'\n ];\n return PropertyKeys;\n}());\nexport { PropertyKeys };\n","var __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};\nimport { _, Autowired, Bean, ChangedPath, Constants as constants, Constants, Events, GridOptionsWrapper, Optional, PostConstruct, RowNode } from \"@ag-grid-community/core\";\nimport { ClientSideNodeManager } from \"./clientSideNodeManager\";\nvar RecursionType;\n(function (RecursionType) {\n RecursionType[RecursionType[\"Normal\"] = 0] = \"Normal\";\n RecursionType[RecursionType[\"AfterFilter\"] = 1] = \"AfterFilter\";\n RecursionType[RecursionType[\"AfterFilterAndSort\"] = 2] = \"AfterFilterAndSort\";\n RecursionType[RecursionType[\"PivotNodes\"] = 3] = \"PivotNodes\";\n})(RecursionType || (RecursionType = {}));\nvar ClientSideRowModel = /** @class */ (function () {\n function ClientSideRowModel() {\n }\n ClientSideRowModel.prototype.init = function () {\n var refreshEverythingFunc = this.refreshModel.bind(this, { step: Constants.STEP_EVERYTHING });\n var refreshEverythingAfterColsChangedFunc = this.refreshModel.bind(this, { step: Constants.STEP_EVERYTHING, afterColumnsChanged: true });\n this.eventService.addModalPriorityEventListener(Events.EVENT_COLUMN_EVERYTHING_CHANGED, refreshEverythingAfterColsChangedFunc);\n this.eventService.addModalPriorityEventListener(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, refreshEverythingFunc);\n this.eventService.addModalPriorityEventListener(Events.EVENT_COLUMN_VALUE_CHANGED, this.onValueChanged.bind(this));\n this.eventService.addModalPriorityEventListener(Events.EVENT_COLUMN_PIVOT_CHANGED, this.refreshModel.bind(this, { step: Constants.STEP_PIVOT }));\n this.eventService.addModalPriorityEventListener(Events.EVENT_ROW_GROUP_OPENED, this.onRowGroupOpened.bind(this));\n this.eventService.addModalPriorityEventListener(Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.eventService.addModalPriorityEventListener(Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.eventService.addModalPriorityEventListener(Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, refreshEverythingFunc);\n var refreshMapFunc = this.refreshModel.bind(this, {\n step: Constants.STEP_MAP,\n keepRenderedRows: true,\n animate: true\n });\n this.gridOptionsWrapper.addEventListener(GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN, refreshMapFunc);\n this.gridOptionsWrapper.addEventListener(GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN, refreshMapFunc);\n this.rootNode = new RowNode();\n this.nodeManager = new ClientSideNodeManager(this.rootNode, this.gridOptionsWrapper, this.context, this.eventService, this.columnController, this.gridApi, this.columnApi, this.selectionController);\n this.context.wireBean(this.rootNode);\n };\n ClientSideRowModel.prototype.start = function () {\n var rowData = this.gridOptionsWrapper.getRowData();\n if (rowData) {\n this.setRowData(rowData);\n }\n };\n ClientSideRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n var atLeastOneChange;\n var res = false;\n // we do this multiple times as changing the row heights can also change the first and last rows,\n // so the first pass can make lots of rows smaller, which means the second pass we end up changing\n // more rows.\n do {\n atLeastOneChange = false;\n var rowAtStartPixel = this.getRowIndexAtPixel(startPixel);\n var rowAtEndPixel = this.getRowIndexAtPixel(endPixel);\n // keep check to current page if doing pagination\n var firstRow = Math.max(rowAtStartPixel, startLimitIndex);\n var lastRow = Math.min(rowAtEndPixel, endLimitIndex);\n for (var rowIndex = firstRow; rowIndex <= lastRow; rowIndex++) {\n var rowNode = this.getRow(rowIndex);\n if (rowNode.rowHeightEstimated) {\n var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(rowNode);\n rowNode.setRowHeight(rowHeight.height);\n atLeastOneChange = true;\n res = true;\n }\n }\n if (atLeastOneChange) {\n this.setRowTops();\n }\n } while (atLeastOneChange);\n return res;\n };\n ClientSideRowModel.prototype.setRowTops = function () {\n var nextRowTop = 0;\n for (var i = 0; i < this.rowsToDisplay.length; i++) {\n // we don't estimate if doing fullHeight or autoHeight, as all rows get rendered all the time\n // with these two layouts.\n var allowEstimate = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_NORMAL;\n var rowNode = this.rowsToDisplay[i];\n if (_.missing(rowNode.rowHeight)) {\n var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(rowNode, allowEstimate);\n rowNode.setRowHeight(rowHeight.height, rowHeight.estimated);\n }\n rowNode.setRowTop(nextRowTop);\n rowNode.setRowIndex(i);\n nextRowTop += rowNode.rowHeight;\n }\n };\n ClientSideRowModel.prototype.resetRowTops = function (rowNode, changedPath) {\n rowNode.clearRowTop();\n if (rowNode.hasChildren()) {\n if (rowNode.childrenAfterGroup) {\n // if a changedPath is active, it means we are here because of a transaction update or\n // a change detection. neither of these impacts the open/closed state of groups. so if\n // a group is not open this time, it was not open last time. so we know all closed groups\n // already have their top positions cleared. so there is no need to traverse all the way\n // when changedPath is active and the rowNode is not expanded.\n var skipChildren = changedPath.isActive() && !rowNode.expanded;\n if (!skipChildren) {\n for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n this.resetRowTops(rowNode.childrenAfterGroup[i], changedPath);\n }\n }\n }\n if (rowNode.sibling) {\n rowNode.sibling.clearRowTop();\n }\n }\n if (rowNode.detailNode) {\n rowNode.detailNode.clearRowTop();\n }\n };\n // returns false if row was moved, otherwise true\n ClientSideRowModel.prototype.ensureRowAtPixel = function (rowNode, pixel) {\n var indexAtPixelNow = this.getRowIndexAtPixel(pixel);\n var rowNodeAtPixelNow = this.getRow(indexAtPixelNow);\n if (rowNodeAtPixelNow === rowNode) {\n return false;\n }\n _.removeFromArray(this.rootNode.allLeafChildren, rowNode);\n _.insertIntoArray(this.rootNode.allLeafChildren, rowNode, indexAtPixelNow);\n this.refreshModel({\n step: Constants.STEP_EVERYTHING,\n keepRenderedRows: true,\n animate: true,\n keepEditingRows: true\n });\n return true;\n };\n ClientSideRowModel.prototype.isLastRowFound = function () {\n return true;\n };\n ClientSideRowModel.prototype.getRowCount = function () {\n if (this.rowsToDisplay) {\n return this.rowsToDisplay.length;\n }\n else {\n return 0;\n }\n };\n ClientSideRowModel.prototype.getTopLevelRowCount = function () {\n var showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;\n if (showingRootNode) {\n return 1;\n }\n else {\n return this.rootNode.childrenAfterFilter ? this.rootNode.childrenAfterFilter.length : 0;\n }\n };\n ClientSideRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n var showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;\n if (showingRootNode) {\n return topLevelIndex;\n }\n else {\n var rowNode = this.rootNode.childrenAfterSort[topLevelIndex];\n if (this.gridOptionsWrapper.isGroupHideOpenParents()) {\n // if hideOpenParents, and this row open, then this row is now displayed at this index, first child is\n while (rowNode.expanded && rowNode.childrenAfterSort && rowNode.childrenAfterSort.length > 0) {\n rowNode = rowNode.childrenAfterSort[0];\n }\n }\n return rowNode.rowIndex;\n }\n };\n ClientSideRowModel.prototype.getRowBounds = function (index) {\n if (_.missing(this.rowsToDisplay)) {\n return null;\n }\n var rowNode = this.rowsToDisplay[index];\n if (rowNode) {\n return {\n rowTop: rowNode.rowTop,\n rowHeight: rowNode.rowHeight\n };\n }\n else {\n return null;\n }\n };\n ClientSideRowModel.prototype.onRowGroupOpened = function () {\n var animate = this.gridOptionsWrapper.isAnimateRows();\n this.refreshModel({ step: Constants.STEP_MAP, keepRenderedRows: true, animate: animate });\n };\n ClientSideRowModel.prototype.onFilterChanged = function () {\n var animate = this.gridOptionsWrapper.isAnimateRows();\n this.refreshModel({ step: Constants.STEP_FILTER, keepRenderedRows: true, animate: animate });\n };\n ClientSideRowModel.prototype.onSortChanged = function () {\n var animate = this.gridOptionsWrapper.isAnimateRows();\n this.refreshModel({ step: Constants.STEP_SORT, keepRenderedRows: true, animate: animate, keepEditingRows: true });\n };\n ClientSideRowModel.prototype.getType = function () {\n return Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n };\n ClientSideRowModel.prototype.onValueChanged = function () {\n if (this.columnController.isPivotActive()) {\n this.refreshModel({ step: Constants.STEP_PIVOT });\n }\n else {\n this.refreshModel({ step: Constants.STEP_AGGREGATE });\n }\n };\n ClientSideRowModel.prototype.createChangePath = function (rowNodeTransactions) {\n // for updates, if the row is updated at all, then we re-calc all the values\n // in that row. we could compare each value to each old value, however if we\n // did this, we would be calling the valueService twice, once on the old value\n // and once on the new value. so it's less valueGetter calls if we just assume\n // each column is different. that way the changedPath is used so that only\n // the impacted parent rows are recalculated, parents who's children have\n // not changed are not impacted.\n var noTransactions = _.missingOrEmpty(rowNodeTransactions);\n var changedPath = new ChangedPath(false, this.rootNode);\n if (noTransactions || this.gridOptionsWrapper.isTreeData()) {\n changedPath.setInactive();\n }\n return changedPath;\n };\n ClientSideRowModel.prototype.refreshModel = function (params) {\n // this goes through the pipeline of stages. what's in my head is similar\n // to the diagram on this page:\n // http://commons.apache.org/sandbox/commons-pipeline/pipeline_basics.html\n // however we want to keep the results of each stage, hence we manually call\n // each step rather than have them chain each other.\n var _this = this;\n // fallthrough in below switch is on purpose,\n // eg if STEP_FILTER, then all steps below this\n // step get done\n // let start: number;\n // console.log('======= start =======');\n var changedPath = this.createChangePath(params.rowNodeTransactions);\n switch (params.step) {\n case constants.STEP_EVERYTHING:\n // start = new Date().getTime();\n this.doRowGrouping(params.groupState, params.rowNodeTransactions, params.rowNodeOrder, changedPath, params.afterColumnsChanged);\n // console.log('rowGrouping = ' + (new Date().getTime() - start));\n case constants.STEP_FILTER:\n // start = new Date().getTime();\n this.doFilter(changedPath);\n // console.log('filter = ' + (new Date().getTime() - start));\n case constants.STEP_PIVOT:\n this.doPivot(changedPath);\n case constants.STEP_AGGREGATE: // depends on agg fields\n // start = new Date().getTime();\n this.doAggregate(changedPath);\n // console.log('aggregation = ' + (new Date().getTime() - start));\n case constants.STEP_SORT:\n // start = new Date().getTime();\n this.doSort(params.rowNodeTransactions, changedPath);\n // console.log('sort = ' + (new Date().getTime() - start));\n case constants.STEP_MAP:\n // start = new Date().getTime();\n this.doRowsToDisplay();\n // console.log('rowsToDisplay = ' + (new Date().getTime() - start));\n }\n // set all row tops to null, then set row tops on all visible rows. if we don't\n // do this, then the algorithm below only sets row tops, old row tops from old rows\n // will still lie around\n this.resetRowTops(this.rootNode, changedPath);\n this.setRowTops();\n var event = {\n type: Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n animate: params.animate,\n keepRenderedRows: params.keepRenderedRows,\n newData: params.newData,\n newPage: false\n };\n this.eventService.dispatchEvent(event);\n if (this.$scope) {\n window.setTimeout(function () {\n _this.$scope.$apply();\n }, 0);\n }\n };\n ClientSideRowModel.prototype.isEmpty = function () {\n var rowsMissing;\n var doingLegacyTreeData = _.exists(this.gridOptionsWrapper.getNodeChildDetailsFunc());\n if (doingLegacyTreeData) {\n rowsMissing = _.missing(this.rootNode.childrenAfterGroup) || this.rootNode.childrenAfterGroup.length === 0;\n }\n else {\n rowsMissing = _.missing(this.rootNode.allLeafChildren) || this.rootNode.allLeafChildren.length === 0;\n }\n var empty = _.missing(this.rootNode) || rowsMissing || !this.columnController.isReady();\n return empty;\n };\n ClientSideRowModel.prototype.isRowsToRender = function () {\n return _.exists(this.rowsToDisplay) && this.rowsToDisplay.length > 0;\n };\n ClientSideRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n // if lastSelectedNode is missing, we start at the first row\n var firstRowHit = !lastInRange;\n var lastRowHit = false;\n var lastRow;\n var result = [];\n var groupsSelectChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n this.forEachNodeAfterFilterAndSort(function (rowNode) {\n var lookingForLastRow = firstRowHit && !lastRowHit;\n // check if we need to flip the select switch\n if (!firstRowHit) {\n if (rowNode === lastInRange || rowNode === firstInRange) {\n firstRowHit = true;\n }\n }\n var skipThisGroupNode = rowNode.group && groupsSelectChildren;\n if (!skipThisGroupNode) {\n var inRange = firstRowHit && !lastRowHit;\n var childOfLastRow = rowNode.isParentOfNode(lastRow);\n if (inRange || childOfLastRow) {\n result.push(rowNode);\n }\n }\n if (lookingForLastRow) {\n if (rowNode === lastInRange || rowNode === firstInRange) {\n lastRowHit = true;\n if (rowNode === lastInRange) {\n lastRow = lastInRange;\n }\n else {\n lastRow = firstInRange;\n }\n }\n }\n });\n return result;\n };\n ClientSideRowModel.prototype.setDatasource = function (datasource) {\n console.error('ag-Grid: should never call setDatasource on clientSideRowController');\n };\n ClientSideRowModel.prototype.getTopLevelNodes = function () {\n return this.rootNode ? this.rootNode.childrenAfterGroup : null;\n };\n ClientSideRowModel.prototype.getRootNode = function () {\n return this.rootNode;\n };\n ClientSideRowModel.prototype.getRow = function (index) {\n return this.rowsToDisplay[index];\n };\n ClientSideRowModel.prototype.isRowPresent = function (rowNode) {\n return this.rowsToDisplay.indexOf(rowNode) >= 0;\n };\n ClientSideRowModel.prototype.getRowIndexAtPixel = function (pixelToMatch) {\n if (this.isEmpty()) {\n return -1;\n }\n // do binary search of tree\n // http://oli.me.uk/2013/06/08/searching-javascript-arrays-with-a-binary-search/\n var bottomPointer = 0;\n var topPointer = this.rowsToDisplay.length - 1;\n // quick check, if the pixel is out of bounds, then return last row\n if (pixelToMatch <= 0) {\n // if pixel is less than or equal zero, it's always the first row\n return 0;\n }\n var lastNode = _.last(this.rowsToDisplay);\n if (lastNode.rowTop <= pixelToMatch) {\n return this.rowsToDisplay.length - 1;\n }\n while (true) {\n var midPointer = Math.floor((bottomPointer + topPointer) / 2);\n var currentRowNode = this.rowsToDisplay[midPointer];\n if (this.isRowInPixel(currentRowNode, pixelToMatch)) {\n return midPointer;\n }\n else if (currentRowNode.rowTop < pixelToMatch) {\n bottomPointer = midPointer + 1;\n }\n else if (currentRowNode.rowTop > pixelToMatch) {\n topPointer = midPointer - 1;\n }\n }\n };\n ClientSideRowModel.prototype.isRowInPixel = function (rowNode, pixelToMatch) {\n var topPixel = rowNode.rowTop;\n var bottomPixel = rowNode.rowTop + rowNode.rowHeight;\n var pixelInRow = topPixel <= pixelToMatch && bottomPixel > pixelToMatch;\n return pixelInRow;\n };\n ClientSideRowModel.prototype.getCurrentPageHeight = function () {\n if (this.rowsToDisplay && this.rowsToDisplay.length > 0) {\n var lastRow = _.last(this.rowsToDisplay);\n var lastPixel = lastRow.rowTop + lastRow.rowHeight;\n return lastPixel;\n }\n else {\n return 0;\n }\n };\n ClientSideRowModel.prototype.forEachLeafNode = function (callback) {\n if (this.rootNode.allLeafChildren) {\n this.rootNode.allLeafChildren.forEach(function (rowNode, index) { return callback(rowNode, index); });\n }\n };\n ClientSideRowModel.prototype.forEachNode = function (callback) {\n this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterGroup, callback, RecursionType.Normal, 0);\n };\n ClientSideRowModel.prototype.forEachNodeAfterFilter = function (callback) {\n this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterFilter, callback, RecursionType.AfterFilter, 0);\n };\n ClientSideRowModel.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterSort, callback, RecursionType.AfterFilterAndSort, 0);\n };\n ClientSideRowModel.prototype.forEachPivotNode = function (callback) {\n this.recursivelyWalkNodesAndCallback([this.rootNode], callback, RecursionType.PivotNodes, 0);\n };\n // iterates through each item in memory, and calls the callback function\n // nodes - the rowNodes to traverse\n // callback - the user provided callback\n // recursion type - need this to know what child nodes to recurse, eg if looking at all nodes, or filtered notes etc\n // index - works similar to the index in forEach in javascript's array function\n ClientSideRowModel.prototype.recursivelyWalkNodesAndCallback = function (nodes, callback, recursionType, index) {\n if (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n callback(node, index++);\n // go to the next level if it is a group\n if (node.hasChildren()) {\n // depending on the recursion type, we pick a difference set of children\n var nodeChildren = null;\n switch (recursionType) {\n case RecursionType.Normal:\n nodeChildren = node.childrenAfterGroup;\n break;\n case RecursionType.AfterFilter:\n nodeChildren = node.childrenAfterFilter;\n break;\n case RecursionType.AfterFilterAndSort:\n nodeChildren = node.childrenAfterSort;\n break;\n case RecursionType.PivotNodes:\n // for pivot, we don't go below leafGroup levels\n nodeChildren = !node.leafGroup ? node.childrenAfterSort : null;\n break;\n }\n if (nodeChildren) {\n index = this.recursivelyWalkNodesAndCallback(nodeChildren, callback, recursionType, index);\n }\n }\n }\n }\n return index;\n };\n // it's possible to recompute the aggregate without doing the other parts\n // + gridApi.recomputeAggregates()\n ClientSideRowModel.prototype.doAggregate = function (changedPath) {\n if (this.aggregationStage) {\n this.aggregationStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n };\n // + gridApi.expandAll()\n // + gridApi.collapseAll()\n ClientSideRowModel.prototype.expandOrCollapseAll = function (expand) {\n var usingTreeData = this.gridOptionsWrapper.isTreeData();\n if (this.rootNode) {\n recursiveExpandOrCollapse(this.rootNode.childrenAfterGroup);\n }\n function recursiveExpandOrCollapse(rowNodes) {\n if (!rowNodes) {\n return;\n }\n rowNodes.forEach(function (rowNode) {\n var shouldExpandOrCollapse = usingTreeData ? _.exists(rowNode.childrenAfterGroup) : rowNode.group;\n if (shouldExpandOrCollapse) {\n rowNode.expanded = expand;\n recursiveExpandOrCollapse(rowNode.childrenAfterGroup);\n }\n });\n }\n this.refreshModel({ step: Constants.STEP_MAP });\n var eventSource = expand ? 'expandAll' : 'collapseAll';\n var event = {\n api: this.gridApi,\n columnApi: this.columnApi,\n type: Events.EVENT_EXPAND_COLLAPSE_ALL,\n source: eventSource\n };\n this.eventService.dispatchEvent(event);\n };\n ClientSideRowModel.prototype.doSort = function (rowNodeTransactions, changedPath) {\n this.sortStage.execute({\n rowNode: this.rootNode,\n rowNodeTransactions: rowNodeTransactions,\n changedPath: changedPath\n });\n };\n ClientSideRowModel.prototype.doRowGrouping = function (groupState, rowNodeTransactions, rowNodeOrder, changedPath, afterColumnsChanged) {\n var _this = this;\n // grouping is enterprise only, so if service missing, skip the step\n var doingLegacyTreeData = _.exists(this.gridOptionsWrapper.getNodeChildDetailsFunc());\n if (doingLegacyTreeData) {\n return;\n }\n if (this.groupStage) {\n if (rowNodeTransactions && _.exists(rowNodeTransactions)) {\n rowNodeTransactions.forEach(function (tran) {\n _this.groupStage.execute({\n rowNode: _this.rootNode,\n rowNodeTransaction: tran,\n rowNodeOrder: rowNodeOrder,\n changedPath: changedPath\n });\n });\n }\n else {\n // groups are about to get disposed, so need to deselect any that are selected\n this.selectionController.removeGroupsFromSelection();\n this.groupStage.execute({\n rowNode: this.rootNode,\n changedPath: changedPath,\n afterColumnsChanged: afterColumnsChanged\n });\n // set open/closed state on groups\n this.restoreGroupState(groupState);\n }\n if (this.gridOptionsWrapper.isGroupSelectsChildren()) {\n this.selectionController.updateGroupsFromChildrenSelections(changedPath);\n }\n }\n else {\n this.rootNode.childrenAfterGroup = this.rootNode.allLeafChildren;\n }\n };\n ClientSideRowModel.prototype.restoreGroupState = function (groupState) {\n if (!groupState) {\n return;\n }\n _.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) {\n // if the group was open last time, then open it this time. however\n // if was not open last time, then don't touch the group, so the 'groupDefaultExpanded'\n // setting will take effect.\n if (typeof groupState[key] === 'boolean') {\n node.expanded = groupState[key];\n }\n });\n };\n ClientSideRowModel.prototype.doFilter = function (changedPath) {\n this.filterStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n };\n ClientSideRowModel.prototype.doPivot = function (changedPath) {\n if (this.pivotStage) {\n this.pivotStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n };\n ClientSideRowModel.prototype.getGroupState = function () {\n if (!this.rootNode.childrenAfterGroup || !this.gridOptionsWrapper.isRememberGroupStateWhenNewData()) {\n return null;\n }\n var result = {};\n _.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) { return result[key] = node.expanded; });\n return result;\n };\n ClientSideRowModel.prototype.getCopyOfNodesMap = function () {\n return this.nodeManager.getCopyOfNodesMap();\n };\n ClientSideRowModel.prototype.getRowNode = function (id) {\n return this.nodeManager.getRowNode(id);\n };\n // rows: the rows to put into the model\n ClientSideRowModel.prototype.setRowData = function (rowData) {\n // no need to invalidate cache, as the cache is stored on the rowNode,\n // so new rowNodes means the cache is wiped anyway.\n // remember group state, so we can expand groups that should be expanded\n var groupState = this.getGroupState();\n this.nodeManager.setRowData(rowData);\n // this event kicks off:\n // - clears selection\n // - updates filters\n // - shows 'no rows' overlay if needed\n var rowDataChangedEvent = {\n type: Events.EVENT_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(rowDataChangedEvent);\n this.refreshModel({\n step: Constants.STEP_EVERYTHING,\n groupState: groupState,\n newData: true\n });\n };\n ClientSideRowModel.prototype.batchUpdateRowData = function (rowDataTransaction, callback) {\n var _this = this;\n if (!this.rowDataTransactionBatch) {\n this.rowDataTransactionBatch = [];\n var waitMillis = this.gridOptionsWrapper.getBatchUpdateWaitMillis();\n window.setTimeout(function () {\n _this.executeBatchUpdateRowData();\n _this.rowDataTransactionBatch = null;\n }, waitMillis);\n }\n this.rowDataTransactionBatch.push({ rowDataTransaction: rowDataTransaction, callback: callback });\n };\n ClientSideRowModel.prototype.executeBatchUpdateRowData = function () {\n var _this = this;\n this.valueCache.onDataChanged();\n var callbackFuncsBound = [];\n var rowNodeTrans = [];\n if (this.rowDataTransactionBatch) {\n this.rowDataTransactionBatch.forEach(function (tranItem) {\n var rowNodeTran = _this.nodeManager.updateRowData(tranItem.rowDataTransaction, null);\n rowNodeTrans.push(rowNodeTran);\n if (tranItem.callback) {\n callbackFuncsBound.push(tranItem.callback.bind(null, rowNodeTran));\n }\n });\n }\n this.commonUpdateRowData(rowNodeTrans);\n // do callbacks in next VM turn so it's async\n if (callbackFuncsBound.length > 0) {\n window.setTimeout(function () {\n callbackFuncsBound.forEach(function (func) { return func(); });\n }, 0);\n }\n };\n ClientSideRowModel.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {\n this.valueCache.onDataChanged();\n var rowNodeTran = this.nodeManager.updateRowData(rowDataTran, rowNodeOrder);\n this.commonUpdateRowData([rowNodeTran], rowNodeOrder);\n return rowNodeTran;\n };\n // common to updateRowData and batchUpdateRowData\n ClientSideRowModel.prototype.commonUpdateRowData = function (rowNodeTrans, rowNodeOrder) {\n this.refreshModel({\n step: Constants.STEP_EVERYTHING,\n rowNodeTransactions: rowNodeTrans,\n rowNodeOrder: rowNodeOrder,\n keepRenderedRows: true,\n animate: true,\n keepEditingRows: true\n });\n var event = {\n type: Events.EVENT_ROW_DATA_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ClientSideRowModel.prototype.doRowsToDisplay = function () {\n this.rowsToDisplay = this.flattenStage.execute({ rowNode: this.rootNode });\n };\n ClientSideRowModel.prototype.onRowHeightChanged = function () {\n this.refreshModel({ step: Constants.STEP_MAP, keepRenderedRows: true, keepEditingRows: true });\n };\n ClientSideRowModel.prototype.resetRowHeights = function () {\n this.forEachNode(function (rowNode) { return rowNode.setRowHeight(null); });\n this.onRowHeightChanged();\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ClientSideRowModel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], ClientSideRowModel.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('filterManager')\n ], ClientSideRowModel.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('$scope')\n ], ClientSideRowModel.prototype, \"$scope\", void 0);\n __decorate([\n Autowired('selectionController')\n ], ClientSideRowModel.prototype, \"selectionController\", void 0);\n __decorate([\n Autowired('eventService')\n ], ClientSideRowModel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('context')\n ], ClientSideRowModel.prototype, \"context\", void 0);\n __decorate([\n Autowired('valueService')\n ], ClientSideRowModel.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('valueCache')\n ], ClientSideRowModel.prototype, \"valueCache\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ClientSideRowModel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ClientSideRowModel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('filterStage')\n ], ClientSideRowModel.prototype, \"filterStage\", void 0);\n __decorate([\n Autowired('sortStage')\n ], ClientSideRowModel.prototype, \"sortStage\", void 0);\n __decorate([\n Autowired('flattenStage')\n ], ClientSideRowModel.prototype, \"flattenStage\", void 0);\n __decorate([\n Optional('groupStage')\n ], ClientSideRowModel.prototype, \"groupStage\", void 0);\n __decorate([\n Optional('aggregationStage')\n ], ClientSideRowModel.prototype, \"aggregationStage\", void 0);\n __decorate([\n Optional('pivotStage')\n ], ClientSideRowModel.prototype, \"pivotStage\", void 0);\n __decorate([\n PostConstruct\n ], ClientSideRowModel.prototype, \"init\", null);\n ClientSideRowModel = __decorate([\n Bean('rowModel')\n ], ClientSideRowModel);\n return ClientSideRowModel;\n}());\nexport { ClientSideRowModel };\n","import { RowNode, Events, _ } from \"@ag-grid-community/core\";\nvar ClientSideNodeManager = /** @class */ (function () {\n function ClientSideNodeManager(rootNode, gridOptionsWrapper, context, eventService, columnController, gridApi, columnApi, selectionController) {\n this.nextId = 0;\n // when user is provide the id's, we also keep a map of ids to row nodes for convenience\n this.allNodesMap = {};\n this.rootNode = rootNode;\n this.gridOptionsWrapper = gridOptionsWrapper;\n this.context = context;\n this.eventService = eventService;\n this.columnController = columnController;\n this.gridApi = gridApi;\n this.columnApi = columnApi;\n this.selectionController = selectionController;\n this.rootNode.group = true;\n this.rootNode.level = -1;\n this.rootNode.id = ClientSideNodeManager.ROOT_NODE_ID;\n this.rootNode.allLeafChildren = [];\n this.rootNode.childrenAfterGroup = [];\n this.rootNode.childrenAfterSort = [];\n this.rootNode.childrenAfterFilter = [];\n // if we make this class a bean, then can annotate postConstruct\n this.postConstruct();\n }\n // @PostConstruct - this is not a bean, so postConstruct called by constructor\n ClientSideNodeManager.prototype.postConstruct = function () {\n // func below doesn't have 'this' pointer, so need to pull out these bits\n this.getNodeChildDetails = this.gridOptionsWrapper.getNodeChildDetailsFunc();\n this.suppressParentsInRowNodes = this.gridOptionsWrapper.isSuppressParentsInRowNodes();\n this.doesDataFlower = this.gridOptionsWrapper.getDoesDataFlowerFunc();\n this.isRowMasterFunc = this.gridOptionsWrapper.getIsRowMasterFunc();\n this.doingLegacyTreeData = _.exists(this.getNodeChildDetails);\n this.doingMasterDetail = this.gridOptionsWrapper.isMasterDetail();\n if (this.getNodeChildDetails) {\n console.warn(\"ag-Grid: the callback nodeChildDetailsFunc() is now deprecated. The new way of doing\\n tree data in ag-Grid was introduced in v14 (released November 2017). In the next\\n major release of ag-Grid we will be dropping support for the old version of\\n tree data. If you are reading this message, please go to the docs to see how\\n to implement Tree Data without using nodeChildDetailsFunc().\");\n }\n };\n ClientSideNodeManager.prototype.getCopyOfNodesMap = function () {\n var result = _.cloneObject(this.allNodesMap);\n return result;\n };\n ClientSideNodeManager.prototype.getRowNode = function (id) {\n return this.allNodesMap[id];\n };\n ClientSideNodeManager.prototype.setRowData = function (rowData) {\n this.rootNode.childrenAfterFilter = null;\n this.rootNode.childrenAfterGroup = null;\n this.rootNode.childrenAfterSort = null;\n this.rootNode.childrenMapped = null;\n this.nextId = 0;\n this.allNodesMap = {};\n if (!rowData) {\n this.rootNode.allLeafChildren = [];\n this.rootNode.childrenAfterGroup = [];\n return;\n }\n // kick off recursion\n // we add rootNode as the parent, however if using ag-grid-enterprise, the grouping stage\n // sets the parent node on each row (even if we are not grouping). so setting parent node\n // here is for benefit of ag-grid-community users\n var result = this.recursiveFunction(rowData, this.rootNode, ClientSideNodeManager.TOP_LEVEL);\n if (this.doingLegacyTreeData) {\n this.rootNode.childrenAfterGroup = result;\n this.setLeafChildren(this.rootNode);\n }\n else {\n this.rootNode.allLeafChildren = result;\n }\n };\n ClientSideNodeManager.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {\n if (this.isLegacyTreeData()) {\n return null;\n }\n var add = rowDataTran.add, addIndex = rowDataTran.addIndex, remove = rowDataTran.remove, update = rowDataTran.update;\n var rowNodeTransaction = {\n remove: [],\n update: [],\n add: []\n };\n this.executeAdd(rowDataTran, rowNodeTransaction);\n this.executeRemove(rowDataTran, rowNodeTransaction);\n this.executeUpdate(rowDataTran, rowNodeTransaction);\n if (rowNodeOrder) {\n _.sortRowNodesByOrder(this.rootNode.allLeafChildren, rowNodeOrder);\n }\n return rowNodeTransaction;\n };\n ClientSideNodeManager.prototype.executeAdd = function (rowDataTran, rowNodeTransaction) {\n var _this = this;\n var add = rowDataTran.add, addIndex = rowDataTran.addIndex;\n if (!add) {\n return;\n }\n var useIndex = typeof addIndex === 'number' && addIndex >= 0;\n if (useIndex) {\n // items get inserted in reverse order for index insertion\n add.reverse().forEach(function (item) {\n var newRowNode = _this.addRowNode(item, addIndex);\n rowNodeTransaction.add.push(newRowNode);\n });\n }\n else {\n add.forEach(function (item) {\n var newRowNode = _this.addRowNode(item);\n rowNodeTransaction.add.push(newRowNode);\n });\n }\n };\n ClientSideNodeManager.prototype.executeRemove = function (rowDataTran, rowNodeTransaction) {\n var _this = this;\n var remove = rowDataTran.remove;\n if (!remove) {\n return;\n }\n var rowIdsRemoved = {};\n var anyNodesSelected = false;\n remove.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n if (rowNode.isSelected()) {\n anyNodesSelected = true;\n }\n // do delete - setting 'tailingNodeInSequence = true' to ensure EVENT_SELECTION_CHANGED is not raised for\n // each row node updated, instead it is raised once by the calling code if any selected nodes exist.\n rowNode.setSelected(false, false, true);\n // so row renderer knows to fade row out (and not reposition it)\n rowNode.clearRowTop();\n // NOTE: were we could remove from allLeaveChildren, however _.removeFromArray() is expensive, especially\n // if called multiple times (eg deleting lots of rows) and if allLeafChildren is a large list\n rowIdsRemoved[rowNode.id] = true;\n // _.removeFromArray(this.rootNode.allLeafChildren, rowNode);\n delete _this.allNodesMap[rowNode.id];\n rowNodeTransaction.remove.push(rowNode);\n });\n this.rootNode.allLeafChildren = this.rootNode.allLeafChildren.filter(function (rowNode) { return !rowIdsRemoved[rowNode.id]; });\n if (anyNodesSelected) {\n this.selectionController.updateGroupsFromChildrenSelections();\n var event_1 = {\n type: Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n ClientSideNodeManager.prototype.executeUpdate = function (rowDataTran, rowNodeTransaction) {\n var _this = this;\n var update = rowDataTran.update;\n if (!update) {\n return;\n }\n update.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n rowNode.updateData(item);\n rowNodeTransaction.update.push(rowNode);\n });\n };\n ClientSideNodeManager.prototype.addRowNode = function (data, index) {\n var newNode = this.createNode(data, this.rootNode, ClientSideNodeManager.TOP_LEVEL);\n if (_.exists(index)) {\n _.insertIntoArray(this.rootNode.allLeafChildren, newNode, index);\n }\n else {\n this.rootNode.allLeafChildren.push(newNode);\n }\n return newNode;\n };\n ClientSideNodeManager.prototype.lookupRowNode = function (data) {\n var rowNodeIdFunc = this.gridOptionsWrapper.getRowNodeIdFunc();\n var rowNode;\n if (_.exists(rowNodeIdFunc)) {\n // find rowNode using id\n var id = rowNodeIdFunc(data);\n rowNode = this.allNodesMap[id];\n if (!rowNode) {\n console.error(\"ag-Grid: could not find row id=\" + id + \", data item was not found for this id\");\n return null;\n }\n }\n else {\n // find rowNode using object references\n rowNode = _.find(this.rootNode.allLeafChildren, function (rowNode) { return rowNode.data === data; });\n if (!rowNode) {\n console.error(\"ag-Grid: could not find data item as object was not found\", data);\n return null;\n }\n }\n return rowNode;\n };\n ClientSideNodeManager.prototype.recursiveFunction = function (rowData, parent, level) {\n var _this = this;\n // make sure the rowData is an array and not a string of json - this was a commonly reported problem on the forum\n if (typeof rowData === 'string') {\n console.warn('ag-Grid: rowData must be an array, however you passed in a string. If you are loading JSON, make sure you convert the JSON string to JavaScript objects first');\n return;\n }\n var rowNodes = [];\n rowData.forEach(function (dataItem) {\n var node = _this.createNode(dataItem, parent, level);\n rowNodes.push(node);\n });\n return rowNodes;\n };\n ClientSideNodeManager.prototype.createNode = function (dataItem, parent, level) {\n var node = new RowNode();\n this.context.wireBean(node);\n var doingTreeData = this.gridOptionsWrapper.isTreeData();\n var doingLegacyTreeData = !doingTreeData && _.exists(this.getNodeChildDetails);\n var nodeChildDetails = doingLegacyTreeData ? this.getNodeChildDetails(dataItem) : null;\n if (nodeChildDetails && nodeChildDetails.group) {\n node.group = true;\n node.childrenAfterGroup = this.recursiveFunction(nodeChildDetails.children, node, level + 1);\n node.expanded = nodeChildDetails.expanded === true;\n node.field = nodeChildDetails.field;\n node.key = nodeChildDetails.key;\n /** @deprecated is now 'master' */\n node.canFlower = node.master;\n // pull out all the leaf children and add to our node\n this.setLeafChildren(node);\n }\n else {\n node.group = false;\n if (doingTreeData) {\n node.master = false;\n node.expanded = false;\n }\n else {\n // this is the default, for when doing grid data\n if (this.doesDataFlower) {\n node.master = this.doesDataFlower(dataItem);\n }\n else if (this.doingMasterDetail) {\n // if we are doing master detail, then the\n // default is that everything can flower.\n if (this.isRowMasterFunc) {\n node.master = this.isRowMasterFunc(dataItem);\n }\n else {\n node.master = true;\n }\n }\n else {\n node.master = false;\n }\n var rowGroupColumns = this.columnController.getRowGroupColumns();\n var numRowGroupColumns = rowGroupColumns ? rowGroupColumns.length : 0;\n // need to take row group into account when determining level\n var masterRowLevel = level + numRowGroupColumns;\n node.expanded = node.master ? this.isExpanded(masterRowLevel) : false;\n }\n }\n // support for backwards compatibility, canFlow is now called 'master'\n node.canFlower = node.master;\n if (parent && !this.suppressParentsInRowNodes) {\n node.parent = parent;\n }\n node.level = level;\n node.setDataAndId(dataItem, this.nextId.toString());\n if (this.allNodesMap[node.id]) {\n console.warn(\"ag-grid: duplicate node id '\" + node.id + \"' detected from getRowNodeId callback, this could cause issues in your grid.\");\n }\n this.allNodesMap[node.id] = node;\n this.nextId++;\n return node;\n };\n ClientSideNodeManager.prototype.isExpanded = function (level) {\n var expandByDefault = this.gridOptionsWrapper.getGroupDefaultExpanded();\n if (expandByDefault === -1) {\n return true;\n }\n else {\n return level < expandByDefault;\n }\n };\n // this is only used for doing legacy tree data\n ClientSideNodeManager.prototype.setLeafChildren = function (node) {\n node.allLeafChildren = [];\n if (node.childrenAfterGroup) {\n node.childrenAfterGroup.forEach(function (childAfterGroup) {\n if (childAfterGroup.group) {\n if (childAfterGroup.allLeafChildren) {\n childAfterGroup.allLeafChildren.forEach(function (leafChild) { return node.allLeafChildren.push(leafChild); });\n }\n }\n else {\n node.allLeafChildren.push(childAfterGroup);\n }\n });\n }\n };\n ClientSideNodeManager.prototype.isLegacyTreeData = function () {\n var rowsAlreadyGrouped = _.exists(this.gridOptionsWrapper.getNodeChildDetailsFunc());\n if (rowsAlreadyGrouped) {\n console.warn('ag-Grid: adding and removing rows is not supported when using nodeChildDetailsFunc, ie it is not ' +\n 'supported for legacy tree data. Please see the docs on the new preferred way of providing tree data that works with delta updates.');\n return true;\n }\n else {\n return false;\n }\n };\n ClientSideNodeManager.TOP_LEVEL = 0;\n ClientSideNodeManager.ROOT_NODE_ID = 'ROOT_NODE_ID';\n return ClientSideNodeManager;\n}());\nexport { ClientSideNodeManager };\n","var __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};\nimport { Autowired, Bean } from \"@ag-grid-community/core\";\nvar FilterStage = /** @class */ (function () {\n function FilterStage() {\n }\n FilterStage.prototype.execute = function (params) {\n var rowNode = params.rowNode, changedPath = params.changedPath;\n this.filterService.filter(changedPath);\n this.selectableService.updateSelectableAfterFiltering(rowNode);\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], FilterStage.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('selectableService')\n ], FilterStage.prototype, \"selectableService\", void 0);\n __decorate([\n Autowired('filterService')\n ], FilterStage.prototype, \"filterService\", void 0);\n FilterStage = __decorate([\n Bean('filterStage')\n ], FilterStage);\n return FilterStage;\n}());\nexport { FilterStage };\n","var __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};\nimport { _, Autowired, Bean } from \"@ag-grid-community/core\";\nvar SortStage = /** @class */ (function () {\n function SortStage() {\n }\n SortStage.prototype.execute = function (params) {\n var sortOptions = this.sortController.getSortForRowController();\n var sortActive = _.exists(sortOptions) && sortOptions.length > 0;\n var deltaSort = sortActive\n && _.exists(params.rowNodeTransactions)\n // in time we can remove this check, so that delta sort is always\n // on if transactions are present. it's off for now so that we can\n // selectively turn it on and test it with some select users before\n // rolling out to everyone.\n && this.gridOptionsWrapper.isDeltaSort();\n // we only need dirty nodes if doing delta sort\n var dirtyLeafNodes = deltaSort ? this.calculateDirtyNodes(params.rowNodeTransactions) : null;\n var valueColumns = this.columnController.getValueColumns();\n var noAggregations = _.missingOrEmpty(valueColumns);\n this.sortService.sort(sortOptions, sortActive, deltaSort, dirtyLeafNodes, params.changedPath, noAggregations);\n };\n SortStage.prototype.calculateDirtyNodes = function (rowNodeTransactions) {\n var dirtyNodes = {};\n var addNodesFunc = function (rowNodes) {\n if (rowNodes) {\n rowNodes.forEach(function (rowNode) { return dirtyNodes[rowNode.id] = true; });\n }\n };\n // all leaf level nodes in the transaction were impacted\n rowNodeTransactions.forEach(function (tran) {\n addNodesFunc(tran.add);\n addNodesFunc(tran.update);\n addNodesFunc(tran.remove);\n });\n return dirtyNodes;\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], SortStage.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('sortService')\n ], SortStage.prototype, \"sortService\", void 0);\n __decorate([\n Autowired('sortController')\n ], SortStage.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('columnController')\n ], SortStage.prototype, \"columnController\", void 0);\n SortStage = __decorate([\n Bean('sortStage')\n ], SortStage);\n return SortStage;\n}());\nexport { SortStage };\n","var __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};\nimport { _, Autowired, Bean, RowNode } from \"@ag-grid-community/core\";\nvar FlattenStage = /** @class */ (function () {\n function FlattenStage() {\n }\n FlattenStage.prototype.execute = function (params) {\n var rootNode = params.rowNode;\n // even if not doing grouping, we do the mapping, as the client might\n // of passed in data that already has a grouping in it somewhere\n var result = [];\n // putting value into a wrapper so it's passed by reference\n var nextRowTop = { value: 0 };\n var skipLeafNodes = this.columnController.isPivotMode();\n // if we are reducing, and not grouping, then we want to show the root node, as that\n // is where the pivot values are\n var showRootNode = skipLeafNodes && rootNode.leafGroup;\n var topList = showRootNode ? [rootNode] : rootNode.childrenAfterSort;\n this.recursivelyAddToRowsToDisplay(topList, result, nextRowTop, skipLeafNodes, 0);\n // we do not want the footer total if the gris is empty\n var atLeastOneRowPresent = result.length > 0;\n var includeGroupTotalFooter = !showRootNode\n // don't show total footer when showRootNode is true (i.e. in pivot mode and no groups)\n && atLeastOneRowPresent\n && this.gridOptionsWrapper.isGroupIncludeTotalFooter();\n if (includeGroupTotalFooter) {\n this.ensureFooterNodeExists(rootNode);\n this.addRowNodeToRowsToDisplay(rootNode.sibling, result, nextRowTop, 0);\n }\n return result;\n };\n FlattenStage.prototype.recursivelyAddToRowsToDisplay = function (rowsToFlatten, result, nextRowTop, skipLeafNodes, uiLevel) {\n if (_.missingOrEmpty(rowsToFlatten)) {\n return;\n }\n var groupSuppressRow = this.gridOptionsWrapper.isGroupSuppressRow();\n var hideOpenParents = this.gridOptionsWrapper.isGroupHideOpenParents();\n // these two are mutually exclusive, so if first set, we don't set the second\n var groupRemoveSingleChildren = this.gridOptionsWrapper.isGroupRemoveSingleChildren();\n var groupRemoveLowestSingleChildren = !groupRemoveSingleChildren && this.gridOptionsWrapper.isGroupRemoveLowestSingleChildren();\n for (var i = 0; i < rowsToFlatten.length; i++) {\n var rowNode = rowsToFlatten[i];\n // check all these cases, for working out if this row should be included in the final mapped list\n var isParent = rowNode.hasChildren();\n var isGroupSuppressedNode = groupSuppressRow && isParent;\n var isSkippedLeafNode = skipLeafNodes && !isParent;\n var isRemovedSingleChildrenGroup = groupRemoveSingleChildren && isParent && rowNode.childrenAfterGroup.length === 1;\n var isRemovedLowestSingleChildrenGroup = groupRemoveLowestSingleChildren && isParent && rowNode.leafGroup && rowNode.childrenAfterGroup.length === 1;\n // hide open parents means when group is open, we don't show it. we also need to make sure the\n // group is expandable in the first place (as leaf groups are not expandable if pivot mode is on).\n // the UI will never allow expanding leaf groups, however the user might via the API (or menu option 'expand all')\n var neverAllowToExpand = skipLeafNodes && rowNode.leafGroup;\n var isHiddenOpenParent = hideOpenParents && rowNode.expanded && (!neverAllowToExpand);\n var thisRowShouldBeRendered = !isSkippedLeafNode && !isGroupSuppressedNode && !isHiddenOpenParent && !isRemovedSingleChildrenGroup && !isRemovedLowestSingleChildrenGroup;\n if (thisRowShouldBeRendered) {\n this.addRowNodeToRowsToDisplay(rowNode, result, nextRowTop, uiLevel);\n }\n // if we are pivoting, we never map below the leaf group\n if (skipLeafNodes && rowNode.leafGroup) {\n continue;\n }\n if (isParent) {\n var excludedParent = isRemovedSingleChildrenGroup || isRemovedLowestSingleChildrenGroup;\n // we traverse the group if it is expended, however we always traverse if the parent node\n // was removed (as the group will never be opened if it is not displayed, we show the children instead)\n if (rowNode.expanded || excludedParent) {\n // if the parent was excluded, then ui level is that of the parent\n var uiLevelForChildren = excludedParent ? uiLevel : uiLevel + 1;\n this.recursivelyAddToRowsToDisplay(rowNode.childrenAfterSort, result, nextRowTop, skipLeafNodes, uiLevelForChildren);\n // put a footer in if user is looking for it\n if (this.gridOptionsWrapper.isGroupIncludeFooter()) {\n this.ensureFooterNodeExists(rowNode);\n this.addRowNodeToRowsToDisplay(rowNode.sibling, result, nextRowTop, uiLevel);\n }\n }\n }\n else if (rowNode.master && rowNode.expanded) {\n var detailNode = this.createDetailNode(rowNode);\n this.addRowNodeToRowsToDisplay(detailNode, result, nextRowTop, uiLevel);\n }\n }\n };\n // duplicated method, it's also in floatingRowModel\n FlattenStage.prototype.addRowNodeToRowsToDisplay = function (rowNode, result, nextRowTop, uiLevel) {\n result.push(rowNode);\n var isGroupMultiAutoColumn = this.gridOptionsWrapper.isGroupMultiAutoColumn();\n rowNode.setUiLevel(isGroupMultiAutoColumn ? 0 : uiLevel);\n };\n FlattenStage.prototype.ensureFooterNodeExists = function (groupNode) {\n // only create footer node once, otherwise we have daemons and\n // the animate screws up with the daemons hanging around\n if (_.exists(groupNode.sibling)) {\n return;\n }\n var footerNode = new RowNode();\n this.context.wireBean(footerNode);\n Object.keys(groupNode).forEach(function (key) {\n footerNode[key] = groupNode[key];\n });\n footerNode.footer = true;\n footerNode.rowTop = null;\n footerNode.oldRowTop = null;\n if (_.exists(footerNode.id)) {\n footerNode.id = 'rowGroupFooter_' + footerNode.id;\n }\n // get both header and footer to reference each other as siblings. this is never undone,\n // only overwritten. so if a group is expanded, then contracted, it will have a ghost\n // sibling - but that's fine, as we can ignore this if the header is contracted.\n footerNode.sibling = groupNode;\n groupNode.sibling = footerNode;\n };\n FlattenStage.prototype.createDetailNode = function (masterNode) {\n if (_.exists(masterNode.detailNode)) {\n return masterNode.detailNode;\n }\n else {\n var detailNode = new RowNode();\n this.context.wireBean(detailNode);\n detailNode.detail = true;\n detailNode.selectable = false;\n // flower was renamed to 'detail', but keeping for backwards compatibility\n detailNode.flower = detailNode.detail;\n detailNode.parent = masterNode;\n if (_.exists(masterNode.id)) {\n detailNode.id = 'detail_' + masterNode.id;\n }\n detailNode.data = masterNode.data;\n detailNode.level = masterNode.level + 1;\n masterNode.detailNode = detailNode;\n masterNode.childFlower = masterNode.detailNode; // for backwards compatibility\n return detailNode;\n }\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], FlattenStage.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('selectionController')\n ], FlattenStage.prototype, \"selectionController\", void 0);\n __decorate([\n Autowired('eventService')\n ], FlattenStage.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('context')\n ], FlattenStage.prototype, \"context\", void 0);\n __decorate([\n Autowired('columnController')\n ], FlattenStage.prototype, \"columnController\", void 0);\n FlattenStage = __decorate([\n Bean('flattenStage')\n ], FlattenStage);\n return FlattenStage;\n}());\nexport { FlattenStage };\n","var __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};\nimport { _, Autowired, Bean, PostConstruct } from \"@ag-grid-community/core\";\nvar SortService = /** @class */ (function () {\n function SortService() {\n }\n SortService.prototype.init = function () {\n this.postSortFunc = this.gridOptionsWrapper.getPostSortFunc();\n };\n SortService.prototype.sort = function (sortOptions, sortActive, deltaSort, dirtyLeafNodes, changedPath, noAggregations) {\n var _this = this;\n var callback = function (rowNode) {\n // we clear out the 'pull down open parents' first, as the values mix up the sorting\n _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterFilter, true);\n // Javascript sort is non deterministic when all the array items are equals, ie Comparator always returns 0,\n // so to ensure the array keeps its order, add an additional sorting condition manually, in this case we\n // are going to inspect the original array position. This is what sortedRowNodes is for.\n if (sortActive) {\n var sortedRowNodes = deltaSort ?\n _this.doDeltaSort(rowNode, sortOptions, dirtyLeafNodes, changedPath, noAggregations)\n : _this.doFullSort(rowNode, sortOptions);\n rowNode.childrenAfterSort = sortedRowNodes.map(function (sorted) { return sorted.rowNode; });\n }\n else {\n rowNode.childrenAfterSort = rowNode.childrenAfterFilter.slice(0);\n }\n _this.updateChildIndexes(rowNode);\n if (_this.postSortFunc) {\n _this.postSortFunc(rowNode.childrenAfterSort);\n }\n };\n changedPath.forEachChangedNodeDepthFirst(callback);\n this.updateGroupDataForHiddenOpenParents(changedPath);\n };\n SortService.prototype.doFullSort = function (rowNode, sortOptions) {\n var sortedRowNodes = rowNode.childrenAfterFilter\n .map(this.mapNodeToSortedNode.bind(this));\n sortedRowNodes.sort(this.compareRowNodes.bind(this, sortOptions));\n return sortedRowNodes;\n };\n SortService.prototype.mapNodeToSortedNode = function (rowNode, pos) {\n return { currentPos: pos, rowNode: rowNode };\n };\n SortService.prototype.doDeltaSort = function (rowNode, sortOptions, dirtyLeafNodes, changedPath, noAggregations) {\n // clean nodes will be a list of all row nodes that remain in the set\n // and ordered. we start with the old sorted set and take out any nodes\n // that were removed or changed (but not added, added doesn't make sense,\n // if a node was added, there is no way it could be here from last time).\n var cleanNodes = rowNode.childrenAfterSort\n .filter(function (rowNode) {\n // take out all nodes that were changed as part of the current transaction.\n // a changed node could a) be in a different sort position or b) may\n // no longer be in this set as the changed node may not pass filtering,\n // or be in a different group.\n var passesDirtyNodesCheck = !dirtyLeafNodes[rowNode.id];\n // also remove group nodes in the changed path, as they can have different aggregate\n // values which could impact the sort order.\n // note: changed path is not active if a) no value columns or b) no transactions. it is never\n // (b) in deltaSort as we only do deltaSort for transactions. for (a) if no value columns, then\n // there is no value in the group that could of changed (ie no aggregate values)\n var passesChangedPathCheck = noAggregations || changedPath.canSkip(rowNode);\n return passesDirtyNodesCheck && passesChangedPathCheck;\n })\n .map(this.mapNodeToSortedNode.bind(this));\n // for fast access below, we map them\n var cleanNodesMapped = {};\n cleanNodes.forEach(function (sortedRowNode) { return cleanNodesMapped[sortedRowNode.rowNode.id] = sortedRowNode.rowNode; });\n // these are all nodes that need to be placed\n var changedNodes = rowNode.childrenAfterFilter\n // ignore nodes in the clean list\n .filter(function (rowNode) { return !cleanNodesMapped[rowNode.id]; })\n .map(this.mapNodeToSortedNode.bind(this));\n // sort changed nodes. note that we don't need to sort cleanNodes as they are\n // already sorted from last time.\n changedNodes.sort(this.compareRowNodes.bind(this, sortOptions));\n if (changedNodes.length === 0) {\n return cleanNodes;\n }\n else if (cleanNodes.length === 0) {\n return changedNodes;\n }\n else {\n return this.mergeSortedArrays(sortOptions, cleanNodes, changedNodes);\n }\n };\n // Merge two sorted arrays into each other\n SortService.prototype.mergeSortedArrays = function (sortOptions, arr1, arr2) {\n var res = [];\n var i = 0;\n var j = 0;\n // Traverse both array, adding them in order\n while (i < arr1.length && j < arr2.length) {\n // Check if current element of first\n // array is smaller than current element\n // of second array. If yes, store first\n // array element and increment first array\n // index. Otherwise do same with second array\n var compareResult = this.compareRowNodes(sortOptions, arr1[i], arr2[j]);\n if (compareResult < 0) {\n res.push(arr1[i++]);\n }\n else {\n res.push(arr2[j++]);\n }\n }\n // add remaining from arr1\n while (i < arr1.length) {\n res.push(arr1[i++]);\n }\n // add remaining from arr2\n while (j < arr2.length) {\n res.push(arr2[j++]);\n }\n return res;\n };\n SortService.prototype.compareRowNodes = function (sortOptions, sortedNodeA, sortedNodeB) {\n var nodeA = sortedNodeA.rowNode;\n var nodeB = sortedNodeB.rowNode;\n // Iterate columns, return the first that doesn't match\n for (var i = 0, len = sortOptions.length; i < len; i++) {\n var sortOption = sortOptions[i];\n // let compared = compare(nodeA, nodeB, sortOption.column, sortOption.inverter === -1);\n var isInverted = sortOption.inverter === -1;\n var valueA = this.getValue(nodeA, sortOption.column);\n var valueB = this.getValue(nodeB, sortOption.column);\n var comparatorResult = void 0;\n if (sortOption.column.getColDef().comparator) {\n //if comparator provided, use it\n comparatorResult = sortOption.column.getColDef().comparator(valueA, valueB, nodeA, nodeB, isInverted);\n }\n else {\n //otherwise do our own comparison\n comparatorResult = _.defaultComparator(valueA, valueB, this.gridOptionsWrapper.isAccentedSort());\n }\n if (comparatorResult !== 0) {\n return comparatorResult * sortOption.inverter;\n }\n }\n // All matched, we make is so that the original sort order is kept:\n return sortedNodeA.currentPos - sortedNodeB.currentPos;\n };\n SortService.prototype.getValue = function (nodeA, column) {\n return this.valueService.getValue(column, nodeA);\n };\n SortService.prototype.updateChildIndexes = function (rowNode) {\n if (_.missing(rowNode.childrenAfterSort)) {\n return;\n }\n var listToSort = rowNode.childrenAfterSort;\n for (var i = 0; i < listToSort.length; i++) {\n var child = listToSort[i];\n var firstChild = i === 0;\n var lastChild = i === rowNode.childrenAfterSort.length - 1;\n child.setFirstChild(firstChild);\n child.setLastChild(lastChild);\n child.setChildIndex(i);\n }\n };\n SortService.prototype.updateGroupDataForHiddenOpenParents = function (changedPath) {\n var _this = this;\n if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n return;\n }\n // recurse breadth first over group nodes after sort to 'pull down' group data to child groups\n var callback = function (rowNode) {\n _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterSort, false);\n rowNode.childrenAfterSort.forEach(function (child) {\n if (child.hasChildren()) {\n callback(child);\n }\n });\n };\n changedPath.executeFromRootNode(function (rowNode) { return callback(rowNode); });\n };\n SortService.prototype.pullDownGroupDataForHideOpenParents = function (rowNodes, clearOperation) {\n var _this = this;\n if (_.missing(rowNodes)) {\n return;\n }\n if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n return;\n }\n rowNodes.forEach(function (childRowNode) {\n var groupDisplayCols = _this.columnController.getGroupDisplayColumns();\n groupDisplayCols.forEach(function (groupDisplayCol) {\n var showRowGroup = groupDisplayCol.getColDef().showRowGroup;\n if (typeof showRowGroup !== 'string') {\n console.error('ag-Grid: groupHideOpenParents only works when specifying specific columns for colDef.showRowGroup');\n return;\n }\n var displayingGroupKey = showRowGroup;\n var rowGroupColumn = _this.columnController.getPrimaryColumn(displayingGroupKey);\n var thisRowNodeMatches = rowGroupColumn === childRowNode.rowGroupColumn;\n if (thisRowNodeMatches) {\n return;\n }\n if (clearOperation) {\n // if doing a clear operation, we clear down the value for every possible group column\n childRowNode.setGroupValue(groupDisplayCol.getId(), null);\n }\n else {\n // if doing a set operation, we set only where the pull down is to occur\n var parentToStealFrom = childRowNode.getFirstChildOfFirstChild(rowGroupColumn);\n if (parentToStealFrom) {\n childRowNode.setGroupValue(groupDisplayCol.getId(), parentToStealFrom.key);\n }\n }\n });\n });\n };\n __decorate([\n Autowired('sortController')\n ], SortService.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('columnController')\n ], SortService.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('valueService')\n ], SortService.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], SortService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], SortService.prototype, \"init\", null);\n SortService = __decorate([\n Bean('sortService')\n ], SortService);\n return SortService;\n}());\nexport { SortService };\n","var __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};\nimport { Autowired, Bean, PostConstruct } from \"@ag-grid-community/core\";\nvar FilterService = /** @class */ (function () {\n function FilterService() {\n }\n FilterService.prototype.postConstruct = function () {\n this.doingTreeData = this.gridOptionsWrapper.isTreeData();\n };\n FilterService.prototype.filter = function (changedPath) {\n var filterActive = this.filterManager.isAnyFilterPresent();\n this.filterNodes(filterActive, changedPath);\n };\n FilterService.prototype.filterNodes = function (filterActive, changedPath) {\n var _this = this;\n var filterCallback = function (rowNode, includeChildNodes) {\n // recursively get all children that are groups to also filter\n if (rowNode.hasChildren()) {\n // result of filter for this node. when filtering tree data, includeChildNodes = true when parent passes\n if (filterActive && !includeChildNodes) {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup.filter(function (childNode) {\n // a group is included in the result if it has any children of it's own.\n // by this stage, the child groups are already filtered\n var passBecauseChildren = childNode.childrenAfterFilter && childNode.childrenAfterFilter.length > 0;\n // both leaf level nodes and tree data nodes have data. these get added if\n // the data passes the filter\n var passBecauseDataPasses = childNode.data && _this.filterManager.doesRowPassFilter(childNode);\n // note - tree data nodes pass either if a) they pass themselves or b) any children of that node pass\n return passBecauseChildren || passBecauseDataPasses;\n });\n }\n else {\n // if not filtering, the result is the original list\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n }\n _this.setAllChildrenCount(rowNode);\n }\n else {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n rowNode.setAllChildrenCount(null);\n }\n };\n if (this.doingTreeDataFiltering()) {\n var treeDataDepthFirstFilter_1 = function (rowNode, alreadyFoundInParent) {\n // tree data filter traverses the hierarchy depth first and includes child nodes if parent passes\n // filter, and parent nodes will be include if any children exist.\n if (rowNode.childrenAfterGroup) {\n for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n var childNode = rowNode.childrenAfterGroup[i];\n // first check if current node passes filter before invoking child nodes\n var foundInParent = alreadyFoundInParent || _this.filterManager.doesRowPassFilter(childNode);\n if (childNode.childrenAfterGroup) {\n treeDataDepthFirstFilter_1(rowNode.childrenAfterGroup[i], foundInParent);\n }\n else {\n filterCallback(childNode, foundInParent);\n }\n }\n }\n filterCallback(rowNode, alreadyFoundInParent);\n };\n var treeDataFilterCallback = function (rowNode) { return treeDataDepthFirstFilter_1(rowNode, false); };\n changedPath.executeFromRootNode(treeDataFilterCallback);\n }\n else {\n var defaultFilterCallback = function (rowNode) { return filterCallback(rowNode, false); };\n changedPath.forEachChangedNodeDepthFirst(defaultFilterCallback, true);\n }\n };\n FilterService.prototype.setAllChildrenCountTreeData = function (rowNode) {\n // for tree data, we include all children, groups and leafs\n var allChildrenCount = 0;\n rowNode.childrenAfterFilter.forEach(function (child) {\n // include child itself\n allChildrenCount++;\n // include children of children\n allChildrenCount += child.allChildrenCount;\n });\n rowNode.setAllChildrenCount(allChildrenCount);\n };\n FilterService.prototype.setAllChildrenCountGridGrouping = function (rowNode) {\n // for grid data, we only count the leafs\n var allChildrenCount = 0;\n rowNode.childrenAfterFilter.forEach(function (child) {\n if (child.group) {\n allChildrenCount += child.allChildrenCount;\n }\n else {\n allChildrenCount++;\n }\n });\n rowNode.setAllChildrenCount(allChildrenCount);\n };\n FilterService.prototype.setAllChildrenCount = function (rowNode) {\n if (this.doingTreeData) {\n this.setAllChildrenCountTreeData(rowNode);\n }\n else {\n this.setAllChildrenCountGridGrouping(rowNode);\n }\n };\n FilterService.prototype.doingTreeDataFiltering = function () {\n return this.gridOptionsWrapper.isTreeData() && !this.gridOptionsWrapper.isExcludeChildrenWhenTreeDataFiltering();\n };\n __decorate([\n Autowired('filterManager')\n ], FilterService.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], FilterService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], FilterService.prototype, \"postConstruct\", null);\n FilterService = __decorate([\n Bean(\"filterService\")\n ], FilterService);\n return FilterService;\n}());\nexport { FilterService };\n","var __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};\nimport { _, Autowired, Bean, Constants, PostConstruct } from \"@ag-grid-community/core\";\nvar ImmutableService = /** @class */ (function () {\n function ImmutableService() {\n }\n ImmutableService.prototype.postConstruct = function () {\n if (this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = this.rowModel;\n }\n };\n // converts the setRowData() command to a transaction\n ImmutableService.prototype.createTransactionForRowData = function (data) {\n if (_.missing(this.clientSideRowModel)) {\n console.error('ag-Grid: ImmutableService only works with ClientSideRowModel');\n return;\n }\n var getRowNodeIdFunc = this.gridOptionsWrapper.getRowNodeIdFunc();\n if (!getRowNodeIdFunc || _.missing(getRowNodeIdFunc)) {\n console.error('ag-Grid: ImmutableService requires getRowNodeId() callback to be implemented, your row data need IDs!');\n return;\n }\n // convert the data into a transaction object by working out adds, removes and updates\n var transaction = {\n remove: [],\n update: [],\n add: []\n };\n var existingNodesMap = this.clientSideRowModel.getCopyOfNodesMap();\n var suppressSortOrder = this.gridOptionsWrapper.isSuppressMaintainUnsortedOrder();\n var orderMap = suppressSortOrder ? null : {};\n if (_.exists(data)) {\n // split all the new data in the following:\n // if new, push to 'add'\n // if update, push to 'update'\n // if not changed, do not include in the transaction\n data.forEach(function (dataItem, index) {\n var id = getRowNodeIdFunc(dataItem);\n var existingNode = existingNodesMap[id];\n if (orderMap) {\n orderMap[id] = index;\n }\n if (existingNode) {\n var dataHasChanged = existingNode.data !== dataItem;\n if (dataHasChanged) {\n transaction.update.push(dataItem);\n }\n // otherwise, if data not changed, we just don't include it anywhere, as it's not a delta\n // remove from list, so we know the item is not to be removed\n existingNodesMap[id] = undefined;\n }\n else {\n transaction.add.push(dataItem);\n }\n });\n }\n // at this point, all rows that are left, should be removed\n _.iterateObject(existingNodesMap, function (id, rowNode) {\n if (rowNode) {\n transaction.remove.push(rowNode.data);\n }\n });\n return [transaction, orderMap];\n };\n __decorate([\n Autowired('rowModel')\n ], ImmutableService.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ImmutableService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], ImmutableService.prototype, \"postConstruct\", null);\n ImmutableService = __decorate([\n Bean('immutableService')\n ], ImmutableService);\n return ImmutableService;\n}());\nexport { ImmutableService };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { ClientSideRowModel } from \"./clientSideRowModel/clientSideRowModel\";\nimport { FilterStage } from \"./clientSideRowModel/filterStage\";\nimport { SortStage } from \"./clientSideRowModel/sortStage\";\nimport { FlattenStage } from \"./clientSideRowModel/flattenStage\";\nimport { SortService } from \"./clientSideRowModel/sortService\";\nimport { FilterService } from \"./clientSideRowModel/filterService\";\nimport { ImmutableService } from \"./clientSideRowModel/immutableService\";\nexport var ClientSideRowModelModule = {\n moduleName: ModuleNames.ClientSideRowModelModule,\n beans: [FilterStage, SortStage, FlattenStage, SortService, FilterService, ImmutableService],\n rowModels: { clientSide: ClientSideRowModel }\n};\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { RefSelector } from \"./componentAnnotations\";\nimport { AgAbstractField } from \"./agAbstractField\";\nimport { _ } from \"../utils\";\nvar AgAbstractInputField = /** @class */ (function (_super) {\n __extends(AgAbstractInputField, _super);\n function AgAbstractInputField() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.config = {};\n _this.TEMPLATE = \"
\\n \\n
\\n <%displayField% ref=\\\"eInput\\\">\\n
\\n
\";\n return _this;\n }\n AgAbstractInputField.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n this.setInputType();\n _.addCssClass(this.getGui(), this.className);\n var _a = this.config, width = _a.width, value = _a.value;\n if (width != null) {\n this.setWidth(width);\n }\n if (value != null) {\n this.setValue(value);\n }\n this.addInputListeners();\n };\n AgAbstractInputField.prototype.addInputListeners = function () {\n var _this = this;\n this.addDestroyableEventListener(this.eInput, 'input', function (e) {\n var value = e.target.value;\n _this.setValue(value);\n });\n };\n AgAbstractInputField.prototype.setInputType = function () {\n if (this.inputType) {\n this.eInput.setAttribute('type', this.inputType);\n }\n };\n AgAbstractInputField.prototype.getInputElement = function () {\n return this.eInput;\n };\n AgAbstractInputField.prototype.setInputWidth = function (width) {\n _.setElementWidth(this.eWrapper, width);\n return this;\n };\n AgAbstractInputField.prototype.setInputName = function (name) {\n this.getInputElement().setAttribute('name', name);\n return this;\n };\n __decorate([\n RefSelector('eLabel')\n ], AgAbstractInputField.prototype, \"eLabel\", void 0);\n __decorate([\n RefSelector('eWrapper')\n ], AgAbstractInputField.prototype, \"eWrapper\", void 0);\n __decorate([\n RefSelector('eInput')\n ], AgAbstractInputField.prototype, \"eInput\", void 0);\n return AgAbstractInputField;\n}(AgAbstractField));\nexport { AgAbstractInputField };\n","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nvar Tablelvl2Context = /*#__PURE__*/React.createContext();\n\nif (process.env.NODE_ENV !== 'production') {\n Tablelvl2Context.displayName = 'Tablelvl2Context';\n}\n\nexport default Tablelvl2Context;","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nexport default function createChainedFunction() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.reduce(function (acc, func) {\n if (func == null) {\n return acc;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof func !== 'function') {\n console.error('Material-UI: Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n }\n\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, function () {});\n}","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nvar ListContext = /*#__PURE__*/React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ListContext.displayName = 'ListContext';\n}\n\nexport default ListContext;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nvar FormControlContext = /*#__PURE__*/React.createContext();\n\nif (process.env.NODE_ENV !== 'production') {\n FormControlContext.displayName = 'FormControlContext';\n}\n\nexport function useFormControl() {\n return React.useContext(FormControlContext);\n}\nexport default FormControlContext;","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Events } from '../events';\nimport { PropertyKeys } from '../propertyKeys';\nimport { GridOptionsWrapper } from \"../gridOptionsWrapper\";\nimport { _ } from '../utils';\nvar ComponentUtil = /** @class */ (function () {\n function ComponentUtil() {\n }\n ComponentUtil.getEventCallbacks = function () {\n if (!ComponentUtil.EVENT_CALLBACKS) {\n ComponentUtil.EVENT_CALLBACKS = ComponentUtil.EVENTS.map(function (event) { return ComponentUtil.getCallbackForEvent(event); });\n }\n return ComponentUtil.EVENT_CALLBACKS;\n };\n ComponentUtil.copyAttributesToGridOptions = function (gridOptions, component, skipEventDeprecationCheck) {\n if (skipEventDeprecationCheck === void 0) { skipEventDeprecationCheck = false; }\n checkForDeprecated(component);\n // create empty grid options if none were passed\n if (typeof gridOptions !== 'object') {\n gridOptions = {};\n }\n // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'\n var pGridOptions = gridOptions;\n var keyExists = function (key) { return typeof component[key] !== 'undefined'; };\n // add in all the simple properties\n __spreadArrays(ComponentUtil.ARRAY_PROPERTIES, ComponentUtil.STRING_PROPERTIES, ComponentUtil.OBJECT_PROPERTIES, ComponentUtil.FUNCTION_PROPERTIES, ComponentUtil.getEventCallbacks()).filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = component[key]; });\n ComponentUtil.BOOLEAN_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toBoolean(component[key]); });\n ComponentUtil.NUMBER_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toNumber(component[key]); });\n // purely for event deprecation checks (for frameworks - wouldn't apply for non-fw versions)\n if (!skipEventDeprecationCheck) {\n ComponentUtil.EVENTS\n // React uses onXXX, not sure why this is different to the other frameworks\n .filter(function (event) { return keyExists(event) || keyExists(ComponentUtil.getCallbackForEvent(event)); })\n .forEach(function (event) { return GridOptionsWrapper.checkEventDeprecation(event); });\n }\n return gridOptions;\n };\n ComponentUtil.getCallbackForEvent = function (eventName) {\n if (!eventName || eventName.length < 2) {\n return eventName;\n }\n else {\n return 'on' + eventName[0].toUpperCase() + eventName.substr(1);\n }\n };\n ComponentUtil.processOnChange = function (changes, gridOptions, api, columnApi) {\n if (!changes) {\n return;\n }\n checkForDeprecated(changes);\n // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'\n var pGridOptions = gridOptions;\n var keyExists = function (key) { return changes[key]; };\n // check if any change for the simple types, and if so, then just copy in the new value\n __spreadArrays(ComponentUtil.ARRAY_PROPERTIES, ComponentUtil.OBJECT_PROPERTIES, ComponentUtil.STRING_PROPERTIES, ComponentUtil.getEventCallbacks()).filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = changes[key].currentValue; });\n ComponentUtil.BOOLEAN_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toBoolean(changes[key].currentValue); });\n ComponentUtil.NUMBER_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toNumber(changes[key].currentValue); });\n if (changes.enableCellTextSelection) {\n api.setEnableCellTextSelection(ComponentUtil.toBoolean(changes.enableCellTextSelection.currentValue));\n }\n if (changes.showToolPanel) {\n api.showToolPanel(ComponentUtil.toBoolean(changes.showToolPanel.currentValue));\n }\n if (changes.quickFilterText) {\n api.setQuickFilter(changes.quickFilterText.currentValue);\n }\n if (changes.rowData) {\n api.setRowData(changes.rowData.currentValue);\n }\n if (changes.pinnedTopRowData) {\n api.setPinnedTopRowData(changes.pinnedTopRowData.currentValue);\n }\n if (changes.pinnedBottomRowData) {\n api.setPinnedBottomRowData(changes.pinnedBottomRowData.currentValue);\n }\n if (changes.columnDefs) {\n api.setColumnDefs(changes.columnDefs.currentValue, \"gridOptionsChanged\");\n }\n if (changes.datasource) {\n api.setDatasource(changes.datasource.currentValue);\n }\n if (changes.headerHeight) {\n api.setHeaderHeight(ComponentUtil.toNumber(changes.headerHeight.currentValue));\n }\n if (changes.paginationPageSize) {\n api.paginationSetPageSize(ComponentUtil.toNumber(changes.paginationPageSize.currentValue));\n }\n if (changes.pivotMode) {\n columnApi.setPivotMode(ComponentUtil.toBoolean(changes.pivotMode.currentValue));\n }\n if (changes.groupRemoveSingleChildren) {\n api.setGroupRemoveSingleChildren(ComponentUtil.toBoolean(changes.groupRemoveSingleChildren.currentValue));\n }\n if (changes.suppressRowDrag) {\n api.setSuppressRowDrag(ComponentUtil.toBoolean(changes.suppressRowDrag.currentValue));\n }\n if (changes.gridAutoHeight) {\n api.setGridAutoHeight(ComponentUtil.toBoolean(changes.gridAutoHeight.currentValue));\n }\n if (changes.suppressClipboardPaste) {\n api.setSuppressClipboardPaste(ComponentUtil.toBoolean(changes.suppressClipboardPaste.currentValue));\n }\n if (changes.sideBar) {\n api.setSideBar(changes.sideBar.currentValue);\n }\n // copy changes into an event for dispatch\n var event = {\n type: Events.EVENT_COMPONENT_STATE_CHANGED,\n api: gridOptions.api,\n columnApi: gridOptions.columnApi\n };\n _.iterateObject(changes, function (key, value) {\n event[key] = value;\n });\n api.dispatchEvent(event);\n };\n ComponentUtil.toBoolean = function (value) {\n if (typeof value === 'boolean') {\n return value;\n }\n else if (typeof value === 'string') {\n // for boolean, compare to empty String to allow attributes appearing with\n // no value to be treated as 'true'\n return value.toUpperCase() === 'TRUE' || value == '';\n }\n else {\n return false;\n }\n };\n ComponentUtil.toNumber = function (value) {\n if (typeof value === 'number') {\n return value;\n }\n else if (typeof value === 'string') {\n return Number(value);\n }\n else {\n return undefined;\n }\n };\n // all the events are populated in here AFTER this class (at the bottom of the file).\n ComponentUtil.EVENTS = [];\n ComponentUtil.STRING_PROPERTIES = PropertyKeys.STRING_PROPERTIES;\n ComponentUtil.OBJECT_PROPERTIES = PropertyKeys.OBJECT_PROPERTIES;\n ComponentUtil.ARRAY_PROPERTIES = PropertyKeys.ARRAY_PROPERTIES;\n ComponentUtil.NUMBER_PROPERTIES = PropertyKeys.NUMBER_PROPERTIES;\n ComponentUtil.BOOLEAN_PROPERTIES = PropertyKeys.BOOLEAN_PROPERTIES;\n ComponentUtil.FUNCTION_PROPERTIES = PropertyKeys.FUNCTION_PROPERTIES;\n ComponentUtil.ALL_PROPERTIES = PropertyKeys.ALL_PROPERTIES;\n return ComponentUtil;\n}());\nexport { ComponentUtil };\nComponentUtil.EVENTS = _.values(Events);\nfunction checkForDeprecated(changes) {\n if (changes.rowDeselected || changes.onRowDeselected) {\n console.warn('ag-grid: as of v3.4 rowDeselected no longer exists. Please check the docs.');\n }\n}\n","import toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport getDaysInMonth from '../getDaysInMonth/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * var result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\n\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n var desiredMonth = date.getMonth() + amount;\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth); // Set the last day of the new month\n // if the original date was the last day of the longer month\n\n date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate()));\n return date;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * var result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n date.setDate(date.getDate() + amount);\n return date;\n}","var objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isDate = require('is-date-object');\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected;\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n /* eslint max-statements: [2, 50] */\n var i, key;\n if (typeof a !== typeof b) { return false; }\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if (aIsRegex || bIsRegex) {\n return a.source === b.source && flags(a) === flags(b);\n }\n\n if (isDate(a) && isDate(b)) {\n return getTime.call(a) === getTime.call(b);\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n if (typeof a !== typeof b) { return false; }\n\n try {\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n } catch (e) { // happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; }\n }\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) { return false; }\n }\n\n return true;\n}\n\nmodule.exports = deepEqual;\n","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token) {\n if (token === 'YYYY') {\n throw new RangeError('Use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr');\n } else if (token === 'YY') {\n throw new RangeError('Use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr');\n } else if (token === 'D') {\n throw new RangeError('Use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr');\n } else if (token === 'DD') {\n throw new RangeError('Use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr');\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n margin: 0\n },\n\n /* Styles applied to the root element if `variant=\"body2\"`. */\n body2: theme.typography.body2,\n\n /* Styles applied to the root element if `variant=\"body1\"`. */\n body1: theme.typography.body1,\n\n /* Styles applied to the root element if `variant=\"caption\"`. */\n caption: theme.typography.caption,\n\n /* Styles applied to the root element if `variant=\"button\"`. */\n button: theme.typography.button,\n\n /* Styles applied to the root element if `variant=\"h1\"`. */\n h1: theme.typography.h1,\n\n /* Styles applied to the root element if `variant=\"h2\"`. */\n h2: theme.typography.h2,\n\n /* Styles applied to the root element if `variant=\"h3\"`. */\n h3: theme.typography.h3,\n\n /* Styles applied to the root element if `variant=\"h4\"`. */\n h4: theme.typography.h4,\n\n /* Styles applied to the root element if `variant=\"h5\"`. */\n h5: theme.typography.h5,\n\n /* Styles applied to the root element if `variant=\"h6\"`. */\n h6: theme.typography.h6,\n\n /* Styles applied to the root element if `variant=\"subtitle1\"`. */\n subtitle1: theme.typography.subtitle1,\n\n /* Styles applied to the root element if `variant=\"subtitle2\"`. */\n subtitle2: theme.typography.subtitle2,\n\n /* Styles applied to the root element if `variant=\"overline\"`. */\n overline: theme.typography.overline,\n\n /* Styles applied to the root element if `variant=\"srOnly\"`. Only accessible to screen readers. */\n srOnly: {\n position: 'absolute',\n height: 1,\n width: 1,\n overflow: 'hidden'\n },\n\n /* Styles applied to the root element if `align=\"left\"`. */\n alignLeft: {\n textAlign: 'left'\n },\n\n /* Styles applied to the root element if `align=\"center\"`. */\n alignCenter: {\n textAlign: 'center'\n },\n\n /* Styles applied to the root element if `align=\"right\"`. */\n alignRight: {\n textAlign: 'right'\n },\n\n /* Styles applied to the root element if `align=\"justify\"`. */\n alignJustify: {\n textAlign: 'justify'\n },\n\n /* Styles applied to the root element if `nowrap={true}`. */\n noWrap: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n },\n\n /* Styles applied to the root element if `gutterBottom={true}`. */\n gutterBottom: {\n marginBottom: '0.35em'\n },\n\n /* Styles applied to the root element if `paragraph={true}`. */\n paragraph: {\n marginBottom: 16\n },\n\n /* Styles applied to the root element if `color=\"inherit\"`. */\n colorInherit: {\n color: 'inherit'\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main\n },\n\n /* Styles applied to the root element if `color=\"textPrimary\"`. */\n colorTextPrimary: {\n color: theme.palette.text.primary\n },\n\n /* Styles applied to the root element if `color=\"textSecondary\"`. */\n colorTextSecondary: {\n color: theme.palette.text.secondary\n },\n\n /* Styles applied to the root element if `color=\"error\"`. */\n colorError: {\n color: theme.palette.error.main\n },\n\n /* Styles applied to the root element if `display=\"inline\"`. */\n displayInline: {\n display: 'inline'\n },\n\n /* Styles applied to the root element if `display=\"block\"`. */\n displayBlock: {\n display: 'block'\n }\n };\n};\nvar defaultVariantMapping = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n subtitle1: 'h6',\n subtitle2: 'h6',\n body1: 'p',\n body2: 'p'\n};\nvar Typography = /*#__PURE__*/React.forwardRef(function Typography(props, ref) {\n var _props$align = props.align,\n align = _props$align === void 0 ? 'inherit' : _props$align,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'initial' : _props$color,\n component = props.component,\n _props$display = props.display,\n display = _props$display === void 0 ? 'initial' : _props$display,\n _props$gutterBottom = props.gutterBottom,\n gutterBottom = _props$gutterBottom === void 0 ? false : _props$gutterBottom,\n _props$noWrap = props.noWrap,\n noWrap = _props$noWrap === void 0 ? false : _props$noWrap,\n _props$paragraph = props.paragraph,\n paragraph = _props$paragraph === void 0 ? false : _props$paragraph,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'body1' : _props$variant,\n _props$variantMapping = props.variantMapping,\n variantMapping = _props$variantMapping === void 0 ? defaultVariantMapping : _props$variantMapping,\n other = _objectWithoutProperties(props, [\"align\", \"classes\", \"className\", \"color\", \"component\", \"display\", \"gutterBottom\", \"noWrap\", \"paragraph\", \"variant\", \"variantMapping\"]);\n\n var Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span';\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, variant !== 'inherit' && classes[variant], color !== 'initial' && classes[\"color\".concat(capitalize(color))], noWrap && classes.noWrap, gutterBottom && classes.gutterBottom, paragraph && classes.paragraph, align !== 'inherit' && classes[\"align\".concat(capitalize(align))], display !== 'initial' && classes[\"display\".concat(capitalize(display))]),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Typography.propTypes = {\n /**\n * Set the text-align on the component.\n */\n align: PropTypes.oneOf(['inherit', 'left', 'center', 'right', 'justify']),\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['initial', 'inherit', 'primary', 'secondary', 'textPrimary', 'textSecondary', 'error']),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n * Overrides the behavior of the `variantMapping` prop.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * Controls the display type\n */\n display: PropTypes.oneOf(['initial', 'block', 'inline']),\n\n /**\n * If `true`, the text will have a bottom margin.\n */\n gutterBottom: PropTypes.bool,\n\n /**\n * If `true`, the text will not wrap, but instead will truncate with a text overflow ellipsis.\n *\n * Note that text overflow can only happen with block or inline-block level elements\n * (the element needs to have a width in order to overflow).\n */\n noWrap: PropTypes.bool,\n\n /**\n * If `true`, the text will have a bottom margin.\n */\n paragraph: PropTypes.bool,\n\n /**\n * Applies the theme typography styles.\n */\n variant: PropTypes.oneOf(['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'caption', 'button', 'overline', 'srOnly', 'inherit']),\n\n /**\n * The component maps the variant prop to a range of different HTML element types.\n * For instance, subtitle1 to `
`.\n * If you wish to change that mapping, you can provide your own.\n * Alternatively, you can use the `component` prop.\n */\n variantMapping: PropTypes.object\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiTypography'\n})(Typography);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport React from 'react';\nimport { SheetsRegistry } from 'jss';\nimport StylesProvider from '../StylesProvider';\nimport createGenerateClassName from '../createGenerateClassName';\n\nvar ServerStyleSheets = /*#__PURE__*/function () {\n function ServerStyleSheets() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, ServerStyleSheets);\n\n this.options = options;\n }\n\n _createClass(ServerStyleSheets, [{\n key: \"collect\",\n value: function collect(children) {\n // This is needed in order to deduplicate the injection of CSS in the page.\n var sheetsManager = new Map(); // This is needed in order to inject the critical CSS.\n\n this.sheetsRegistry = new SheetsRegistry(); // A new class name generator\n\n var generateClassName = createGenerateClassName();\n return /*#__PURE__*/React.createElement(StylesProvider, _extends({\n sheetsManager: sheetsManager,\n serverGenerateClassName: generateClassName,\n sheetsRegistry: this.sheetsRegistry\n }, this.options), children);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.sheetsRegistry ? this.sheetsRegistry.toString() : '';\n }\n }, {\n key: \"getStyleElement\",\n value: function getStyleElement(props) {\n return React.createElement('style', _extends({\n id: 'jss-server-side',\n key: 'jss-server-side',\n dangerouslySetInnerHTML: {\n __html: this.toString()\n }\n }, props));\n }\n }]);\n\n return ServerStyleSheets;\n}();\n\nexport { ServerStyleSheets as default };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { chainPropTypes, getDisplayName } from '@material-ui/utils';\nimport useTheme from '../useTheme';\nexport function withThemeCreator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaultTheme = options.defaultTheme;\n\n var withTheme = function withTheme(Component) {\n if (process.env.NODE_ENV !== 'production') {\n if (Component === undefined) {\n throw new Error(['You are calling withTheme(Component) with an undefined component.', 'You may have forgotten to import it.'].join('\\n'));\n }\n }\n\n var WithTheme = React.forwardRef(function WithTheme(props, ref) {\n var innerRef = props.innerRef,\n other = _objectWithoutProperties(props, [\"innerRef\"]);\n\n var theme = useTheme() || defaultTheme;\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: innerRef || ref\n }, other));\n });\n process.env.NODE_ENV !== \"production\" ? WithTheme.propTypes = {\n /**\n * Use that prop to pass a ref to the decorated component.\n * @deprecated\n */\n innerRef: chainPropTypes(PropTypes.oneOfType([PropTypes.func, PropTypes.object]), function (props) {\n if (props.innerRef == null) {\n return null;\n }\n\n return new Error('Material-UI: The `innerRef` prop is deprecated and will be removed in v5. ' + 'Refs are now automatically forwarded to the inner component.');\n })\n } : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n WithTheme.displayName = \"WithTheme(\".concat(getDisplayName(Component), \")\");\n }\n\n hoistNonReactStatics(WithTheme, Component);\n\n if (process.env.NODE_ENV !== 'production') {\n // Exposed for test purposes.\n WithTheme.Naked = Component;\n }\n\n return WithTheme;\n };\n\n return withTheme;\n} // Provide the theme object as a prop to the input component.\n// It's an alternative API to useTheme().\n// We encourage the usage of useTheme() where possible.\n\nvar withTheme = withThemeCreator();\nexport default withTheme;","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"../../widgets/component\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { Autowired, PostConstruct } from \"../../context/context\";\nimport { _ } from \"../../utils\";\nimport { Constants } from \"../../constants\";\n/**\n * Contains common logic to all provided filters (apply button, clear button, etc).\n * All the filters that come with ag-Grid extend this class. User filters do not\n * extend this class.\n */\nvar ProvidedFilter = /** @class */ (function (_super) {\n __extends(ProvidedFilter, _super);\n function ProvidedFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /** @deprecated */\n ProvidedFilter.prototype.onFilterChanged = function () {\n console.warn(\"ag-Grid: you should not call onFilterChanged() directly on the filter, please call\\n gridApi.onFilterChanged() instead. onFilterChanged is not part of the exposed filter interface (it was\\n a method that existed on an old version of the filters that was not intended for public use.\");\n this.providedFilterParams.filterChangedCallback();\n };\n ProvidedFilter.prototype.isFilterActive = function () {\n // filter is active if we have a valid applied model\n return !!this.appliedModel;\n };\n ProvidedFilter.prototype.postConstruct = function () {\n var templateString = this.createTemplate();\n this.setTemplate(templateString);\n };\n ProvidedFilter.prototype.init = function (params) {\n this.setParams(params);\n this.resetUiToDefaults();\n this.updateUiVisibility();\n this.setupOnBtApplyDebounce();\n };\n ProvidedFilter.prototype.setParams = function (params) {\n var _this = this;\n this.providedFilterParams = params;\n this.clearActive = params.clearButton === true;\n this.applyActive = ProvidedFilter.isUseApplyButton(params);\n if (params.newRowsAction === ProvidedFilter.NEW_ROWS_ACTION_KEEP) {\n this.newRowsActionKeep = true;\n }\n else if (params.newRowsAction === ProvidedFilter.NEW_ROWS_ACTION_CLEAR) {\n this.newRowsActionKeep = false;\n }\n else {\n // the default for SSRM and IRM is 'keep', for CSRM and VRM teh default is 'clear'\n var rowModelType = this.rowModel.getType();\n var modelsForKeep = [Constants.ROW_MODEL_TYPE_SERVER_SIDE, Constants.ROW_MODEL_TYPE_INFINITE];\n this.newRowsActionKeep = modelsForKeep.indexOf(rowModelType) >= 0;\n }\n _.setDisplayed(this.eApplyButton, this.applyActive);\n // we do not bind onBtApply here because onBtApply() has a parameter, and it is not the event. if we\n // just applied, the event would get passed as the second parameter, which we do not want.\n this.addDestroyableEventListener(this.eApplyButton, \"click\", function () { return _this.onBtApply(); });\n _.setDisplayed(this.eClearButton, this.clearActive);\n this.addDestroyableEventListener(this.eClearButton, \"click\", this.onBtClear.bind(this));\n var anyButtonVisible = this.applyActive || this.clearActive;\n _.setDisplayed(this.eButtonsPanel, anyButtonVisible);\n };\n // subclasses can override this to provide alternative debounce defaults\n ProvidedFilter.prototype.getDefaultDebounceMs = function () {\n return 0;\n };\n ProvidedFilter.prototype.setupOnBtApplyDebounce = function () {\n var debounceMs = ProvidedFilter.getDebounceMs(this.providedFilterParams, this.getDefaultDebounceMs());\n this.onBtApplyDebounce = _.debounce(this.onBtApply.bind(this), debounceMs);\n };\n ProvidedFilter.prototype.getModel = function () {\n return this.appliedModel;\n };\n ProvidedFilter.prototype.setModel = function (model) {\n if (model) {\n this.setModelIntoUi(model);\n }\n else {\n this.resetUiToDefaults();\n }\n this.updateUiVisibility();\n // we set the model from the gui, rather than the provided model,\n // so the model is consistent. eg handling of null/undefined will be the same,\n // of if model is case insensitive, then casing is removed.\n this.applyModel();\n };\n ProvidedFilter.prototype.onBtClear = function () {\n this.resetUiToDefaults();\n this.updateUiVisibility();\n this.onUiChanged();\n };\n // returns true if the new model is different to the old model\n ProvidedFilter.prototype.applyModel = function () {\n var oldAppliedModel = this.appliedModel;\n this.appliedModel = this.getModelFromUi();\n // models can be same if user pasted same content into text field, or maybe just changed the case\n // and it's a case insensitive filter\n var newModelDifferent = !this.areModelsEqual(this.appliedModel, oldAppliedModel);\n return newModelDifferent;\n };\n ProvidedFilter.prototype.onBtApply = function (afterFloatingFilter) {\n if (afterFloatingFilter === void 0) { afterFloatingFilter = false; }\n var newModelDifferent = this.applyModel();\n if (newModelDifferent) {\n // the floating filter uses 'afterFloatingFilter' info, so it doesn't refresh after filter changed if change\n // came from floating filter\n this.providedFilterParams.filterChangedCallback({ afterFloatingFilter: afterFloatingFilter });\n }\n };\n ProvidedFilter.prototype.onNewRowsLoaded = function () {\n if (!this.newRowsActionKeep) {\n this.resetUiToDefaults();\n this.appliedModel = null;\n }\n };\n // called by set filter\n ProvidedFilter.prototype.isNewRowsActionKeep = function () {\n return this.newRowsActionKeep;\n };\n ProvidedFilter.prototype.onUiChanged = function (afterFloatingFilter) {\n if (afterFloatingFilter === void 0) { afterFloatingFilter = false; }\n this.updateUiVisibility();\n this.providedFilterParams.filterModifiedCallback();\n // applyNow=true for floating filter changes, we always act on these immediately\n if (afterFloatingFilter) {\n this.onBtApply(true);\n // otherwise if no apply button, we apply (but debounce for time delay)\n }\n else if (!this.applyActive) {\n this.onBtApplyDebounce();\n }\n };\n ProvidedFilter.prototype.createTemplate = function () {\n var body = this.createBodyTemplate();\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n return \"
\\n
\" + body + \"
\\n
\\n \\n \\n
\\n
\";\n };\n // static, as used by floating filter also\n ProvidedFilter.getDebounceMs = function (params, debounceDefault) {\n var applyActive = ProvidedFilter.isUseApplyButton(params);\n if (applyActive) {\n if (params.debounceMs != null) {\n console.warn('ag-Grid: debounceMs is ignored when applyButton = true');\n }\n return 0;\n }\n return params.debounceMs != null ? params.debounceMs : debounceDefault;\n };\n // static, as used by floating filter also\n ProvidedFilter.isUseApplyButton = function (params) {\n if (params.apply && !params.applyButton) {\n console.warn('ag-Grid: as of ag-Grid v21, filterParams.apply is now filterParams.applyButton, please change to applyButton');\n params.applyButton = true;\n }\n return params.applyButton === true;\n };\n ProvidedFilter.NEW_ROWS_ACTION_KEEP = 'keep';\n ProvidedFilter.NEW_ROWS_ACTION_CLEAR = 'clear';\n __decorate([\n RefSelector('eButtonsPanel')\n ], ProvidedFilter.prototype, \"eButtonsPanel\", void 0);\n __decorate([\n RefSelector('eFilterBodyWrapper')\n ], ProvidedFilter.prototype, \"eFilterBodyWrapper\", void 0);\n __decorate([\n RefSelector('eApplyButton')\n ], ProvidedFilter.prototype, \"eApplyButton\", void 0);\n __decorate([\n RefSelector('eClearButton')\n ], ProvidedFilter.prototype, \"eClearButton\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ProvidedFilter.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('rowModel')\n ], ProvidedFilter.prototype, \"rowModel\", void 0);\n __decorate([\n PostConstruct\n ], ProvidedFilter.prototype, \"postConstruct\", null);\n return ProvidedFilter;\n}(Component));\nexport { ProvidedFilter };\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\n}), 'Check');\n\nexports.default = _default;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","export { default } from './SvgIcon';","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { Column } from \"../../entities/column\";\nimport { BeanStub } from \"../../context/beanStub\";\nimport { Constants } from \"../../constants\";\nimport { _ } from \"../../utils\";\nvar SetLeftFeature = /** @class */ (function (_super) {\n __extends(SetLeftFeature, _super);\n function SetLeftFeature(columnOrGroup, eCell, beans, colsSpanning) {\n var _this = _super.call(this) || this;\n _this.columnOrGroup = columnOrGroup;\n _this.eCell = eCell;\n _this.colsSpanning = colsSpanning;\n _this.beans = beans;\n _this.printLayout = beans.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n return _this;\n }\n SetLeftFeature.prototype.setColsSpanning = function (colsSpanning) {\n this.colsSpanning = colsSpanning;\n this.onLeftChanged();\n };\n SetLeftFeature.prototype.getColumnOrGroup = function () {\n if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {\n return _.last(this.colsSpanning);\n }\n else {\n return this.columnOrGroup;\n }\n };\n SetLeftFeature.prototype.init = function () {\n this.addDestroyableEventListener(this.columnOrGroup, Column.EVENT_LEFT_CHANGED, this.onLeftChanged.bind(this));\n this.setLeftFirstTime();\n };\n SetLeftFeature.prototype.setLeftFirstTime = function () {\n var suppressMoveAnimation = this.beans.gridOptionsWrapper.isSuppressColumnMoveAnimation();\n var oldLeftExists = _.exists(this.columnOrGroup.getOldLeft());\n var animateColumnMove = this.beans.columnAnimationService.isActive() && oldLeftExists && !suppressMoveAnimation;\n if (animateColumnMove) {\n this.animateInLeft();\n }\n else {\n this.onLeftChanged();\n }\n };\n SetLeftFeature.prototype.animateInLeft = function () {\n var _this = this;\n var left = this.getColumnOrGroup().getLeft();\n var oldLeft = this.getColumnOrGroup().getOldLeft();\n this.setLeft(oldLeft);\n // we must keep track of the left we want to set to, as this would otherwise lead to a race\n // condition, if the user changed the left value many times in one VM turn, then we want to make\n // make sure the actualLeft we set in the timeout below (in the next VM turn) is the correct left\n // position. eg if user changes column position twice, then setLeft() below executes twice in next\n // VM turn, but only one (the correct one) should get applied.\n this.actualLeft = left;\n this.beans.columnAnimationService.executeNextVMTurn(function () {\n // test this left value is the latest one to be applied, and if not, do nothing\n if (_this.actualLeft === left) {\n _this.setLeft(left);\n }\n });\n };\n SetLeftFeature.prototype.onLeftChanged = function () {\n var colOrGroup = this.getColumnOrGroup();\n var left = colOrGroup.getLeft();\n this.actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);\n this.setLeft(this.actualLeft);\n };\n SetLeftFeature.prototype.modifyLeftForPrintLayout = function (colOrGroup, leftPosition) {\n if (!this.printLayout) {\n return leftPosition;\n }\n if (colOrGroup.getPinned() === Constants.PINNED_LEFT) {\n return leftPosition;\n }\n else if (colOrGroup.getPinned() === Constants.PINNED_RIGHT) {\n var leftWidth = this.beans.columnController.getPinnedLeftContainerWidth();\n var bodyWidth = this.beans.columnController.getBodyContainerWidth();\n return leftWidth + bodyWidth + leftPosition;\n }\n else {\n // is in body\n var leftWidth = this.beans.columnController.getPinnedLeftContainerWidth();\n return leftWidth + leftPosition;\n }\n };\n SetLeftFeature.prototype.setLeft = function (value) {\n // if the value is null, then that means the column is no longer\n // displayed. there is logic in the rendering to fade these columns\n // out, so we don't try and change their left positions.\n if (_.exists(value)) {\n this.eCell.style.left = value + \"px\";\n }\n };\n return SetLeftFeature;\n}(BeanStub));\nexport { SetLeftFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Autowired } from \"../context/context\";\nimport { AgAbstractInputField } from \"./agAbstractInputField\";\nimport { AgAbstractField } from \"./agAbstractField\";\nimport { _ } from \"../utils\";\nvar AgCheckbox = /** @class */ (function (_super) {\n __extends(AgCheckbox, _super);\n function AgCheckbox() {\n var _this = _super.call(this) || this;\n _this.className = 'ag-checkbox';\n _this.displayTag = 'input';\n _this.inputType = 'checkbox';\n _this.labelAlignment = 'right';\n _this.iconMap = {\n selected: 'checkboxChecked',\n unselected: 'checkboxUnchecked',\n indeterminate: 'checkboxIndeterminate'\n };\n _this.selected = false;\n _this.readOnly = false;\n _this.passive = false;\n _this.setTemplate(_this.TEMPLATE.replace(/%displayField%/g, _this.displayTag));\n return _this;\n }\n AgCheckbox.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n _.addCssClass(this.eInput, 'ag-hidden');\n this.addIconsPlaceholder();\n this.updateIcons();\n };\n AgCheckbox.prototype.addInputListeners = function () {\n var _this = this;\n this.addDestroyableEventListener(this.getGui(), 'click', function (e) { return _this.onClick(e); });\n this.addDestroyableEventListener(this.eInput, 'change', function (e) { return _this.setValue(e.target.checked, true); });\n };\n AgCheckbox.prototype.addIconsPlaceholder = function () {\n var iconDiv = document.createElement('div');\n this.eWrapper.appendChild(iconDiv);\n this.eIconEl = iconDiv;\n };\n AgCheckbox.prototype.onClick = function (event) {\n // if we don't set the path, then won't work in Edge, as once the is removed from the dom,\n // it's not possible to calculate the path by following the parent's chain. in other browser (eg\n // chrome) there is event.path for this purpose, but missing in Edge.\n _.addAgGridEventPath(event);\n if (!this.readOnly) {\n this.toggle();\n }\n };\n AgCheckbox.prototype.getNextValue = function () {\n return this.selected === undefined ? true : !this.selected;\n };\n AgCheckbox.prototype.setPassive = function (passive) {\n this.passive = passive;\n };\n AgCheckbox.prototype.setReadOnly = function (readOnly) {\n this.readOnly = readOnly;\n this.updateIcons();\n };\n AgCheckbox.prototype.isReadOnly = function () {\n return this.readOnly;\n };\n AgCheckbox.prototype.isSelected = function () {\n return this.selected;\n };\n AgCheckbox.prototype.toggle = function () {\n var nextValue = this.getNextValue();\n if (this.passive) {\n var event_1 = {\n type: AgCheckbox.EVENT_CHANGED,\n selected: nextValue\n };\n this.dispatchEvent(event_1);\n }\n else {\n this.setValue(nextValue);\n }\n };\n AgCheckbox.prototype.setSelected = function (selected, silent) {\n if (this.selected === selected) {\n return;\n }\n this.selected = typeof selected === 'boolean' ? selected : undefined;\n this.eInput.checked = this.selected;\n this.updateIcons();\n if (!silent) {\n var event_2 = {\n type: AgAbstractField.EVENT_CHANGED,\n selected: this.selected\n };\n this.dispatchEvent(event_2);\n }\n };\n AgCheckbox.prototype.getIconName = function () {\n var value = this.getValue();\n var prop = value === undefined ? 'indeterminate' : (value ? 'selected' : 'unselected');\n var readOnlyStr = this.isReadOnly() ? 'ReadOnly' : '';\n return \"\" + this.iconMap[prop] + readOnlyStr;\n };\n AgCheckbox.prototype.updateIcons = function () {\n _.clearElement(this.eIconEl);\n this.eIconEl.appendChild(_.createIconNoSpan(this.getIconName(), this.gridOptionsWrapper, null));\n };\n AgCheckbox.prototype.getValue = function () {\n return this.isSelected();\n };\n AgCheckbox.prototype.setValue = function (value, silent) {\n this.setSelected(value, silent);\n return this;\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], AgCheckbox.prototype, \"gridOptionsWrapper\", void 0);\n return AgCheckbox;\n}(AgAbstractInputField));\nexport { AgCheckbox };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Bean } from \"./context/context\";\nimport { Qualifier } from \"./context/context\";\nvar LoggerFactory = /** @class */ (function () {\n function LoggerFactory() {\n }\n LoggerFactory.prototype.setBeans = function (gridOptionsWrapper) {\n this.logging = gridOptionsWrapper.isDebug();\n };\n LoggerFactory.prototype.create = function (name) {\n return new Logger(name, this.isLogging.bind(this));\n };\n LoggerFactory.prototype.isLogging = function () {\n return this.logging;\n };\n __decorate([\n __param(0, Qualifier('gridOptionsWrapper'))\n ], LoggerFactory.prototype, \"setBeans\", null);\n LoggerFactory = __decorate([\n Bean('loggerFactory')\n ], LoggerFactory);\n return LoggerFactory;\n}());\nexport { LoggerFactory };\nvar Logger = /** @class */ (function () {\n function Logger(name, isLoggingFunc) {\n this.name = name;\n this.isLoggingFunc = isLoggingFunc;\n }\n Logger.prototype.isLogging = function () {\n return this.isLoggingFunc();\n };\n Logger.prototype.log = function (message) {\n if (this.isLoggingFunc()) {\n // tslint:disable-next-line\n console.log('ag-Grid.' + this.name + ': ' + message);\n }\n };\n return Logger;\n}());\nexport { Logger };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Autowired } from \"../context/context\";\nimport { AgPanel } from \"./agPanel\";\nimport { Component } from \"./component\";\nimport { _ } from \"../utils\";\nvar AgDialog = /** @class */ (function (_super) {\n __extends(AgDialog, _super);\n function AgDialog(config) {\n var _this = _super.call(this, config) || this;\n _this.RESIZE_TEMPLATE = \"\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \";\n _this.MAXIMIZE_BTN_TEMPLATE = \"
\";\n _this.resizable = {};\n _this.isResizable = false;\n _this.movable = false;\n _this.isMoving = false;\n _this.isMaximizable = false;\n _this.isMaximized = false;\n _this.maximizeListeners = [];\n _this.resizeListenerDestroy = null;\n _this.isResizing = false;\n _this.lastPosition = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n return _this;\n }\n AgDialog.prototype.postConstruct = function () {\n var _this = this;\n var eGui = this.getGui();\n var _a = this.config, movable = _a.movable, resizable = _a.resizable, maximizable = _a.maximizable;\n _.addCssClass(eGui, 'ag-dialog');\n this.moveElement = this.eTitleBar;\n _super.prototype.postConstruct.call(this);\n this.addDestroyableEventListener(eGui, 'focusin', function (e) {\n if (eGui.contains(e.relatedTarget)) {\n return;\n }\n _this.popupService.bringPopupToFront(eGui);\n });\n if (movable) {\n this.setMovable(movable);\n }\n if (maximizable) {\n this.setMaximizable(maximizable);\n }\n this.addResizers();\n if (resizable) {\n this.setResizable(resizable);\n }\n };\n AgDialog.prototype.renderComponent = function () {\n var eGui = this.getGui();\n var _a = this.config, alwaysOnTop = _a.alwaysOnTop, modal = _a.modal;\n this.close = this.popupService.addPopup(modal, eGui, true, this.destroy.bind(this), undefined, alwaysOnTop);\n eGui.focus();\n };\n AgDialog.prototype.addResizers = function () {\n var eGui = this.getGui();\n if (!eGui) {\n return;\n }\n var parser = new DOMParser();\n var resizers = parser.parseFromString(this.RESIZE_TEMPLATE, 'text/html').body;\n eGui.appendChild(resizers.firstChild);\n this.createMap();\n };\n AgDialog.prototype.createMap = function () {\n var eGui = this.getGui();\n this.resizerMap = {\n topLeft: { element: eGui.querySelector('[ref=eTopLeftResizer]') },\n top: { element: eGui.querySelector('[ref=eTopResizer]') },\n topRight: { element: eGui.querySelector('[ref=eTopRightResizer]') },\n right: { element: eGui.querySelector('[ref=eRightResizer]') },\n bottomRight: { element: eGui.querySelector('[ref=eBottomRightResizer]') },\n bottom: { element: eGui.querySelector('[ref=eBottomResizer]') },\n bottomLeft: { element: eGui.querySelector('[ref=eBottomLeftResizer]') },\n left: { element: eGui.querySelector('[ref=eLeftResizer]') }\n };\n };\n AgDialog.prototype.getResizerElement = function (side) {\n return this.resizerMap[side].element;\n };\n AgDialog.prototype.onResizeStart = function (e) {\n this.isResizing = true;\n this.updateDragStartPosition(e.clientX, e.clientY);\n };\n AgDialog.prototype.onResize = function (e, side) {\n if (!this.isResizing) {\n return;\n }\n var isLeft = !!side.match(/left/i);\n var isRight = !!side.match(/right/i);\n var isTop = !!side.match(/top/i);\n var isBottom = !!side.match(/bottom/i);\n var isHorizontal = isLeft || isRight;\n var isVertical = isTop || isBottom;\n var _a = this.calculateMouseMovement({ e: e, isLeft: isLeft, isTop: isTop }), movementX = _a.movementX, movementY = _a.movementY;\n var offsetLeft = 0;\n var offsetTop = 0;\n if (isHorizontal && movementX) {\n var direction = isLeft ? -1 : 1;\n var oldWidth = this.getWidth();\n var newWidth = oldWidth + (movementX * direction);\n var skipWidth = false;\n if (isLeft) {\n offsetLeft = oldWidth - newWidth;\n if (this.position.x + offsetLeft <= 0 || newWidth <= this.minWidth) {\n skipWidth = true;\n offsetLeft = 0;\n }\n }\n if (!skipWidth) {\n this.setWidth(newWidth);\n }\n }\n if (isVertical && movementY) {\n var direction = isTop ? -1 : 1;\n var oldHeight = this.getHeight();\n var newHeight = oldHeight + (movementY * direction);\n var skipHeight = false;\n if (isTop) {\n offsetTop = oldHeight - newHeight;\n if (this.position.y + offsetTop <= 0 || newHeight <= this.minHeight) {\n skipHeight = true;\n offsetTop = 0;\n }\n }\n if (!skipHeight) {\n this.setHeight(newHeight);\n }\n }\n this.updateDragStartPosition(e.clientX, e.clientY);\n if (offsetLeft || offsetTop) {\n this.offsetElement(this.position.x + offsetLeft, this.position.y + offsetTop);\n }\n };\n AgDialog.prototype.onResizeEnd = function () {\n this.isResizing = false;\n var params = {\n type: 'resize',\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n if (this.localEventService) {\n this.localEventService.dispatchEvent(params);\n }\n };\n AgDialog.prototype.onMoveStart = function (e) {\n this.isMoving = true;\n this.updateDragStartPosition(e.clientX, e.clientY);\n };\n AgDialog.prototype.onMove = function (e) {\n if (!this.isMoving) {\n return;\n }\n var _a = this.position, x = _a.x, y = _a.y;\n var _b = this.calculateMouseMovement({\n e: e,\n isTop: true,\n anywhereWithin: true,\n topBuffer: this.getHeight() - this.getBodyHeight()\n }), movementX = _b.movementX, movementY = _b.movementY;\n this.offsetElement(x + movementX, y + movementY);\n this.updateDragStartPosition(e.clientX, e.clientY);\n };\n AgDialog.prototype.onMoveEnd = function () {\n this.isMoving = false;\n };\n AgDialog.prototype.toggleMaximize = function () {\n if (this.isMaximized) {\n var _a = this.lastPosition, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n this.setWidth(width);\n this.setHeight(height);\n this.offsetElement(x, y);\n }\n else {\n this.lastPosition.width = this.getWidth();\n this.lastPosition.height = this.getHeight();\n this.lastPosition.x = this.position.x;\n this.lastPosition.y = this.position.y;\n this.offsetElement(0, 0);\n this.setHeight('100%');\n this.setWidth('100%');\n }\n this.isMaximized = !this.isMaximized;\n this.refreshMaximizeIcon();\n };\n AgDialog.prototype.refreshMaximizeIcon = function () {\n _.addOrRemoveCssClass(this.maximizeIcon, 'ag-hidden', this.isMaximized);\n _.addOrRemoveCssClass(this.minimizeIcon, 'ag-hidden', !this.isMaximized);\n };\n AgDialog.prototype.clearMaximizebleListeners = function () {\n if (this.maximizeListeners.length) {\n this.maximizeListeners.forEach(function (destroyListener) { return destroyListener(); });\n this.maximizeListeners.length = 0;\n }\n if (this.resizeListenerDestroy) {\n this.resizeListenerDestroy();\n this.resizeListenerDestroy = null;\n }\n };\n AgDialog.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.setResizable(false);\n this.setMovable(false);\n if (this.maximizeButtonComp) {\n this.maximizeButtonComp.destroy();\n this.maximizeButtonComp = undefined;\n }\n this.clearMaximizebleListeners();\n };\n AgDialog.prototype.setResizable = function (resizable) {\n var _this = this;\n var isResizable = false;\n if (typeof resizable === 'boolean') {\n resizable = {\n topLeft: resizable,\n top: resizable,\n topRight: resizable,\n right: resizable,\n bottomRight: resizable,\n bottom: resizable,\n bottomLeft: resizable,\n left: resizable\n };\n }\n Object.keys(resizable).forEach(function (side) {\n var r = resizable;\n var s = side;\n var val = !!r[s];\n var el = _this.getResizerElement(s);\n var params = _this.resizerMap[s].dragSource || {\n eElement: el,\n onDragStart: _this.onResizeStart.bind(_this),\n onDragging: function (e) { return _this.onResize(e, s); },\n onDragStop: _this.onResizeEnd.bind(_this),\n };\n if (!!_this.resizable[s] !== val || (!_this.isAlive() && !val)) {\n if (val) {\n _this.dragService.addDragSource(params);\n el.style.pointerEvents = 'all';\n isResizable = true;\n }\n else {\n _this.dragService.removeDragSource(params);\n el.style.pointerEvents = 'none';\n }\n _this.resizerMap[s].dragSource = val ? params : undefined;\n }\n });\n this.isResizable = isResizable;\n };\n AgDialog.prototype.setMovable = function (movable) {\n if (movable !== this.movable) {\n this.movable = movable;\n var params = this.moveElementDragListener || {\n eElement: this.moveElement,\n onDragStart: this.onMoveStart.bind(this),\n onDragging: this.onMove.bind(this),\n onDragStop: this.onMoveEnd.bind(this)\n };\n if (movable) {\n this.dragService.addDragSource(params);\n this.moveElementDragListener = params;\n }\n else {\n this.dragService.removeDragSource(params);\n this.moveElementDragListener = undefined;\n }\n }\n };\n AgDialog.prototype.setMaximizable = function (maximizable) {\n var _this = this;\n if (maximizable === false) {\n this.clearMaximizebleListeners();\n if (this.maximizeButtonComp) {\n this.maximizeButtonComp.destroy();\n this.maximizeButtonComp = this.maximizeIcon = this.minimizeIcon = undefined;\n }\n return;\n }\n var eTitleBar = this.eTitleBar;\n if (!eTitleBar || maximizable === this.isMaximizable) {\n return;\n }\n var maximizeButtonComp = this.maximizeButtonComp = new Component(this.MAXIMIZE_BTN_TEMPLATE);\n this.getContext().wireBean(maximizeButtonComp);\n var eGui = maximizeButtonComp.getGui();\n eGui.appendChild(this.maximizeIcon = _.createIconNoSpan('maximize', this.gridOptionsWrapper));\n eGui.appendChild(this.minimizeIcon = _.createIconNoSpan('minimize', this.gridOptionsWrapper));\n _.addCssClass(this.minimizeIcon, 'ag-hidden');\n maximizeButtonComp.addDestroyableEventListener(eGui, 'click', this.toggleMaximize.bind(this));\n this.addTitleBarButton(maximizeButtonComp, 0);\n this.maximizeListeners.push(this.addDestroyableEventListener(eTitleBar, 'dblclick', this.toggleMaximize.bind(this)));\n this.resizeListenerDestroy = this.addDestroyableEventListener(this, 'resize', function () {\n _this.isMaximized = false;\n _this.refreshMaximizeIcon();\n });\n };\n __decorate([\n Autowired('dragService')\n ], AgDialog.prototype, \"dragService\", void 0);\n return AgDialog;\n}(AgPanel));\nexport { AgDialog };\n","import { deepmerge } from '@material-ui/utils';\n\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n\n });\n}\n\nexport default merge;","import createMuiTheme from './createMuiTheme';\nvar defaultTheme = createMuiTheme();\nexport default defaultTheme;","/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled(_ref) {\n var controlled = _ref.controlled,\n defaultProp = _ref.default,\n name = _ref.name,\n _ref$state = _ref.state,\n state = _ref$state === void 0 ? 'value' : _ref$state;\n\n var _React$useRef = React.useRef(controlled !== undefined),\n isControlled = _React$useRef.current;\n\n var _React$useState = React.useState(defaultProp),\n valueState = _React$useState[0],\n setValue = _React$useState[1];\n\n var value = isControlled ? controlled : valueState;\n\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(function () {\n if (isControlled !== (controlled !== undefined)) {\n console.error([\"Material-UI: A component is changing the \".concat(isControlled ? '' : 'un', \"controlled \").concat(state, \" state of \").concat(name, \" to be \").concat(isControlled ? 'un' : '', \"controlled.\"), 'Elements should not switch from uncontrolled to controlled (or vice versa).', \"Decide between using a controlled or uncontrolled \".concat(name, \" \") + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render, it's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [controlled]);\n\n var _React$useRef2 = React.useRef(defaultProp),\n defaultValue = _React$useRef2.current;\n\n React.useEffect(function () {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([\"Material-UI: A component is changing the default \".concat(state, \" state of an uncontrolled \").concat(name, \" after being initialized. \") + \"To suppress this warning opt to use a controlled \".concat(name, \".\")].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n\n var setValueIfUncontrolled = React.useCallback(function (newValue) {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean, Optional } from \"../../context/context\";\nimport { RegisteredComponentSource } from \"./userComponentRegistry\";\nimport { _, Promise } from \"../../utils\";\nexport var ComponentSource;\n(function (ComponentSource) {\n ComponentSource[ComponentSource[\"DEFAULT\"] = 0] = \"DEFAULT\";\n ComponentSource[ComponentSource[\"REGISTERED_BY_NAME\"] = 1] = \"REGISTERED_BY_NAME\";\n ComponentSource[ComponentSource[\"HARDCODED\"] = 2] = \"HARDCODED\";\n})(ComponentSource || (ComponentSource = {}));\nvar UserComponentFactory = /** @class */ (function () {\n function UserComponentFactory() {\n }\n UserComponentFactory.prototype.newDateComponent = function (params) {\n return this.createAndInitUserComponent(this.gridOptions, params, \"dateComponent\", \"agDateInput\");\n };\n UserComponentFactory.prototype.newHeaderComponent = function (params) {\n return this.createAndInitUserComponent(params.column.getColDef(), params, \"headerComponent\", \"agColumnHeader\");\n };\n UserComponentFactory.prototype.newHeaderGroupComponent = function (params) {\n return this.createAndInitUserComponent(params.columnGroup.getColGroupDef(), params, \"headerGroupComponent\", \"agColumnGroupHeader\");\n };\n UserComponentFactory.prototype.newFullWidthGroupRowInnerCellRenderer = function (params) {\n return this.createAndInitUserComponent(this.gridOptions, params, \"groupRowInnerRenderer\", null, true);\n };\n // this one is unusual, as it can be LoadingCellRenderer, DetailCellRenderer, FullWidthCellRenderer or GroupRowRenderer.\n // so we have to pass the type in.\n UserComponentFactory.prototype.newFullWidthCellRenderer = function (params, cellRendererType, cellRendererName) {\n return this.createAndInitUserComponent(null, params, cellRendererType, cellRendererName);\n };\n UserComponentFactory.prototype.newCellRenderer = function (target, params) {\n return this.createAndInitUserComponent(target, params, \"cellRenderer\", null, true);\n };\n UserComponentFactory.prototype.newPinnedRowCellRenderer = function (target, params) {\n return this.createAndInitUserComponent(target, params, \"pinnedRowCellRenderer\", null, true);\n };\n UserComponentFactory.prototype.newCellEditor = function (colDef, params) {\n return this.createAndInitUserComponent(colDef, params, 'cellEditor', 'agCellEditor');\n };\n UserComponentFactory.prototype.newInnerCellRenderer = function (target, params) {\n return this.createAndInitUserComponent(target, params, \"innerRenderer\", null);\n };\n UserComponentFactory.prototype.newLoadingOverlayComponent = function (params) {\n return this.createAndInitUserComponent(this.gridOptions, params, \"loadingOverlayComponent\", \"agLoadingOverlay\");\n };\n UserComponentFactory.prototype.newNoRowsOverlayComponent = function (params) {\n return this.createAndInitUserComponent(this.gridOptions, params, \"noRowsOverlayComponent\", \"agNoRowsOverlay\");\n };\n UserComponentFactory.prototype.newTooltipComponent = function (params) {\n var colDef = params.colDef;\n return this.createAndInitUserComponent(colDef, params, \"tooltipComponent\", 'agTooltipComponent');\n };\n UserComponentFactory.prototype.newFilterComponent = function (colDef, params, defaultFilter, modifyParamsCallback) {\n return this.createAndInitUserComponent(colDef, params, 'filter', defaultFilter, false, modifyParamsCallback);\n };\n UserComponentFactory.prototype.newFloatingFilterComponent = function (colDef, params, defaultFloatingFilter) {\n return this.createAndInitUserComponent(colDef, params, \"floatingFilterComponent\", defaultFloatingFilter, true);\n };\n UserComponentFactory.prototype.newToolPanelComponent = function (toolPanelDef, params) {\n return this.createAndInitUserComponent(toolPanelDef, params, 'toolPanel');\n };\n UserComponentFactory.prototype.newStatusPanelComponent = function (def, params) {\n return this.createAndInitUserComponent(def, params, 'statusPanel');\n };\n /**\n * This method creates a component given everything needed to guess what sort of component needs to be instantiated\n * It takes\n * @param definitionObject: This is the context for which this component needs to be created, it can be gridOptions\n * (global) or columnDef mostly.\n * @param paramsFromGrid: Params to be passed to the component and passed by ag-Grid. This will get merged with any params\n * specified by the user in the configuration\n * @param propertyName: The name of the property used in ag-grid as a convention to refer to the component, it can be:\n * 'floatingFilter', 'cellRenderer', is used to find if the user is specifying a custom component\n * @param defaultComponentName: The actual name of the component to instantiate, this is usually the same as propertyName, but in\n * some cases is not, like floatingFilter, if it is the same is not necessary to specify\n * @param optional: Handy method to tell if this should return a component ALWAYS. if that is the case, but there is no\n * component found, it throws an error, by default all components are MANDATORY\n * @param modifyParamsCallback: A chance to customise the params passed to the init method. It receives what the current\n * params are and the component that init is about to get called for\n */\n UserComponentFactory.prototype.createAndInitUserComponent = function (definitionObject, paramsFromGrid, propertyName, defaultComponentName, \n // optional items are: FloatingFilter, CellComp (for cellRenderer)\n optional, \n // used by FilterManager only\n modifyParamsCallback) {\n if (optional === void 0) { optional = false; }\n if (!definitionObject) {\n definitionObject = this.gridOptions;\n }\n // Create the component instance\n var componentAndParams = this.createComponentInstance(definitionObject, propertyName, paramsFromGrid, defaultComponentName, optional);\n if (!componentAndParams) {\n return null;\n }\n var componentInstance = componentAndParams.componentInstance;\n // Wire the component and call the init method with the correct params\n var params = this.createFinalParams(definitionObject, propertyName, paramsFromGrid, componentAndParams.paramsFromSelector);\n this.addReactHacks(params);\n // give caller chance to set any params that depend on the componentInstance (need here as the\n // componentInstance was not available when createUserComponent was called)\n var paramsAfterCallback = modifyParamsCallback ? modifyParamsCallback(params, componentInstance) : params;\n var deferredInit = this.initComponent(componentInstance, paramsAfterCallback);\n if (deferredInit == null) {\n // const p = new Promise(resolve => {\n // setTimeout( ()=> {\n // resolve(componentInstance);\n // }, 1000);\n // });\n // return p;\n return Promise.resolve(componentInstance);\n }\n else {\n var asPromise = deferredInit;\n return asPromise.map(function (notRelevant) { return componentInstance; });\n }\n };\n UserComponentFactory.prototype.addReactHacks = function (params) {\n // a temporary fix for AG-1574\n // AG-1715 raised to do a wider ranging refactor to improve this\n var agGridReact = this.context.getBean('agGridReact');\n if (agGridReact) {\n params.agGridReact = _.cloneObject(agGridReact);\n }\n // AG-1716 - directly related to AG-1574 and AG-1715\n var frameworkComponentWrapper = this.context.getBean('frameworkComponentWrapper');\n if (frameworkComponentWrapper) {\n params.frameworkComponentWrapper = frameworkComponentWrapper;\n }\n };\n /**\n * This method creates a component given everything needed to guess what sort of component needs to be instantiated\n * It takes\n * @param clazz: The class to instantiate,\n * @param agGridParams: Params to be passed to the component and passed by ag-Grid. This will get merged with any params\n * specified by the user in the configuration\n * @param modifyParamsCallback: A chance to customise the params passed to the init method. It receives what the current\n * params are and the component that init is about to get called for\n */\n UserComponentFactory.prototype.createUserComponentFromConcreteClass = function (clazz, agGridParams) {\n var internalComponent = new clazz();\n this.initComponent(internalComponent, agGridParams);\n return internalComponent;\n };\n /**\n * This method returns the underlying representation of the component to be created. ie for Javascript the\n * underlying function where we should be calling new into. In case of the frameworks, the framework class\n * object that represents the component to be created.\n *\n * This method is handy for different reasons, for example if you want to check if a component has a particular\n * method implemented without having to create the component, just by inspecting the source component\n *\n * It takes\n * @param definitionObject: This is the context for which this component needs to be created, it can be gridOptions\n * (global) or columnDef mostly.\n * @param propertyName: The name of the property used in ag-grid as a convention to refer to the component, it can be:\n * 'floatingFilter', 'cellRenderer', is used to find if the user is specifying a custom component\n * @param params: Params to be passed to the dynamic component function in case it needs to be\n * invoked\n * @param defaultComponentName: The name of the component to load if there is no component specified\n */\n UserComponentFactory.prototype.lookupComponentClassDef = function (definitionObject, propertyName, params, defaultComponentName) {\n if (params === void 0) { params = null; }\n /**\n * There are five things that can happen when resolving a component.\n * a) HardcodedFwComponent: That holder[propertyName]Framework has associated a Framework native component\n * b) HardcodedJsComponent: That holder[propertyName] has associate a JS component\n * c) hardcodedJsFunction: That holder[propertyName] has associate a JS function\n * d) hardcodedNameComponent: That holder[propertyName] has associate a string that represents a component to load\n * e) That none of the three previous are specified, then we need to use the DefaultRegisteredComponent\n */\n var hardcodedNameComponent = null;\n var HardcodedJsComponent = null;\n var hardcodedJsFunction = null;\n var HardcodedFwComponent = null;\n var componentSelectorFunc;\n if (definitionObject != null) {\n var componentPropertyValue = definitionObject[propertyName];\n // for filters only, we allow 'true' for the component, which means default filter to be used\n var usingDefaultComponent = componentPropertyValue === true;\n if (componentPropertyValue != null && !usingDefaultComponent) {\n if (typeof componentPropertyValue === 'string') {\n hardcodedNameComponent = componentPropertyValue;\n }\n else if (typeof componentPropertyValue === 'boolean') {\n // never happens, as we test for usingDefaultComponent above,\n // however it's needed for the next block to compile\n }\n else if (this.agComponentUtils.doesImplementIComponent(componentPropertyValue)) {\n HardcodedJsComponent = componentPropertyValue;\n }\n else {\n hardcodedJsFunction = componentPropertyValue;\n }\n }\n HardcodedFwComponent = definitionObject[propertyName + \"Framework\"];\n componentSelectorFunc = definitionObject[propertyName + \"Selector\"];\n }\n /**\n * Since we allow many types of flavors for specifying the components, let's make sure this is not an illegal\n * combination\n */\n if ((HardcodedJsComponent && HardcodedFwComponent) ||\n (hardcodedNameComponent && HardcodedFwComponent) ||\n (hardcodedJsFunction && HardcodedFwComponent)) {\n throw Error(\"ag-grid: you are trying to specify: \" + propertyName + \" twice as a component.\");\n }\n if (HardcodedFwComponent && !this.frameworkComponentWrapper) {\n throw Error(\"ag-grid: you are specifying a framework component but you are not using a framework version of ag-grid for : \" + propertyName);\n }\n if (componentSelectorFunc && (hardcodedNameComponent || HardcodedJsComponent || hardcodedJsFunction || HardcodedFwComponent)) {\n throw Error(\"ag-grid: you can't specify both, the selector and the component of ag-grid for : \" + propertyName);\n }\n /**\n * At this stage we are guaranteed to either have,\n * DEPRECATED\n * - A unique HardcodedFwComponent\n * - A unique HardcodedJsComponent\n * - A unique hardcodedJsFunction\n * BY NAME- FAVOURED APPROACH\n * - A unique hardcodedNameComponent\n * - None of the previous, hence we revert to: RegisteredComponent\n */\n if (HardcodedFwComponent) {\n // console.warn(`ag-grid: Since version 12.1.0 specifying a component directly is deprecated, you should register the component by name`);\n // console.warn(`${HardcodedFwComponent}`);\n return {\n componentFromFramework: true,\n component: HardcodedFwComponent,\n source: ComponentSource.HARDCODED,\n paramsFromSelector: null\n };\n }\n if (HardcodedJsComponent) {\n // console.warn(`ag-grid: Since version 12.1.0 specifying a component directly is deprecated, you should register the component by name`);\n // console.warn(`${HardcodedJsComponent}`);\n return {\n componentFromFramework: false,\n component: HardcodedJsComponent,\n source: ComponentSource.HARDCODED,\n paramsFromSelector: null\n };\n }\n if (hardcodedJsFunction) {\n // console.warn(`ag-grid: Since version 12.1.0 specifying a function directly is deprecated, you should register the component by name`);\n // console.warn(`${hardcodedJsFunction}`);\n return this.agComponentUtils.adaptFunction(propertyName, hardcodedJsFunction, false, ComponentSource.HARDCODED);\n }\n var selectorResult = componentSelectorFunc ? componentSelectorFunc(params) : null;\n var componentNameToUse;\n if (selectorResult && selectorResult.component) {\n componentNameToUse = selectorResult.component;\n }\n else if (hardcodedNameComponent) {\n componentNameToUse = hardcodedNameComponent;\n }\n else {\n componentNameToUse = defaultComponentName;\n }\n if (!componentNameToUse) {\n return null;\n }\n var registeredCompClassDef = this.lookupFromRegisteredComponents(propertyName, componentNameToUse);\n if (!registeredCompClassDef) {\n return null;\n }\n return {\n componentFromFramework: registeredCompClassDef.componentFromFramework,\n component: registeredCompClassDef.component,\n source: registeredCompClassDef.source,\n paramsFromSelector: selectorResult ? selectorResult.params : null\n };\n };\n UserComponentFactory.prototype.lookupFromRegisteredComponents = function (propertyName, componentNameOpt) {\n var componentName = componentNameOpt != null ? componentNameOpt : propertyName;\n var registeredComponent = this.userComponentRegistry.retrieve(componentName);\n if (registeredComponent == null) {\n return null;\n }\n //If it is a FW it has to be registered as a component\n if (registeredComponent.componentFromFramework) {\n return {\n component: registeredComponent.component,\n componentFromFramework: true,\n source: ComponentSource.REGISTERED_BY_NAME,\n paramsFromSelector: null\n };\n }\n //If it is JS it may be a function or a component\n if (this.agComponentUtils.doesImplementIComponent(registeredComponent.component)) {\n return {\n component: registeredComponent.component,\n componentFromFramework: false,\n source: (registeredComponent.source == RegisteredComponentSource.REGISTERED) ? ComponentSource.REGISTERED_BY_NAME : ComponentSource.DEFAULT,\n paramsFromSelector: null\n };\n }\n // This is a function\n return this.agComponentUtils.adaptFunction(propertyName, registeredComponent.component, registeredComponent.componentFromFramework, (registeredComponent.source == RegisteredComponentSource.REGISTERED) ? ComponentSource.REGISTERED_BY_NAME : ComponentSource.DEFAULT);\n };\n /**\n * Useful to check what would be the resultant params for a given object\n * @param definitionObject: This is the context for which this component needs to be created, it can be gridOptions\n * (global) or columnDef mostly.\n * @param propertyName: The name of the property used in ag-grid as a convention to refer to the component, it can be:\n * 'floatingFilter', 'cellRenderer', is used to find if the user is specifying a custom component\n * @param paramsFromGrid: Params to be passed to the component and passed by ag-Grid. This will get merged with any params\n * specified by the user in the configuration\n * @returns {any} It merges the user agGridParams with the actual params specified by the user.\n */\n UserComponentFactory.prototype.createFinalParams = function (definitionObject, propertyName, paramsFromGrid, paramsFromSelector) {\n if (paramsFromSelector === void 0) { paramsFromSelector = null; }\n var res = {};\n _.mergeDeep(res, paramsFromGrid);\n var userParams = definitionObject ? definitionObject[propertyName + \"Params\"] : null;\n if (userParams != null) {\n if (typeof userParams === 'function') {\n _.mergeDeep(res, userParams(paramsFromGrid));\n }\n else if (typeof userParams === 'object') {\n _.mergeDeep(res, userParams);\n }\n }\n _.mergeDeep(res, paramsFromSelector);\n return res;\n };\n UserComponentFactory.prototype.createComponentInstance = function (holder, propertyName, paramsForSelector, defaultComponentName, optional) {\n var componentToUse = this.lookupComponentClassDef(holder, propertyName, paramsForSelector, defaultComponentName);\n var missing = !componentToUse || !componentToUse.component;\n if (missing) {\n // to help the user, we print out the name they are looking for, rather than the default name.\n // i don't know why the default name was originally printed out (that doesn't help the user)\n var overrideName = holder ? holder[propertyName] : defaultComponentName;\n var nameToReport = overrideName ? overrideName : defaultComponentName;\n if (!optional) {\n console.error(\"Could not find component \" + nameToReport + \", did you forget to configure this component?\");\n }\n return null;\n }\n var componentInstance;\n if (componentToUse.componentFromFramework) {\n // Using framework component\n var FrameworkComponentRaw = componentToUse.component;\n var thisComponentConfig = this.componentMetadataProvider.retrieve(propertyName);\n componentInstance = this.frameworkComponentWrapper.wrap(FrameworkComponentRaw, thisComponentConfig.mandatoryMethodList, thisComponentConfig.optionalMethodList, defaultComponentName);\n }\n else {\n // Using plain JavaScript component\n componentInstance = new componentToUse.component();\n }\n return { componentInstance: componentInstance, paramsFromSelector: componentToUse.paramsFromSelector };\n };\n UserComponentFactory.prototype.initComponent = function (component, finalParams) {\n this.context.wireBean(component);\n if (component.init == null) {\n return;\n }\n else {\n return component.init(finalParams);\n }\n };\n __decorate([\n Autowired(\"gridOptions\")\n ], UserComponentFactory.prototype, \"gridOptions\", void 0);\n __decorate([\n Autowired(\"gridOptionsWrapper\")\n ], UserComponentFactory.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired(\"context\")\n ], UserComponentFactory.prototype, \"context\", void 0);\n __decorate([\n Autowired(\"agComponentUtils\")\n ], UserComponentFactory.prototype, \"agComponentUtils\", void 0);\n __decorate([\n Autowired(\"componentMetadataProvider\")\n ], UserComponentFactory.prototype, \"componentMetadataProvider\", void 0);\n __decorate([\n Autowired(\"userComponentRegistry\")\n ], UserComponentFactory.prototype, \"userComponentRegistry\", void 0);\n __decorate([\n Optional(\"frameworkComponentWrapper\")\n ], UserComponentFactory.prototype, \"frameworkComponentWrapper\", void 0);\n UserComponentFactory = __decorate([\n Bean('userComponentFactory')\n ], UserComponentFactory);\n return UserComponentFactory;\n}());\nexport { UserComponentFactory };\n","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * var result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\n\nexport default function differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getTime() - dateRight.getTime();\n}","import toDate from '../toDate/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import defineProperty from \"./defineProperty\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}","function areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n return tag;\n}\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n function StyleSheet(options) {\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n var _tag = createStyleElement(this);\n\n var before;\n\n if (this.tags.length === 0) {\n before = this.before;\n } else {\n before = this.tags[this.tags.length - 1].nextSibling;\n }\n\n this.container.insertBefore(_tag, before);\n this.tags.push(_tag);\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is a really hot path\n // we check the second character first because having \"i\"\n // as the second character will happen less often than\n // having \"@\" as the first character\n var isImportRule = rule.charCodeAt(1) === 105 && rule.charCodeAt(0) === 64; // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n\n sheet.insertRule(rule, // we need to insert @import rules before anything else\n // otherwise there will be an error\n // technically this means that the @import rules will\n // _usually_(not always since there could be multiple style tags)\n // be the first ones in prod and generally later in dev\n // this shouldn't really matter in the real world though\n // @import is generally only used for font faces from google fonts and etc.\n // so while this could be technically correct then it would be slower and larger\n // for a tiny bit of correctness that won't matter in the real world\n isImportRule ? 0 : sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","function stylis_min (W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {\n }\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\n\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","import { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize';\n\n// https://github.com/thysultan/stylis.js/tree/master/plugins/rule-sheet\n// inlined to avoid umd wrapper and peerDep warnings/installing stylis\n// since we use stylis after closure compiler\nvar delimiter = '/*|*/';\nvar needle = delimiter + '}';\n\nfunction toSheet(block) {\n if (block) {\n Sheet.current.insert(block + '}');\n }\n}\n\nvar Sheet = {\n current: null\n};\nvar ruleSheet = function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n switch (context) {\n // property\n case 1:\n {\n switch (content.charCodeAt(0)) {\n case 64:\n {\n // @import\n Sheet.current.insert(content + ';');\n return '';\n }\n // charcode for l\n\n case 108:\n {\n // charcode for b\n // this ignores label\n if (content.charCodeAt(2) === 98) {\n return '';\n }\n }\n }\n\n break;\n }\n // selector\n\n case 2:\n {\n if (ns === 0) return content + delimiter;\n break;\n }\n // at-rule\n\n case 3:\n {\n switch (ns) {\n // @font-face, @page\n case 102:\n case 112:\n {\n Sheet.current.insert(selectors[0] + content);\n return '';\n }\n\n default:\n {\n return content + (at === 0 ? delimiter : '');\n }\n }\n }\n\n case -2:\n {\n content.split(needle).forEach(toSheet);\n }\n }\n};\n\nvar createCache = function createCache(options) {\n if (options === undefined) options = {};\n var key = options.key || 'css';\n var stylisOptions;\n\n if (options.prefix !== undefined) {\n stylisOptions = {\n prefix: options.prefix\n };\n }\n\n var stylis = new Stylis(stylisOptions);\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {}; // $FlowFixMe\n\n var container;\n\n {\n container = options.container || document.head;\n var nodes = document.querySelectorAll(\"style[data-emotion-\" + key + \"]\");\n Array.prototype.forEach.call(nodes, function (node) {\n var attrib = node.getAttribute(\"data-emotion-\" + key); // $FlowFixMe\n\n attrib.split(' ').forEach(function (id) {\n inserted[id] = true;\n });\n\n if (node.parentNode !== container) {\n container.appendChild(node);\n }\n });\n }\n\n var _insert;\n\n {\n stylis.use(options.stylisPlugins)(ruleSheet);\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n var name = serialized.name;\n Sheet.current = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n var map = serialized.map;\n Sheet.current = {\n insert: function insert(rule) {\n sheet.insert(rule + map);\n }\n };\n }\n\n stylis(selector, serialized.styles);\n\n if (shouldCache) {\n cache.inserted[name] = true;\n }\n };\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // https://esbench.com/bench/5bf7371a4cd7e6009ef61d0a\n var commentStart = /\\/\\*/g;\n var commentEnd = /\\*\\//g;\n stylis.use(function (context, content) {\n switch (context) {\n case -1:\n {\n while (commentStart.test(content)) {\n commentEnd.lastIndex = commentStart.lastIndex;\n\n if (commentEnd.test(content)) {\n commentStart.lastIndex = commentEnd.lastIndex;\n continue;\n }\n\n throw new Error('Your styles have an unterminated comment (\"/*\" without corresponding \"*/\").');\n }\n\n commentStart.lastIndex = 0;\n break;\n }\n }\n });\n stylis.use(function (context, content, selectors) {\n switch (context) {\n case -1:\n {\n var flag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n var unsafePseudoClasses = content.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses && cache.compat !== true) {\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n var ignoreRegExp = new RegExp(unsafePseudoClass + \".*\\\\/\\\\* \" + flag + \" \\\\*\\\\/\");\n var ignore = ignoreRegExp.test(content);\n\n if (unsafePseudoClass && !ignore) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n }\n });\n }\n\n break;\n }\n }\n });\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n return cache;\n};\n\nexport default createCache;\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className]);\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(\".\" + className, current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles };\n","/* eslint-disable */\n// murmurhash2 via https://github.com/garycourt/murmurhash-js/blob/master/murmurhash2_gc.js\nfunction murmurhash2_32_gc(str) {\n var l = str.length,\n h = l ^ l,\n i = 0,\n k;\n\n while (l >= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n k ^= k >>> 24;\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k;\n l -= 4;\n ++i;\n }\n\n switch (l) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n }\n\n h ^= h >>> 13;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n h ^= h >>> 15;\n return (h >>> 0).toString(36);\n}\n\nexport default murmurhash2_32_gc;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\n\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result, couldBeSelectorInterpolation);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n\n if (process.env.NODE_ENV !== 'production' && couldBeSelectorInterpolation && shouldWarnAboutInterpolatingClassNameFromCss && cached !== undefined) {\n console.error('Interpolating a className from css`` is not recommended and will cause problems with composition.\\n' + 'Interpolating a className from css`` will be completely unsupported in a future major version of Emotion');\n shouldWarnAboutInterpolatingClassNameFromCss = false;\n }\n\n return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i], false);\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value, false);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings, false);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","import { serializeStyles } from '@emotion/serialize';\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nexport default css;\n","import _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport { createContext, forwardRef, createElement, Component } from 'react';\nimport createCache from '@emotion/cache';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nimport css from '@emotion/css';\nexport { default as css } from '@emotion/css';\n\nvar EmotionCacheContext = createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? createCache() : null);\nvar ThemeContext = createContext({});\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar withEmotionCache = function withEmotionCache(func) {\n var render = function render(props, ref) {\n return createElement(EmotionCacheContext.Consumer, null, function (cache) {\n return func(props, cache, ref);\n });\n }; // $FlowFixMe\n\n\n return forwardRef(render);\n};\n\n// thus we only need to replace what is a valid character for JS, but not for CSS\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar render = function render(cache, props, theme, ref) {\n var cssProp = theme === null ? props.css : props.css(theme); // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var type = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles);\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n var rules = insertStyles(cache, serialized, typeof type === 'string');\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n var ele = createElement(type, newProps);\n\n return ele;\n};\n\nvar Emotion =\n/* #__PURE__ */\nwithEmotionCache(function (props, cache, ref) {\n // use Context.read for the theme when it's stable\n if (typeof props.css === 'function') {\n return createElement(ThemeContext.Consumer, null, function (theme) {\n return render(cache, props, theme, ref);\n });\n }\n\n return render(cache, props, null, ref);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n} // $FlowFixMe\n\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/css' like this: css`\" + props.css + \"`\");\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type;\n\n if (process.env.NODE_ENV !== 'production') {\n var error = new Error();\n\n if (error.stack) {\n // chrome\n var match = error.stack.match(/at (?:Object\\.|)jsx.*\\n\\s+at ([A-Z][A-Za-z$]+) /);\n\n if (!match) {\n // safari and firefox\n match = error.stack.match(/^.*\\n([A-Z][A-Za-z$]+)@/);\n }\n\n if (match) {\n newProps[labelPropName] = sanitizeIdentifier(match[1]);\n }\n }\n }\n\n createElementArgArray[1] = newProps;\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false;\nvar Global =\n/* #__PURE__ */\nwithEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n\n if (typeof styles === 'function') {\n return createElement(ThemeContext.Consumer, null, function (theme) {\n var serialized = serializeStyles([styles(theme)]);\n return createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\n });\n });\n }\n\n var serialized = serializeStyles([styles]);\n return createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\n });\n});\n\n// maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\nvar InnerGlobal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerGlobal, _React$Component);\n\n function InnerGlobal(props, context, updater) {\n return _React$Component.call(this, props, context, updater) || this;\n }\n\n var _proto = InnerGlobal.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.sheet = new StyleSheet({\n key: this.props.cache.key + \"-global\",\n nonce: this.props.cache.sheet.nonce,\n container: this.props.cache.sheet.container\n }); // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion-\" + this.props.cache.key + \"=\\\"\" + this.props.serialized.name + \"\\\"]\");\n\n if (node !== null) {\n this.sheet.tags.push(node);\n }\n\n if (this.props.cache.sheet.tags.length) {\n this.sheet.before = this.props.cache.sheet.tags[0];\n }\n\n this.insertStyles();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (prevProps.serialized.name !== this.props.serialized.name) {\n this.insertStyles();\n }\n };\n\n _proto.insertStyles = function insertStyles$1() {\n if (this.props.serialized.next !== undefined) {\n // insert keyframes\n insertStyles(this.props.cache, this.props.serialized.next, true);\n }\n\n if (this.sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = this.sheet.tags[this.sheet.tags.length - 1].nextElementSibling;\n this.sheet.before = element;\n this.sheet.flush();\n }\n\n this.props.cache.insert(\"\", this.props.serialized, this.sheet, false);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.sheet.flush();\n };\n\n _proto.render = function render() {\n\n return null;\n };\n\n return InnerGlobal;\n}(Component);\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar ClassNames = withEmotionCache(function (props, context) {\n return createElement(ThemeContext.Consumer, null, function (theme) {\n var hasRendered = false;\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, context.registered);\n\n {\n insertStyles(context, serialized, false);\n }\n\n return context.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(context.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: theme\n };\n var ele = props.children(content);\n hasRendered = true;\n\n return ele;\n });\n});\n\nexport { CacheProvider, ClassNames, Global, ThemeContext, jsx, keyframes, withEmotionCache };\n","import _typeof from '@babel/runtime/helpers/esm/typeof';\n\n// ==============================\n// NO OP\n// ==============================\nvar noop = function noop() {};\n// Class Name Prefixer\n// ==============================\n\n/**\n String representation of component state for styling with class names.\n\n Expects an array of strings OR a string/object pair:\n - className(['comp', 'comp-arg', 'comp-arg-2'])\n @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2'\n - className('comp', { some: true, state: false })\n @returns 'react-select__comp react-select__comp--some'\n*/\n\nfunction applyPrefixToName(prefix, name) {\n if (!name) {\n return prefix;\n } else if (name[0] === '-') {\n return prefix + name;\n } else {\n return prefix + '__' + name;\n }\n}\n\nfunction classNames(prefix, state, className) {\n var arr = [className];\n\n if (state && prefix) {\n for (var key in state) {\n if (state.hasOwnProperty(key) && state[key]) {\n arr.push(\"\".concat(applyPrefixToName(prefix, key)));\n }\n }\n }\n\n return arr.filter(function (i) {\n return i;\n }).map(function (i) {\n return String(i).trim();\n }).join(' ');\n} // ==============================\n// Clean Value\n// ==============================\n\nvar cleanValue = function cleanValue(value) {\n if (Array.isArray(value)) return value.filter(Boolean);\n if (_typeof(value) === 'object' && value !== null) return [value];\n return [];\n}; // ==============================\n// Handle Input Change\n// ==============================\n\nfunction handleInputChange(inputValue, actionMeta, onInputChange) {\n if (onInputChange) {\n var newValue = onInputChange(inputValue, actionMeta);\n if (typeof newValue === 'string') return newValue;\n }\n\n return inputValue;\n} // ==============================\n// Scroll Helpers\n// ==============================\n\nfunction isDocumentElement(el) {\n return [document.documentElement, document.body, window].indexOf(el) > -1;\n} // Normalized Scroll Top\n// ------------------------------\n\nfunction getScrollTop(el) {\n if (isDocumentElement(el)) {\n return window.pageYOffset;\n }\n\n return el.scrollTop;\n}\nfunction scrollTo(el, top) {\n // with a scroll distance, we perform scroll on the element\n if (isDocumentElement(el)) {\n window.scrollTo(0, top);\n return;\n }\n\n el.scrollTop = top;\n} // Get Scroll Parent\n// ------------------------------\n\nfunction getScrollParent(element) {\n var style = getComputedStyle(element);\n var excludeStaticParent = style.position === 'absolute';\n var overflowRx = /(auto|scroll)/;\n var docEl = document.documentElement; // suck it, flow...\n\n if (style.position === 'fixed') return docEl;\n\n for (var parent = element; parent = parent.parentElement;) {\n style = getComputedStyle(parent);\n\n if (excludeStaticParent && style.position === 'static') {\n continue;\n }\n\n if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent;\n }\n }\n\n return docEl;\n} // Animated Scroll To\n// ------------------------------\n\n/**\n @param t: time (elapsed)\n @param b: initial value\n @param c: amount of change\n @param d: duration\n*/\n\nfunction easeOutCubic(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t + 1) + b;\n}\n\nfunction animatedScrollTo(element, to) {\n var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;\n var start = getScrollTop(element);\n var change = to - start;\n var increment = 10;\n var currentTime = 0;\n\n function animateScroll() {\n currentTime += increment;\n var val = easeOutCubic(currentTime, start, change, duration);\n scrollTo(element, val);\n\n if (currentTime < duration) {\n window.requestAnimationFrame(animateScroll);\n } else {\n callback(element);\n }\n }\n\n animateScroll();\n} // Scroll Into View\n// ------------------------------\n\nfunction scrollIntoView(menuEl, focusedEl) {\n var menuRect = menuEl.getBoundingClientRect();\n var focusedRect = focusedEl.getBoundingClientRect();\n var overScroll = focusedEl.offsetHeight / 3;\n\n if (focusedRect.bottom + overScroll > menuRect.bottom) {\n scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight));\n } else if (focusedRect.top - overScroll < menuRect.top) {\n scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0));\n }\n} // ==============================\n// Get bounding client object\n// ==============================\n// cannot get keys using array notation with DOMRect\n\nfunction getBoundingClientObj(element) {\n var rect = element.getBoundingClientRect();\n return {\n bottom: rect.bottom,\n height: rect.height,\n left: rect.left,\n right: rect.right,\n top: rect.top,\n width: rect.width\n };\n}\n// Touch Capability Detector\n// ==============================\n\nfunction isTouchCapable() {\n try {\n document.createEvent('TouchEvent');\n return true;\n } catch (e) {\n return false;\n }\n} // ==============================\n// Mobile Device Detector\n// ==============================\n\nfunction isMobileDevice() {\n try {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n } catch (e) {\n return false;\n }\n}\n\nexport { getScrollParent as a, getScrollTop as b, animatedScrollTo as c, isMobileDevice as d, isDocumentElement as e, cleanValue as f, getBoundingClientObj as g, scrollIntoView as h, isTouchCapable as i, classNames as j, handleInputChange as k, noop as n, scrollTo as s };\n","import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport { Component } from 'react';\nimport { jsx, keyframes, ClassNames } from '@emotion/core';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\nimport { g as getBoundingClientObj, a as getScrollParent, b as getScrollTop, c as animatedScrollTo, s as scrollTo } from './chunk-39d3fda8.browser.esm.js';\nimport _css from '@emotion/css';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport AutosizeInput from 'react-input-autosize';\n\nfunction getMenuPlacement(_ref) {\n var maxHeight = _ref.maxHeight,\n menuEl = _ref.menuEl,\n minHeight = _ref.minHeight,\n placement = _ref.placement,\n shouldScroll = _ref.shouldScroll,\n isFixedPosition = _ref.isFixedPosition,\n theme = _ref.theme;\n var spacing = theme.spacing;\n var scrollParent = getScrollParent(menuEl);\n var defaultState = {\n placement: 'bottom',\n maxHeight: maxHeight\n }; // something went wrong, return default state\n\n if (!menuEl || !menuEl.offsetParent) return defaultState; // we can't trust `scrollParent.scrollHeight` --> it may increase when\n // the menu is rendered\n\n var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),\n scrollHeight = _scrollParent$getBoun.height;\n\n var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),\n menuBottom = _menuEl$getBoundingCl.bottom,\n menuHeight = _menuEl$getBoundingCl.height,\n menuTop = _menuEl$getBoundingCl.top;\n\n var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n containerTop = _menuEl$offsetParent$.top;\n\n var viewHeight = window.innerHeight;\n var scrollTop = getScrollTop(scrollParent);\n var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);\n var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);\n var viewSpaceAbove = containerTop - marginTop;\n var viewSpaceBelow = viewHeight - menuTop;\n var scrollSpaceAbove = viewSpaceAbove + scrollTop;\n var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;\n var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;\n var scrollUp = scrollTop + menuTop - marginTop;\n var scrollDuration = 160;\n\n switch (placement) {\n case 'auto':\n case 'bottom':\n // 1: the menu will fit, do nothing\n if (viewSpaceBelow >= menuHeight) {\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n } // 2: the menu will fit, if scrolled\n\n\n if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n }\n\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n } // 3: the menu will fit, if constrained\n\n\n if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n } // we want to provide as much of the menu as possible to the user,\n // so give them whatever is available below rather than the minHeight.\n\n\n var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n return {\n placement: 'bottom',\n maxHeight: constrainedHeight\n };\n } // 4. Forked beviour when there isn't enough space below\n // AUTO: flip the menu, render above\n\n\n if (placement === 'auto' || isFixedPosition) {\n // may need to be constrained after flipping\n var _constrainedHeight = maxHeight;\n var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;\n\n if (spaceAbove >= minHeight) {\n _constrainedHeight = Math.min(spaceAbove - marginBottom - spacing.controlHeight, maxHeight);\n }\n\n return {\n placement: 'top',\n maxHeight: _constrainedHeight\n };\n } // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n\n\n if (placement === 'bottom') {\n scrollTo(scrollParent, scrollDown);\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n }\n\n break;\n\n case 'top':\n // 1: the menu will fit, do nothing\n if (viewSpaceAbove >= menuHeight) {\n return {\n placement: 'top',\n maxHeight: maxHeight\n };\n } // 2: the menu will fit, if scrolled\n\n\n if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n }\n\n return {\n placement: 'top',\n maxHeight: maxHeight\n };\n } // 3: the menu will fit, if constrained\n\n\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n var _constrainedHeight2 = maxHeight; // we want to provide as much of the menu as possible to the user,\n // so give them whatever is available below rather than the minHeight.\n\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n }\n\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n }\n\n return {\n placement: 'top',\n maxHeight: _constrainedHeight2\n };\n } // 4. not enough space, the browser WILL NOT increase scrollable area when\n // absolutely positioned element rendered above the viewport (only below).\n // Flip the menu, render below\n\n\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n\n default:\n throw new Error(\"Invalid placement provided \\\"\".concat(placement, \"\\\".\"));\n } // fulfil contract with flow: implicit return value of undefined\n\n\n return defaultState;\n} // Menu Component\n// ------------------------------\n\nfunction alignToControl(placement) {\n var placementToCSSProp = {\n bottom: 'top',\n top: 'bottom'\n };\n return placement ? placementToCSSProp[placement] : 'bottom';\n}\n\nvar coercePlacement = function coercePlacement(p) {\n return p === 'auto' ? 'bottom' : p;\n};\n\nvar menuCSS = function menuCSS(_ref2) {\n var _ref3;\n\n var placement = _ref2.placement,\n _ref2$theme = _ref2.theme,\n borderRadius = _ref2$theme.borderRadius,\n spacing = _ref2$theme.spacing,\n colors = _ref2$theme.colors;\n return _ref3 = {\n label: 'menu'\n }, _defineProperty(_ref3, alignToControl(placement), '100%'), _defineProperty(_ref3, \"backgroundColor\", colors.neutral0), _defineProperty(_ref3, \"borderRadius\", borderRadius), _defineProperty(_ref3, \"boxShadow\", '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)'), _defineProperty(_ref3, \"marginBottom\", spacing.menuGutter), _defineProperty(_ref3, \"marginTop\", spacing.menuGutter), _defineProperty(_ref3, \"position\", 'absolute'), _defineProperty(_ref3, \"width\", '100%'), _defineProperty(_ref3, \"zIndex\", 1), _ref3;\n}; // NOTE: internal only\n\nvar MenuPlacer =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MenuPlacer, _Component);\n\n function MenuPlacer() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, MenuPlacer);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(MenuPlacer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n maxHeight: _this.props.maxMenuHeight,\n placement: null\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPlacement\", function (ref) {\n var _this$props = _this.props,\n minMenuHeight = _this$props.minMenuHeight,\n maxMenuHeight = _this$props.maxMenuHeight,\n menuPlacement = _this$props.menuPlacement,\n menuPosition = _this$props.menuPosition,\n menuShouldScrollIntoView = _this$props.menuShouldScrollIntoView,\n theme = _this$props.theme;\n var getPortalPlacement = _this.context.getPortalPlacement;\n if (!ref) return; // DO NOT scroll if position is fixed\n\n var isFixedPosition = menuPosition === 'fixed';\n var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\n var state = getMenuPlacement({\n maxHeight: maxMenuHeight,\n menuEl: ref,\n minHeight: minMenuHeight,\n placement: menuPlacement,\n shouldScroll: shouldScroll,\n isFixedPosition: isFixedPosition,\n theme: theme\n });\n if (getPortalPlacement) getPortalPlacement(state);\n\n _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getUpdatedProps\", function () {\n var menuPlacement = _this.props.menuPlacement;\n var placement = _this.state.placement || coercePlacement(menuPlacement);\n return _objectSpread({}, _this.props, {\n placement: placement,\n maxHeight: _this.state.maxHeight\n });\n });\n\n return _this;\n }\n\n _createClass(MenuPlacer, [{\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return children({\n ref: this.getPlacement,\n placerProps: this.getUpdatedProps()\n });\n }\n }]);\n\n return MenuPlacer;\n}(Component);\n\n_defineProperty(MenuPlacer, \"contextTypes\", {\n getPortalPlacement: PropTypes.func\n});\n\nvar Menu = function Menu(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerRef = props.innerRef,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('menu', props),\n className: cx({\n menu: true\n }, className)\n }, innerProps, {\n ref: innerRef\n }), children);\n};\n// Menu List\n// ==============================\n\nvar menuListCSS = function menuListCSS(_ref4) {\n var maxHeight = _ref4.maxHeight,\n baseUnit = _ref4.theme.spacing.baseUnit;\n return {\n maxHeight: maxHeight,\n overflowY: 'auto',\n paddingBottom: baseUnit,\n paddingTop: baseUnit,\n position: 'relative',\n // required for offset[Height, Top] > keyboard scroll\n WebkitOverflowScrolling: 'touch'\n };\n};\nvar MenuList = function MenuList(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isMulti = props.isMulti,\n innerRef = props.innerRef;\n return jsx(\"div\", {\n css: getStyles('menuList', props),\n className: cx({\n 'menu-list': true,\n 'menu-list--is-multi': isMulti\n }, className),\n ref: innerRef\n }, children);\n}; // ==============================\n// Menu Notices\n// ==============================\n\nvar noticeCSS = function noticeCSS(_ref5) {\n var _ref5$theme = _ref5.theme,\n baseUnit = _ref5$theme.spacing.baseUnit,\n colors = _ref5$theme.colors;\n return {\n color: colors.neutral40,\n padding: \"\".concat(baseUnit * 2, \"px \").concat(baseUnit * 3, \"px\"),\n textAlign: 'center'\n };\n};\n\nvar noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = noticeCSS;\nvar NoOptionsMessage = function NoOptionsMessage(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('noOptionsMessage', props),\n className: cx({\n 'menu-notice': true,\n 'menu-notice--no-options': true\n }, className)\n }, innerProps), children);\n};\nNoOptionsMessage.defaultProps = {\n children: 'No options'\n};\nvar LoadingMessage = function LoadingMessage(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('loadingMessage', props),\n className: cx({\n 'menu-notice': true,\n 'menu-notice--loading': true\n }, className)\n }, innerProps), children);\n};\nLoadingMessage.defaultProps = {\n children: 'Loading...'\n}; // ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = function menuPortalCSS(_ref6) {\n var rect = _ref6.rect,\n offset = _ref6.offset,\n position = _ref6.position;\n return {\n left: rect.left,\n position: position,\n top: offset,\n width: rect.width,\n zIndex: 1\n };\n};\nvar MenuPortal =\n/*#__PURE__*/\nfunction (_Component2) {\n _inherits(MenuPortal, _Component2);\n\n function MenuPortal() {\n var _getPrototypeOf3;\n\n var _this2;\n\n _classCallCheck(this, MenuPortal);\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this2 = _possibleConstructorReturn(this, (_getPrototypeOf3 = _getPrototypeOf(MenuPortal)).call.apply(_getPrototypeOf3, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this2)), \"state\", {\n placement: null\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this2)), \"getPortalPlacement\", function (_ref7) {\n var placement = _ref7.placement;\n var initialPlacement = coercePlacement(_this2.props.menuPlacement); // avoid re-renders if the placement has not changed\n\n if (placement !== initialPlacement) {\n _this2.setState({\n placement: placement\n });\n }\n });\n\n return _this2;\n }\n\n _createClass(MenuPortal, [{\n key: \"getChildContext\",\n value: function getChildContext() {\n return {\n getPortalPlacement: this.getPortalPlacement\n };\n } // callback for occassions where the menu must \"flip\"\n\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n appendTo = _this$props2.appendTo,\n children = _this$props2.children,\n controlElement = _this$props2.controlElement,\n menuPlacement = _this$props2.menuPlacement,\n position = _this$props2.menuPosition,\n getStyles = _this$props2.getStyles;\n var isFixed = position === 'fixed'; // bail early if required elements aren't present\n\n if (!appendTo && !isFixed || !controlElement) {\n return null;\n }\n\n var placement = this.state.placement || coercePlacement(menuPlacement);\n var rect = getBoundingClientObj(controlElement);\n var scrollDistance = isFixed ? 0 : window.pageYOffset;\n var offset = rect[placement] + scrollDistance;\n var state = {\n offset: offset,\n position: position,\n rect: rect\n }; // same wrapper element whether fixed or portalled\n\n var menuWrapper = jsx(\"div\", {\n css: getStyles('menuPortal', state)\n }, children);\n return appendTo ? createPortal(menuWrapper, appendTo) : menuWrapper;\n }\n }]);\n\n return MenuPortal;\n}(Component);\n\n_defineProperty(MenuPortal, \"childContextTypes\", {\n getPortalPlacement: PropTypes.func\n});\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\n\nfunction equal(a, b) {\n // fast-deep-equal index.js 2.0.1\n if (a === b) return true;\n\n if (a && b && _typeof(a) == 'object' && _typeof(b) == 'object') {\n var arrA = isArray(a),\n arrB = isArray(b),\n i,\n length,\n key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!equal(a[i], b[i])) return false;\n }\n\n return true;\n }\n\n if (arrA != arrB) return false;\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n var keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length) {\n return false;\n }\n\n for (i = length; i-- !== 0;) {\n if (!hasProp.call(b, keys[i])) return false;\n } // end fast-deep-equal\n // Custom handling for React\n\n\n for (i = length; i-- !== 0;) {\n key = keys[i];\n\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of a react element\n continue;\n } else {\n // all other properties should be traversed as usual\n if (!equal(a[key], b[key])) return false;\n }\n } // fast-deep-equal index.js 2.0.1\n\n\n return true;\n }\n\n return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nfunction exportedEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (error.message && error.message.match(/stack|recursion/i)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n return false;\n } // some other error. we should definitely know about these\n\n\n throw error;\n }\n}\n\nvar containerCSS = function containerCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n isRtl = _ref.isRtl;\n return {\n label: 'container',\n direction: isRtl ? 'rtl' : null,\n pointerEvents: isDisabled ? 'none' : null,\n // cancel mouse events when disabled\n position: 'relative'\n };\n};\nvar SelectContainer = function SelectContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isDisabled = props.isDisabled,\n isRtl = props.isRtl;\n return jsx(\"div\", _extends({\n css: getStyles('container', props),\n className: cx({\n '--is-disabled': isDisabled,\n '--is-rtl': isRtl\n }, className)\n }, innerProps), children);\n}; // ==============================\n// Value Container\n// ==============================\n\nvar valueContainerCSS = function valueContainerCSS(_ref2) {\n var spacing = _ref2.theme.spacing;\n return {\n alignItems: 'center',\n display: 'flex',\n flex: 1,\n flexWrap: 'wrap',\n padding: \"\".concat(spacing.baseUnit / 2, \"px \").concat(spacing.baseUnit * 2, \"px\"),\n WebkitOverflowScrolling: 'touch',\n position: 'relative',\n overflow: 'hidden'\n };\n};\nvar ValueContainer =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ValueContainer, _Component);\n\n function ValueContainer() {\n _classCallCheck(this, ValueContainer);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ValueContainer).apply(this, arguments));\n }\n\n _createClass(ValueContainer, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n children = _this$props.children,\n className = _this$props.className,\n cx = _this$props.cx,\n isMulti = _this$props.isMulti,\n getStyles = _this$props.getStyles,\n hasValue = _this$props.hasValue;\n return jsx(\"div\", {\n css: getStyles('valueContainer', this.props),\n className: cx({\n 'value-container': true,\n 'value-container--is-multi': isMulti,\n 'value-container--has-value': hasValue\n }, className)\n }, children);\n }\n }]);\n\n return ValueContainer;\n}(Component); // ==============================\n// Indicator Container\n// ==============================\n\nvar indicatorsContainerCSS = function indicatorsContainerCSS() {\n return {\n alignItems: 'center',\n alignSelf: 'stretch',\n display: 'flex',\n flexShrink: 0\n };\n};\nvar IndicatorsContainer = function IndicatorsContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles;\n return jsx(\"div\", {\n css: getStyles('indicatorsContainer', props),\n className: cx({\n indicators: true\n }, className)\n }, children);\n};\n\nfunction _templateObject() {\n var data = _taggedTemplateLiteral([\"\\n 0%, 80%, 100% { opacity: 0; }\\n 40% { opacity: 1; }\\n\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n name: \"19bqh2r\",\n styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;\"\n} : {\n name: \"19bqh2r\",\n styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1vblByb3BzLCBUaGVtZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHsgc2l6ZSwgLi4ucHJvcHMgfTogeyBzaXplOiBudW1iZXIgfSkgPT4gKFxuICA8c3ZnXG4gICAgaGVpZ2h0PXtzaXplfVxuICAgIHdpZHRoPXtzaXplfVxuICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgIGNzcz17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICAgICAgc3Ryb2tlV2lkdGg6IDAsXG4gICAgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBhbnkpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk00LjUxNiA3LjU0OGMwLjQzNi0wLjQ0NiAxLjA0My0wLjQ4MSAxLjU3NiAwbDMuOTA4IDMuNzQ3IDMuOTA4LTMuNzQ3YzAuNTMzLTAuNDgxIDEuMTQxLTAuNDQ2IDEuNTc0IDAgMC40MzYgMC40NDUgMC40MDggMS4xOTcgMCAxLjYxNS0wLjQwNiAwLjQxOC00LjY5NSA0LjUwMi00LjY5NSA0LjUwMi0wLjIxNyAwLjIyMy0wLjUwMiAwLjMzNS0wLjc4NyAwLjMzNXMtMC41Ny0wLjExMi0wLjc4OS0wLjMzNWMwIDAtNC4yODctNC4wODQtNC42OTUtNC41MDJzLTAuNDM2LTEuMTcgMC0xLjYxNXpcIiAvPlxuICA8L1N2Zz5cbik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBCdXR0b25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgSW5kaWNhdG9yUHJvcHMgPSBDb21tb25Qcm9wcyAmIHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW46IE5vZGUsXG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufTtcblxuY29uc3QgYmFzZUNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogSW5kaWNhdG9yUHJvcHMpID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yQ29udGFpbmVyJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcblxuICAnOmhvdmVyJzoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDgwIDogY29sb3JzLm5ldXRyYWw0MCxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2Ryb3Bkb3duSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnZHJvcGRvd24taW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2NsZWFySW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnY2xlYXItaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG50eXBlIFNlcGFyYXRvclN0YXRlID0geyBpc0Rpc2FibGVkOiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSAoe1xuICBpc0Rpc2FibGVkLFxuICB0aGVtZToge1xuICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICBjb2xvcnMsXG4gIH0sXG59OiBDb21tb25Qcm9wcyAmIFNlcGFyYXRvclN0YXRlKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gIG1hcmdpblRvcDogYmFzZVVuaXQgKiAyLFxuICB3aWR0aDogMSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2luZGljYXRvclNlcGFyYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goeyAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUgfSwgY2xhc3NOYW1lKX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gKHtcbiAgaXNGb2N1c2VkLFxuICBzaXplLFxuICB0aGVtZToge1xuICAgIGNvbG9ycyxcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gIH0sXG59OiB7XG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgc2l6ZTogbnVtYmVyLFxuICB0aGVtZTogVGhlbWUsXG59KSA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxufSk7XG5cbnR5cGUgRG90UHJvcHMgPSB7IGRlbGF5OiBudW1iZXIsIG9mZnNldDogYm9vbGVhbiB9O1xuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogRG90UHJvcHMpID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGFuaW1hdGlvbjogYCR7bG9hZGluZ0RvdEFuaW1hdGlvbnN9IDFzIGVhc2UtaW4tb3V0ICR7ZGVsYXl9bXMgaW5maW5pdGU7YCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBib3JkZXJSYWRpdXM6ICcxZW0nLFxuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBtYXJnaW5MZWZ0OiBvZmZzZXQgPyAnMWVtJyA6IG51bGwsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCB0eXBlIExvYWRpbmdJY29uUHJvcHMgPSB7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufSAmIENvbW1vblByb3BzICYge1xuICAgIC8qKiBTZXQgc2l6ZSBvZiB0aGUgY29udGFpbmVyLiAqL1xuICAgIHNpemU6IG51bWJlcixcbiAgfTtcbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5kaWNhdG9yID0gKHByb3BzOiBMb2FkaW5nSWNvblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzLCBpc1J0bCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdsb2FkaW5nSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnbG9hZGluZy1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezB9IG9mZnNldD17aXNSdGx9IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MTYwfSBvZmZzZXQgLz5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXszMjB9IG9mZnNldD17IWlzUnRsfSAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcbkxvYWRpbmdJbmRpY2F0b3IuZGVmYXVsdFByb3BzID0geyBzaXplOiA0IH07XG4iXX0= */\"\n};\n\n// ==============================\n// Dropdown & Clear Icons\n// ==============================\nvar Svg = function Svg(_ref) {\n var size = _ref.size,\n props = _objectWithoutProperties(_ref, [\"size\"]);\n\n return jsx(\"svg\", _extends({\n height: size,\n width: size,\n viewBox: \"0 0 20 20\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n css: _ref2\n }, props));\n};\n\nvar CrossIcon = function CrossIcon(props) {\n return jsx(Svg, _extends({\n size: 20\n }, props), jsx(\"path\", {\n d: \"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z\"\n }));\n};\nvar DownChevron = function DownChevron(props) {\n return jsx(Svg, _extends({\n size: 20\n }, props), jsx(\"path\", {\n d: \"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z\"\n }));\n}; // ==============================\n// Dropdown & Clear Buttons\n// ==============================\n\nvar baseCSS = function baseCSS(_ref3) {\n var isFocused = _ref3.isFocused,\n _ref3$theme = _ref3.theme,\n baseUnit = _ref3$theme.spacing.baseUnit,\n colors = _ref3$theme.colors;\n return {\n label: 'indicatorContainer',\n color: isFocused ? colors.neutral60 : colors.neutral20,\n display: 'flex',\n padding: baseUnit * 2,\n transition: 'color 150ms',\n ':hover': {\n color: isFocused ? colors.neutral80 : colors.neutral40\n }\n };\n};\n\nvar dropdownIndicatorCSS = baseCSS;\nvar DropdownIndicator = function DropdownIndicator(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({}, innerProps, {\n css: getStyles('dropdownIndicator', props),\n className: cx({\n indicator: true,\n 'dropdown-indicator': true\n }, className)\n }), children || jsx(DownChevron, null));\n};\nvar clearIndicatorCSS = baseCSS;\nvar ClearIndicator = function ClearIndicator(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({}, innerProps, {\n css: getStyles('clearIndicator', props),\n className: cx({\n indicator: true,\n 'clear-indicator': true\n }, className)\n }), children || jsx(CrossIcon, null));\n}; // ==============================\n// Separator\n// ==============================\n\nvar indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref4) {\n var isDisabled = _ref4.isDisabled,\n _ref4$theme = _ref4.theme,\n baseUnit = _ref4$theme.spacing.baseUnit,\n colors = _ref4$theme.colors;\n return {\n label: 'indicatorSeparator',\n alignSelf: 'stretch',\n backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20,\n marginBottom: baseUnit * 2,\n marginTop: baseUnit * 2,\n width: 1\n };\n};\nvar IndicatorSeparator = function IndicatorSeparator(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"span\", _extends({}, innerProps, {\n css: getStyles('indicatorSeparator', props),\n className: cx({\n 'indicator-separator': true\n }, className)\n }));\n}; // ==============================\n// Loading\n// ==============================\n\nvar loadingDotAnimations = keyframes(_templateObject());\nvar loadingIndicatorCSS = function loadingIndicatorCSS(_ref5) {\n var isFocused = _ref5.isFocused,\n size = _ref5.size,\n _ref5$theme = _ref5.theme,\n colors = _ref5$theme.colors,\n baseUnit = _ref5$theme.spacing.baseUnit;\n return {\n label: 'loadingIndicator',\n color: isFocused ? colors.neutral60 : colors.neutral20,\n display: 'flex',\n padding: baseUnit * 2,\n transition: 'color 150ms',\n alignSelf: 'center',\n fontSize: size,\n lineHeight: 1,\n marginRight: size,\n textAlign: 'center',\n verticalAlign: 'middle'\n };\n};\n\nvar LoadingDot = function LoadingDot(_ref6) {\n var delay = _ref6.delay,\n offset = _ref6.offset;\n return jsx(\"span\", {\n css:\n /*#__PURE__*/\n _css({\n animation: \"\".concat(loadingDotAnimations, \" 1s ease-in-out \").concat(delay, \"ms infinite;\"),\n backgroundColor: 'currentColor',\n borderRadius: '1em',\n display: 'inline-block',\n marginLeft: offset ? '1em' : null,\n height: '1em',\n verticalAlign: 'top',\n width: '1em'\n }, process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0xJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1vblByb3BzLCBUaGVtZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHsgc2l6ZSwgLi4ucHJvcHMgfTogeyBzaXplOiBudW1iZXIgfSkgPT4gKFxuICA8c3ZnXG4gICAgaGVpZ2h0PXtzaXplfVxuICAgIHdpZHRoPXtzaXplfVxuICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgIGNzcz17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICAgICAgc3Ryb2tlV2lkdGg6IDAsXG4gICAgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBhbnkpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk00LjUxNiA3LjU0OGMwLjQzNi0wLjQ0NiAxLjA0My0wLjQ4MSAxLjU3NiAwbDMuOTA4IDMuNzQ3IDMuOTA4LTMuNzQ3YzAuNTMzLTAuNDgxIDEuMTQxLTAuNDQ2IDEuNTc0IDAgMC40MzYgMC40NDUgMC40MDggMS4xOTcgMCAxLjYxNS0wLjQwNiAwLjQxOC00LjY5NSA0LjUwMi00LjY5NSA0LjUwMi0wLjIxNyAwLjIyMy0wLjUwMiAwLjMzNS0wLjc4NyAwLjMzNXMtMC41Ny0wLjExMi0wLjc4OS0wLjMzNWMwIDAtNC4yODctNC4wODQtNC42OTUtNC41MDJzLTAuNDM2LTEuMTcgMC0xLjYxNXpcIiAvPlxuICA8L1N2Zz5cbik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBCdXR0b25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgSW5kaWNhdG9yUHJvcHMgPSBDb21tb25Qcm9wcyAmIHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW46IE5vZGUsXG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufTtcblxuY29uc3QgYmFzZUNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogSW5kaWNhdG9yUHJvcHMpID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yQ29udGFpbmVyJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcblxuICAnOmhvdmVyJzoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDgwIDogY29sb3JzLm5ldXRyYWw0MCxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2Ryb3Bkb3duSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnZHJvcGRvd24taW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2NsZWFySW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnY2xlYXItaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG50eXBlIFNlcGFyYXRvclN0YXRlID0geyBpc0Rpc2FibGVkOiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSAoe1xuICBpc0Rpc2FibGVkLFxuICB0aGVtZToge1xuICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICBjb2xvcnMsXG4gIH0sXG59OiBDb21tb25Qcm9wcyAmIFNlcGFyYXRvclN0YXRlKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gIG1hcmdpblRvcDogYmFzZVVuaXQgKiAyLFxuICB3aWR0aDogMSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2luZGljYXRvclNlcGFyYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goeyAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUgfSwgY2xhc3NOYW1lKX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gKHtcbiAgaXNGb2N1c2VkLFxuICBzaXplLFxuICB0aGVtZToge1xuICAgIGNvbG9ycyxcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gIH0sXG59OiB7XG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgc2l6ZTogbnVtYmVyLFxuICB0aGVtZTogVGhlbWUsXG59KSA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxufSk7XG5cbnR5cGUgRG90UHJvcHMgPSB7IGRlbGF5OiBudW1iZXIsIG9mZnNldDogYm9vbGVhbiB9O1xuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogRG90UHJvcHMpID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGFuaW1hdGlvbjogYCR7bG9hZGluZ0RvdEFuaW1hdGlvbnN9IDFzIGVhc2UtaW4tb3V0ICR7ZGVsYXl9bXMgaW5maW5pdGU7YCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBib3JkZXJSYWRpdXM6ICcxZW0nLFxuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBtYXJnaW5MZWZ0OiBvZmZzZXQgPyAnMWVtJyA6IG51bGwsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCB0eXBlIExvYWRpbmdJY29uUHJvcHMgPSB7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufSAmIENvbW1vblByb3BzICYge1xuICAgIC8qKiBTZXQgc2l6ZSBvZiB0aGUgY29udGFpbmVyLiAqL1xuICAgIHNpemU6IG51bWJlcixcbiAgfTtcbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5kaWNhdG9yID0gKHByb3BzOiBMb2FkaW5nSWNvblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzLCBpc1J0bCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdsb2FkaW5nSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnbG9hZGluZy1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezB9IG9mZnNldD17aXNSdGx9IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MTYwfSBvZmZzZXQgLz5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXszMjB9IG9mZnNldD17IWlzUnRsfSAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcbkxvYWRpbmdJbmRpY2F0b3IuZGVmYXVsdFByb3BzID0geyBzaXplOiA0IH07XG4iXX0= */\")\n });\n};\n\nvar LoadingIndicator = function LoadingIndicator(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isRtl = props.isRtl;\n return jsx(\"div\", _extends({}, innerProps, {\n css: getStyles('loadingIndicator', props),\n className: cx({\n indicator: true,\n 'loading-indicator': true\n }, className)\n }), jsx(LoadingDot, {\n delay: 0,\n offset: isRtl\n }), jsx(LoadingDot, {\n delay: 160,\n offset: true\n }), jsx(LoadingDot, {\n delay: 320,\n offset: !isRtl\n }));\n};\nLoadingIndicator.defaultProps = {\n size: 4\n};\n\nvar css = function css(_ref) {\n var isDisabled = _ref.isDisabled,\n isFocused = _ref.isFocused,\n _ref$theme = _ref.theme,\n colors = _ref$theme.colors,\n borderRadius = _ref$theme.borderRadius,\n spacing = _ref$theme.spacing;\n return {\n label: 'control',\n alignItems: 'center',\n backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0,\n borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20,\n borderRadius: borderRadius,\n borderStyle: 'solid',\n borderWidth: 1,\n boxShadow: isFocused ? \"0 0 0 1px \".concat(colors.primary) : null,\n cursor: 'default',\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n minHeight: spacing.controlHeight,\n outline: '0 !important',\n position: 'relative',\n transition: 'all 100ms',\n '&:hover': {\n borderColor: isFocused ? colors.primary : colors.neutral30\n }\n };\n};\n\nvar Control = function Control(props) {\n var children = props.children,\n cx = props.cx,\n getStyles = props.getStyles,\n className = props.className,\n isDisabled = props.isDisabled,\n isFocused = props.isFocused,\n innerRef = props.innerRef,\n innerProps = props.innerProps,\n menuIsOpen = props.menuIsOpen;\n return jsx(\"div\", _extends({\n ref: innerRef,\n css: getStyles('control', props),\n className: cx({\n control: true,\n 'control--is-disabled': isDisabled,\n 'control--is-focused': isFocused,\n 'control--menu-is-open': menuIsOpen\n }, className)\n }, innerProps), children);\n};\n\nvar groupCSS = function groupCSS(_ref) {\n var spacing = _ref.theme.spacing;\n return {\n paddingBottom: spacing.baseUnit * 2,\n paddingTop: spacing.baseUnit * 2\n };\n};\n\nvar Group = function Group(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n Heading = props.Heading,\n headingProps = props.headingProps,\n label = props.label,\n theme = props.theme,\n selectProps = props.selectProps;\n return jsx(\"div\", {\n css: getStyles('group', props),\n className: cx({\n group: true\n }, className)\n }, jsx(Heading, _extends({}, headingProps, {\n selectProps: selectProps,\n theme: theme,\n getStyles: getStyles,\n cx: cx\n }), label), jsx(\"div\", null, children));\n};\n\nvar groupHeadingCSS = function groupHeadingCSS(_ref2) {\n var spacing = _ref2.theme.spacing;\n return {\n label: 'group',\n color: '#999',\n cursor: 'default',\n display: 'block',\n fontSize: '75%',\n fontWeight: '500',\n marginBottom: '0.25em',\n paddingLeft: spacing.baseUnit * 3,\n paddingRight: spacing.baseUnit * 3,\n textTransform: 'uppercase'\n };\n};\nvar GroupHeading = function GroupHeading(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n theme = props.theme,\n selectProps = props.selectProps,\n cleanProps = _objectWithoutProperties(props, [\"className\", \"cx\", \"getStyles\", \"theme\", \"selectProps\"]);\n\n return jsx(\"div\", _extends({\n css: getStyles('groupHeading', _objectSpread({\n theme: theme\n }, cleanProps)),\n className: cx({\n 'group-heading': true\n }, className)\n }, cleanProps));\n};\n\nvar inputCSS = function inputCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n margin: spacing.baseUnit / 2,\n paddingBottom: spacing.baseUnit / 2,\n paddingTop: spacing.baseUnit / 2,\n visibility: isDisabled ? 'hidden' : 'visible',\n color: colors.neutral80\n };\n};\n\nvar inputStyle = function inputStyle(isHidden) {\n return {\n label: 'input',\n background: 0,\n border: 0,\n fontSize: 'inherit',\n opacity: isHidden ? 0 : 1,\n outline: 0,\n padding: 0,\n color: 'inherit'\n };\n};\n\nvar Input = function Input(_ref2) {\n var className = _ref2.className,\n cx = _ref2.cx,\n getStyles = _ref2.getStyles,\n innerRef = _ref2.innerRef,\n isHidden = _ref2.isHidden,\n isDisabled = _ref2.isDisabled,\n theme = _ref2.theme,\n selectProps = _ref2.selectProps,\n props = _objectWithoutProperties(_ref2, [\"className\", \"cx\", \"getStyles\", \"innerRef\", \"isHidden\", \"isDisabled\", \"theme\", \"selectProps\"]);\n\n return jsx(\"div\", {\n css: getStyles('input', _objectSpread({\n theme: theme\n }, props))\n }, jsx(AutosizeInput, _extends({\n className: cx({\n input: true\n }, className),\n inputRef: innerRef,\n inputStyle: inputStyle(isHidden),\n disabled: isDisabled\n }, props)));\n};\n\nvar multiValueCSS = function multiValueCSS(_ref) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n borderRadius = _ref$theme.borderRadius,\n colors = _ref$theme.colors;\n return {\n label: 'multiValue',\n backgroundColor: colors.neutral10,\n borderRadius: borderRadius / 2,\n display: 'flex',\n margin: spacing.baseUnit / 2,\n minWidth: 0 // resolves flex/text-overflow bug\n\n };\n};\nvar multiValueLabelCSS = function multiValueLabelCSS(_ref2) {\n var _ref2$theme = _ref2.theme,\n borderRadius = _ref2$theme.borderRadius,\n colors = _ref2$theme.colors,\n cropWithEllipsis = _ref2.cropWithEllipsis;\n return {\n borderRadius: borderRadius / 2,\n color: colors.neutral80,\n fontSize: '85%',\n overflow: 'hidden',\n padding: 3,\n paddingLeft: 6,\n textOverflow: cropWithEllipsis ? 'ellipsis' : null,\n whiteSpace: 'nowrap'\n };\n};\nvar multiValueRemoveCSS = function multiValueRemoveCSS(_ref3) {\n var _ref3$theme = _ref3.theme,\n spacing = _ref3$theme.spacing,\n borderRadius = _ref3$theme.borderRadius,\n colors = _ref3$theme.colors,\n isFocused = _ref3.isFocused;\n return {\n alignItems: 'center',\n borderRadius: borderRadius / 2,\n backgroundColor: isFocused && colors.dangerLight,\n display: 'flex',\n paddingLeft: spacing.baseUnit,\n paddingRight: spacing.baseUnit,\n ':hover': {\n backgroundColor: colors.dangerLight,\n color: colors.danger\n }\n };\n};\nvar MultiValueGeneric = function MultiValueGeneric(_ref4) {\n var children = _ref4.children,\n innerProps = _ref4.innerProps;\n return jsx(\"div\", innerProps, children);\n};\nvar MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = MultiValueGeneric;\nvar MultiValueRemove =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MultiValueRemove, _Component);\n\n function MultiValueRemove() {\n _classCallCheck(this, MultiValueRemove);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(MultiValueRemove).apply(this, arguments));\n }\n\n _createClass(MultiValueRemove, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n children = _this$props.children,\n innerProps = _this$props.innerProps;\n return jsx(\"div\", innerProps, children || jsx(CrossIcon, {\n size: 14\n }));\n }\n }]);\n\n return MultiValueRemove;\n}(Component);\n\nvar MultiValue =\n/*#__PURE__*/\nfunction (_Component2) {\n _inherits(MultiValue, _Component2);\n\n function MultiValue() {\n _classCallCheck(this, MultiValue);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(MultiValue).apply(this, arguments));\n }\n\n _createClass(MultiValue, [{\n key: \"render\",\n value: function render() {\n var _this = this;\n\n var _this$props2 = this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n components = _this$props2.components,\n cx = _this$props2.cx,\n data = _this$props2.data,\n getStyles = _this$props2.getStyles,\n innerProps = _this$props2.innerProps,\n isDisabled = _this$props2.isDisabled,\n removeProps = _this$props2.removeProps,\n selectProps = _this$props2.selectProps;\n var Container = components.Container,\n Label = components.Label,\n Remove = components.Remove;\n return jsx(ClassNames, null, function (_ref5) {\n var css = _ref5.css,\n emotionCx = _ref5.cx;\n return jsx(Container, {\n data: data,\n innerProps: _objectSpread({}, innerProps, {\n className: emotionCx(css(getStyles('multiValue', _this.props)), cx({\n 'multi-value': true,\n 'multi-value--is-disabled': isDisabled\n }, className))\n }),\n selectProps: selectProps\n }, jsx(Label, {\n data: data,\n innerProps: {\n className: emotionCx(css(getStyles('multiValueLabel', _this.props)), cx({\n 'multi-value__label': true\n }, className))\n },\n selectProps: selectProps\n }, children), jsx(Remove, {\n data: data,\n innerProps: _objectSpread({\n className: emotionCx(css(getStyles('multiValueRemove', _this.props)), cx({\n 'multi-value__remove': true\n }, className))\n }, removeProps),\n selectProps: selectProps\n }));\n });\n }\n }]);\n\n return MultiValue;\n}(Component);\n\n_defineProperty(MultiValue, \"defaultProps\", {\n cropWithEllipsis: true\n});\n\nvar optionCSS = function optionCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n isFocused = _ref.isFocused,\n isSelected = _ref.isSelected,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'option',\n backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',\n color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',\n cursor: 'default',\n display: 'block',\n fontSize: 'inherit',\n padding: \"\".concat(spacing.baseUnit * 2, \"px \").concat(spacing.baseUnit * 3, \"px\"),\n width: '100%',\n userSelect: 'none',\n WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)',\n // provide some affordance on touch devices\n ':active': {\n backgroundColor: !isDisabled && (isSelected ? colors.primary : colors.primary50)\n }\n };\n};\n\nvar Option = function Option(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isDisabled = props.isDisabled,\n isFocused = props.isFocused,\n isSelected = props.isSelected,\n innerRef = props.innerRef,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('option', props),\n className: cx({\n option: true,\n 'option--is-disabled': isDisabled,\n 'option--is-focused': isFocused,\n 'option--is-selected': isSelected\n }, className),\n ref: innerRef\n }, innerProps), children);\n};\n\nvar placeholderCSS = function placeholderCSS(_ref) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'placeholder',\n color: colors.neutral50,\n marginLeft: spacing.baseUnit / 2,\n marginRight: spacing.baseUnit / 2,\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)'\n };\n};\n\nvar Placeholder = function Placeholder(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('placeholder', props),\n className: cx({\n placeholder: true\n }, className)\n }, innerProps), children);\n};\n\nvar css$1 = function css(_ref) {\n var isDisabled = _ref.isDisabled,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'singleValue',\n color: isDisabled ? colors.neutral40 : colors.neutral80,\n marginLeft: spacing.baseUnit / 2,\n marginRight: spacing.baseUnit / 2,\n maxWidth: \"calc(100% - \".concat(spacing.baseUnit * 2, \"px)\"),\n overflow: 'hidden',\n position: 'absolute',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n top: '50%',\n transform: 'translateY(-50%)'\n };\n};\n\nvar SingleValue = function SingleValue(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isDisabled = props.isDisabled,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('singleValue', props),\n className: cx({\n 'single-value': true,\n 'single-value--is-disabled': isDisabled\n }, className)\n }, innerProps), children);\n};\n\nvar components = {\n ClearIndicator: ClearIndicator,\n Control: Control,\n DropdownIndicator: DropdownIndicator,\n DownChevron: DownChevron,\n CrossIcon: CrossIcon,\n Group: Group,\n GroupHeading: GroupHeading,\n IndicatorsContainer: IndicatorsContainer,\n IndicatorSeparator: IndicatorSeparator,\n Input: Input,\n LoadingIndicator: LoadingIndicator,\n Menu: Menu,\n MenuList: MenuList,\n MenuPortal: MenuPortal,\n LoadingMessage: LoadingMessage,\n NoOptionsMessage: NoOptionsMessage,\n MultiValue: MultiValue,\n MultiValueContainer: MultiValueContainer,\n MultiValueLabel: MultiValueLabel,\n MultiValueRemove: MultiValueRemove,\n Option: Option,\n Placeholder: Placeholder,\n SelectContainer: SelectContainer,\n SingleValue: SingleValue,\n ValueContainer: ValueContainer\n};\nvar defaultComponents = function defaultComponents(props) {\n return _objectSpread({}, components, props.components);\n};\n\nexport { MenuPlacer as M, containerCSS as a, css as b, clearIndicatorCSS as c, dropdownIndicatorCSS as d, groupHeadingCSS as e, indicatorSeparatorCSS as f, groupCSS as g, inputCSS as h, indicatorsContainerCSS as i, loadingMessageCSS as j, menuListCSS as k, loadingIndicatorCSS as l, menuCSS as m, menuPortalCSS as n, multiValueCSS as o, multiValueLabelCSS as p, multiValueRemoveCSS as q, noOptionsMessageCSS as r, optionCSS as s, placeholderCSS as t, css$1 as u, valueContainerCSS as v, defaultComponents as w, exportedEqual as x, components as y };\n","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { Component, PureComponent } from 'react';\nimport memoizeOne from 'memoize-one';\nimport { jsx } from '@emotion/core';\nimport { findDOMNode } from 'react-dom';\nimport { i as isTouchCapable, d as isMobileDevice, e as isDocumentElement, f as cleanValue, h as scrollIntoView, j as classNames, n as noop } from '../../chunk-39d3fda8.browser.esm.js';\nimport { c as clearIndicatorCSS, a as containerCSS, b as css, d as dropdownIndicatorCSS, g as groupCSS, e as groupHeadingCSS, i as indicatorsContainerCSS, f as indicatorSeparatorCSS, h as inputCSS, l as loadingIndicatorCSS, j as loadingMessageCSS, m as menuCSS, k as menuListCSS, n as menuPortalCSS, o as multiValueCSS, p as multiValueLabelCSS, q as multiValueRemoveCSS, r as noOptionsMessageCSS, s as optionCSS, t as placeholderCSS, u as css$1, v as valueContainerCSS, w as defaultComponents, x as exportedEqual, M as MenuPlacer } from '../../chunk-80640036.browser.esm.js';\nimport _css from '@emotion/css';\n\nvar diacritics = [{\n base: 'A',\n letters: /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g\n}, {\n base: 'AA',\n letters: /[\\uA732]/g\n}, {\n base: 'AE',\n letters: /[\\u00C6\\u01FC\\u01E2]/g\n}, {\n base: 'AO',\n letters: /[\\uA734]/g\n}, {\n base: 'AU',\n letters: /[\\uA736]/g\n}, {\n base: 'AV',\n letters: /[\\uA738\\uA73A]/g\n}, {\n base: 'AY',\n letters: /[\\uA73C]/g\n}, {\n base: 'B',\n letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g\n}, {\n base: 'C',\n letters: /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g\n}, {\n base: 'D',\n letters: /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g\n}, {\n base: 'DZ',\n letters: /[\\u01F1\\u01C4]/g\n}, {\n base: 'Dz',\n letters: /[\\u01F2\\u01C5]/g\n}, {\n base: 'E',\n letters: /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g\n}, {\n base: 'F',\n letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g\n}, {\n base: 'G',\n letters: /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g\n}, {\n base: 'H',\n letters: /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g\n}, {\n base: 'I',\n letters: /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g\n}, {\n base: 'J',\n letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g\n}, {\n base: 'K',\n letters: /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g\n}, {\n base: 'L',\n letters: /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g\n}, {\n base: 'LJ',\n letters: /[\\u01C7]/g\n}, {\n base: 'Lj',\n letters: /[\\u01C8]/g\n}, {\n base: 'M',\n letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g\n}, {\n base: 'N',\n letters: /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g\n}, {\n base: 'NJ',\n letters: /[\\u01CA]/g\n}, {\n base: 'Nj',\n letters: /[\\u01CB]/g\n}, {\n base: 'O',\n letters: /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g\n}, {\n base: 'OI',\n letters: /[\\u01A2]/g\n}, {\n base: 'OO',\n letters: /[\\uA74E]/g\n}, {\n base: 'OU',\n letters: /[\\u0222]/g\n}, {\n base: 'P',\n letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g\n}, {\n base: 'Q',\n letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g\n}, {\n base: 'R',\n letters: /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g\n}, {\n base: 'S',\n letters: /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g\n}, {\n base: 'T',\n letters: /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g\n}, {\n base: 'TZ',\n letters: /[\\uA728]/g\n}, {\n base: 'U',\n letters: /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g\n}, {\n base: 'V',\n letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g\n}, {\n base: 'VY',\n letters: /[\\uA760]/g\n}, {\n base: 'W',\n letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g\n}, {\n base: 'X',\n letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g\n}, {\n base: 'Y',\n letters: /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g\n}, {\n base: 'Z',\n letters: /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g\n}, {\n base: 'a',\n letters: /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g\n}, {\n base: 'aa',\n letters: /[\\uA733]/g\n}, {\n base: 'ae',\n letters: /[\\u00E6\\u01FD\\u01E3]/g\n}, {\n base: 'ao',\n letters: /[\\uA735]/g\n}, {\n base: 'au',\n letters: /[\\uA737]/g\n}, {\n base: 'av',\n letters: /[\\uA739\\uA73B]/g\n}, {\n base: 'ay',\n letters: /[\\uA73D]/g\n}, {\n base: 'b',\n letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g\n}, {\n base: 'c',\n letters: /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g\n}, {\n base: 'd',\n letters: /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g\n}, {\n base: 'dz',\n letters: /[\\u01F3\\u01C6]/g\n}, {\n base: 'e',\n letters: /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g\n}, {\n base: 'f',\n letters: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g\n}, {\n base: 'g',\n letters: /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g\n}, {\n base: 'h',\n letters: /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g\n}, {\n base: 'hv',\n letters: /[\\u0195]/g\n}, {\n base: 'i',\n letters: /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g\n}, {\n base: 'j',\n letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g\n}, {\n base: 'k',\n letters: /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g\n}, {\n base: 'l',\n letters: /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g\n}, {\n base: 'lj',\n letters: /[\\u01C9]/g\n}, {\n base: 'm',\n letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g\n}, {\n base: 'n',\n letters: /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g\n}, {\n base: 'nj',\n letters: /[\\u01CC]/g\n}, {\n base: 'o',\n letters: /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g\n}, {\n base: 'oi',\n letters: /[\\u01A3]/g\n}, {\n base: 'ou',\n letters: /[\\u0223]/g\n}, {\n base: 'oo',\n letters: /[\\uA74F]/g\n}, {\n base: 'p',\n letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g\n}, {\n base: 'q',\n letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g\n}, {\n base: 'r',\n letters: /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g\n}, {\n base: 's',\n letters: /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g\n}, {\n base: 't',\n letters: /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g\n}, {\n base: 'tz',\n letters: /[\\uA729]/g\n}, {\n base: 'u',\n letters: /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g\n}, {\n base: 'v',\n letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g\n}, {\n base: 'vy',\n letters: /[\\uA761]/g\n}, {\n base: 'w',\n letters: /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g\n}, {\n base: 'x',\n letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g\n}, {\n base: 'y',\n letters: /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g\n}, {\n base: 'z',\n letters: /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g\n}];\nvar stripDiacritics = function stripDiacritics(str) {\n for (var i = 0; i < diacritics.length; i++) {\n str = str.replace(diacritics[i].letters, diacritics[i].base);\n }\n\n return str;\n};\n\nvar trimString = function trimString(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n};\n\nvar defaultStringify = function defaultStringify(option) {\n return \"\".concat(option.label, \" \").concat(option.value);\n};\n\nvar createFilter = function createFilter(config) {\n return function (option, rawInput) {\n var _ignoreCase$ignoreAcc = _objectSpread({\n ignoreCase: true,\n ignoreAccents: true,\n stringify: defaultStringify,\n trim: true,\n matchFrom: 'any'\n }, config),\n ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,\n ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,\n stringify = _ignoreCase$ignoreAcc.stringify,\n trim = _ignoreCase$ignoreAcc.trim,\n matchFrom = _ignoreCase$ignoreAcc.matchFrom;\n\n var input = trim ? trimString(rawInput) : rawInput;\n var candidate = trim ? trimString(stringify(option)) : stringify(option);\n\n if (ignoreCase) {\n input = input.toLowerCase();\n candidate = candidate.toLowerCase();\n }\n\n if (ignoreAccents) {\n input = stripDiacritics(input);\n candidate = stripDiacritics(candidate);\n }\n\n return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n };\n};\n\nvar _ref = process.env.NODE_ENV === \"production\" ? {\n name: \"1laao21-a11yText\",\n styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;\"\n} : {\n name: \"1laao21-a11yText\",\n styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFNIiwiZmlsZSI6IkExMXlUZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgdHlwZSBFbGVtZW50Q29uZmlnIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vY29yZSc7XG5cbi8vIEFzc2lzdGl2ZSB0ZXh0IHRvIGRlc2NyaWJlIHZpc3VhbCBlbGVtZW50cy4gSGlkZGVuIGZvciBzaWdodGVkIHVzZXJzLlxuY29uc3QgQTExeVRleHQgPSAocHJvcHM6IEVsZW1lbnRDb25maWc8J3NwYW4nPikgPT4gKFxuICAgIDxzcGFuXG4gICAgICBjc3M9e3tcbiAgICAgICAgbGFiZWw6ICdhMTF5VGV4dCcsXG4gICAgICAgIHpJbmRleDogOTk5OSxcbiAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICBjbGlwOiAncmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpJyxcbiAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICB9fVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBBMTF5VGV4dDtcbiJdfQ== */\"\n};\n\nvar A11yText = function A11yText(props) {\n return jsx(\"span\", _extends({\n css: _ref\n }, props));\n};\n\nvar DummyInput =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(DummyInput, _Component);\n\n function DummyInput() {\n _classCallCheck(this, DummyInput);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(DummyInput).apply(this, arguments));\n }\n\n _createClass(DummyInput, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n inProp = _this$props.in,\n out = _this$props.out,\n onExited = _this$props.onExited,\n appear = _this$props.appear,\n enter = _this$props.enter,\n exit = _this$props.exit,\n innerRef = _this$props.innerRef,\n emotion = _this$props.emotion,\n props = _objectWithoutProperties(_this$props, [\"in\", \"out\", \"onExited\", \"appear\", \"enter\", \"exit\", \"innerRef\", \"emotion\"]);\n\n return jsx(\"input\", _extends({\n ref: innerRef\n }, props, {\n css:\n /*#__PURE__*/\n _css({\n label: 'dummyInput',\n // get rid of any default styles\n background: 0,\n border: 0,\n fontSize: 'inherit',\n outline: 0,\n padding: 0,\n // important! without `width` browsers won't allow focus\n width: 1,\n // remove cursor on desktop\n color: 'transparent',\n // remove cursor on mobile whilst maintaining \"scroll into view\" behaviour\n left: -100,\n opacity: 0,\n position: 'relative',\n transform: 'scale(0)'\n }, process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWVEiLCJmaWxlIjoiRHVtbXlJbnB1dC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG4vKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEdW1teUlucHV0IGV4dGVuZHMgQ29tcG9uZW50PGFueT4ge1xuICByZW5kZXIgKCkge1xuICAgIGNvbnN0IHsgaW46IGluUHJvcCwgb3V0LCBvbkV4aXRlZCwgYXBwZWFyLCBlbnRlciwgZXhpdCwgaW5uZXJSZWYsIGVtb3Rpb24sIC4uLnByb3BzIH0gPSB0aGlzLnByb3BzO1xuICAgIHJldHVybihcbiAgICAgIDxpbnB1dFxuICAgICAgICByZWY9e2lubmVyUmVmfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGxhYmVsOiAnZHVtbXlJbnB1dCcsXG4gICAgICAgICAgLy8gZ2V0IHJpZCBvZiBhbnkgZGVmYXVsdCBzdHlsZXNcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAwLFxuICAgICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgICBmb250U2l6ZTogJ2luaGVyaXQnLFxuICAgICAgICAgIG91dGxpbmU6IDAsXG4gICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAvLyBpbXBvcnRhbnQhIHdpdGhvdXQgYHdpZHRoYCBicm93c2VycyB3b24ndCBhbGxvdyBmb2N1c1xuICAgICAgICAgIHdpZHRoOiAxLFxuXG4gICAgICAgICAgLy8gcmVtb3ZlIGN1cnNvciBvbiBkZXNrdG9wXG4gICAgICAgICAgY29sb3I6ICd0cmFuc3BhcmVudCcsXG5cbiAgICAgICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIG1vYmlsZSB3aGlsc3QgbWFpbnRhaW5pbmcgXCJzY3JvbGwgaW50byB2aWV3XCIgYmVoYXZpb3VyXG4gICAgICAgICAgbGVmdDogLTEwMCxcbiAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDApJyxcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxufVxuIl19 */\")\n }));\n }\n }]);\n\n return DummyInput;\n}(Component);\n\nvar NodeResolver =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(NodeResolver, _Component);\n\n function NodeResolver() {\n _classCallCheck(this, NodeResolver);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(NodeResolver).apply(this, arguments));\n }\n\n _createClass(NodeResolver, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.innerRef(findDOMNode(this));\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.props.innerRef(null);\n }\n }, {\n key: \"render\",\n value: function render() {\n return this.props.children;\n }\n }]);\n\n return NodeResolver;\n}(Component);\n\nvar STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\nvar LOCK_STYLES = {\n boxSizing: 'border-box',\n // account for possible declaration `width: 100%;` on body\n overflow: 'hidden',\n position: 'relative',\n height: '100%'\n};\n\nfunction preventTouchMove(e) {\n e.preventDefault();\n}\nfunction allowTouchMove(e) {\n e.stopPropagation();\n}\nfunction preventInertiaScroll() {\n var top = this.scrollTop;\n var totalScroll = this.scrollHeight;\n var currentScroll = top + this.offsetHeight;\n\n if (top === 0) {\n this.scrollTop = 1;\n } else if (currentScroll === totalScroll) {\n this.scrollTop = top - 1;\n }\n} // `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\n\nfunction isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints;\n}\n\nvar canUseDOM = !!(window.document && window.document.createElement);\nvar activeScrollLocks = 0;\n\nvar ScrollLock =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ScrollLock, _Component);\n\n function ScrollLock() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ScrollLock);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ScrollLock)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"originalStyles\", {});\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"listenerOptions\", {\n capture: false,\n passive: false\n });\n\n return _this;\n }\n\n _createClass(ScrollLock, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n if (!canUseDOM) return;\n var _this$props = this.props,\n accountForScrollbars = _this$props.accountForScrollbars,\n touchScrollTarget = _this$props.touchScrollTarget;\n var target = document.body;\n var targetStyle = target && target.style;\n\n if (accountForScrollbars) {\n // store any styles already applied to the body\n STYLE_KEYS.forEach(function (key) {\n var val = targetStyle && targetStyle[key];\n _this2.originalStyles[key] = val;\n });\n } // apply the lock styles and padding if this is the first scroll lock\n\n\n if (accountForScrollbars && activeScrollLocks < 1) {\n var currentPadding = parseInt(this.originalStyles.paddingRight, 10) || 0;\n var clientWidth = document.body ? document.body.clientWidth : 0;\n var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;\n Object.keys(LOCK_STYLES).forEach(function (key) {\n var val = LOCK_STYLES[key];\n\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n\n if (targetStyle) {\n targetStyle.paddingRight = \"\".concat(adjustedPadding, \"px\");\n }\n } // account for touch devices\n\n\n if (target && isTouchDevice()) {\n // Mobile Safari ignores { overflow: hidden } declaration on the body.\n target.addEventListener('touchmove', preventTouchMove, this.listenerOptions); // Allow scroll on provided target\n\n if (touchScrollTarget) {\n touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n touchScrollTarget.addEventListener('touchmove', allowTouchMove, this.listenerOptions);\n }\n } // increment active scroll locks\n\n\n activeScrollLocks += 1;\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this3 = this;\n\n if (!canUseDOM) return;\n var _this$props2 = this.props,\n accountForScrollbars = _this$props2.accountForScrollbars,\n touchScrollTarget = _this$props2.touchScrollTarget;\n var target = document.body;\n var targetStyle = target && target.style; // safely decrement active scroll locks\n\n activeScrollLocks = Math.max(activeScrollLocks - 1, 0); // reapply original body styles, if any\n\n if (accountForScrollbars && activeScrollLocks < 1) {\n STYLE_KEYS.forEach(function (key) {\n var val = _this3.originalStyles[key];\n\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n } // remove touch listeners\n\n\n if (target && isTouchDevice()) {\n target.removeEventListener('touchmove', preventTouchMove, this.listenerOptions);\n\n if (touchScrollTarget) {\n touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n touchScrollTarget.removeEventListener('touchmove', allowTouchMove, this.listenerOptions);\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return null;\n }\n }]);\n\n return ScrollLock;\n}(Component);\n\n_defineProperty(ScrollLock, \"defaultProps\", {\n accountForScrollbars: true\n});\n\nvar _ref$1 = process.env.NODE_ENV === \"production\" ? {\n name: \"1dsbpcp\",\n styles: \"position:fixed;left:0;bottom:0;right:0;top:0;\"\n} : {\n name: \"1dsbpcp\",\n styles: \"position:fixed;left:0;bottom:0;right:0;top:0;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbEJsb2NrLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZEVSIsImZpbGUiOiJTY3JvbGxCbG9jay5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG4vKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IFB1cmVDb21wb25lbnQsIHR5cGUgRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuaW1wb3J0IE5vZGVSZXNvbHZlciBmcm9tICcuL05vZGVSZXNvbHZlcic7XG5pbXBvcnQgU2Nyb2xsTG9jayBmcm9tICcuL1Njcm9sbExvY2svaW5kZXgnO1xuXG50eXBlIFByb3BzID0ge1xuICBjaGlsZHJlbjogRWxlbWVudDwqPixcbiAgaXNFbmFibGVkOiBib29sZWFuLFxufTtcbnR5cGUgU3RhdGUgPSB7XG4gIHRvdWNoU2Nyb2xsVGFyZ2V0OiBIVE1MRWxlbWVudCB8IG51bGwsXG59O1xuXG4vLyBOT1RFOlxuLy8gV2Ugc2hvdWxkbid0IG5lZWQgdGhpcyBhZnRlciB1cGRhdGluZyB0byBSZWFjdCB2MTYuMy4wLCB3aGljaCBpbnRyb2R1Y2VzOlxuLy8gLSBjcmVhdGVSZWYoKSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjcmVhY3RjcmVhdGVyZWZcbi8vIC0gZm9yd2FyZFJlZigpIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1hcGkuaHRtbCNyZWFjdGZvcndhcmRyZWZcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Nyb2xsQmxvY2sgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PFByb3BzLCBTdGF0ZT4ge1xuICBzdGF0ZSA9IHsgdG91Y2hTY3JvbGxUYXJnZXQ6IG51bGwgfTtcblxuICAvLyBtdXN0IGJlIGluIHN0YXRlIHRvIHRyaWdnZXIgYSByZS1yZW5kZXIsIG9ubHkgcnVucyBvbmNlIHBlciBpbnN0YW5jZVxuICBnZXRTY3JvbGxUYXJnZXQgPSAocmVmOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGlmIChyZWYgPT09IHRoaXMuc3RhdGUudG91Y2hTY3JvbGxUYXJnZXQpIHJldHVybjtcbiAgICB0aGlzLnNldFN0YXRlKHsgdG91Y2hTY3JvbGxUYXJnZXQ6IHJlZiB9KTtcbiAgfTtcblxuICAvLyB0aGlzIHdpbGwgY2xvc2UgdGhlIG1lbnUgd2hlbiBhIHVzZXIgY2xpY2tzIG91dHNpZGVcbiAgYmx1clNlbGVjdElucHV0ID0gKCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4sIGlzRW5hYmxlZCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IHRvdWNoU2Nyb2xsVGFyZ2V0IH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgLy8gYmFpbCBlYXJseSBpZiBub3QgZW5hYmxlZFxuICAgIGlmICghaXNFbmFibGVkKSByZXR1cm4gY2hpbGRyZW47XG5cbiAgICAvKlxuICAgICAqIERpdlxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIGJsb2NrcyBzY3JvbGxpbmcgb24gbm9uLWJvZHkgZWxlbWVudHMgYmVoaW5kIHRoZSBtZW51XG5cbiAgICAgKiBOb2RlUmVzb2x2ZXJcbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgKiB3ZSBuZWVkIGEgcmVmZXJlbmNlIHRvIHRoZSBzY3JvbGxhYmxlIGVsZW1lbnQgdG8gXCJ1bmxvY2tcIiBzY3JvbGwgb25cbiAgICAgKiBtb2JpbGUgZGV2aWNlc1xuXG4gICAgICogU2Nyb2xsTG9ja1xuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIGFjdHVhbGx5IGRvZXMgdGhlIHNjcm9sbCBsb2NraW5nXG4gICAgICovXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLmJsdXJTZWxlY3RJbnB1dH1cbiAgICAgICAgICBjc3M9e3sgcG9zaXRpb246ICdmaXhlZCcsIGxlZnQ6IDAsIGJvdHRvbTogMCwgcmlnaHQ6IDAsIHRvcDogMCB9fVxuICAgICAgICAvPlxuICAgICAgICA8Tm9kZVJlc29sdmVyIGlubmVyUmVmPXt0aGlzLmdldFNjcm9sbFRhcmdldH0+e2NoaWxkcmVufTwvTm9kZVJlc29sdmVyPlxuICAgICAgICB7dG91Y2hTY3JvbGxUYXJnZXQgPyAoXG4gICAgICAgICAgPFNjcm9sbExvY2sgdG91Y2hTY3JvbGxUYXJnZXQ9e3RvdWNoU2Nyb2xsVGFyZ2V0fSAvPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cbiJdfQ== */\"\n};\n\n// NOTE:\n// We shouldn't need this after updating to React v16.3.0, which introduces:\n// - createRef() https://reactjs.org/docs/react-api.html#reactcreateref\n// - forwardRef() https://reactjs.org/docs/react-api.html#reactforwardref\nvar ScrollBlock =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ScrollBlock, _PureComponent);\n\n function ScrollBlock() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ScrollBlock);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ScrollBlock)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n touchScrollTarget: null\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getScrollTarget\", function (ref) {\n if (ref === _this.state.touchScrollTarget) return;\n\n _this.setState({\n touchScrollTarget: ref\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"blurSelectInput\", function () {\n if (document.activeElement) {\n document.activeElement.blur();\n }\n });\n\n return _this;\n }\n\n _createClass(ScrollBlock, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n children = _this$props.children,\n isEnabled = _this$props.isEnabled;\n var touchScrollTarget = this.state.touchScrollTarget; // bail early if not enabled\n\n if (!isEnabled) return children;\n /*\n * Div\n * ------------------------------\n * blocks scrolling on non-body elements behind the menu\n * NodeResolver\n * ------------------------------\n * we need a reference to the scrollable element to \"unlock\" scroll on\n * mobile devices\n * ScrollLock\n * ------------------------------\n * actually does the scroll locking\n */\n\n return jsx(\"div\", null, jsx(\"div\", {\n onClick: this.blurSelectInput,\n css: _ref$1\n }), jsx(NodeResolver, {\n innerRef: this.getScrollTarget\n }, children), touchScrollTarget ? jsx(ScrollLock, {\n touchScrollTarget: touchScrollTarget\n }) : null);\n }\n }]);\n\n return ScrollBlock;\n}(PureComponent);\n\nvar ScrollCaptor =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ScrollCaptor, _Component);\n\n function ScrollCaptor() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ScrollCaptor);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ScrollCaptor)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isBottom\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isTop\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollTarget\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"touchStart\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"cancelScroll\", function (event) {\n event.preventDefault();\n event.stopPropagation();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleEventDelta\", function (event, delta) {\n var _this$props = _this.props,\n onBottomArrive = _this$props.onBottomArrive,\n onBottomLeave = _this$props.onBottomLeave,\n onTopArrive = _this$props.onTopArrive,\n onTopLeave = _this$props.onTopLeave;\n var _this$scrollTarget = _this.scrollTarget,\n scrollTop = _this$scrollTarget.scrollTop,\n scrollHeight = _this$scrollTarget.scrollHeight,\n clientHeight = _this$scrollTarget.clientHeight;\n var target = _this.scrollTarget;\n var isDeltaPositive = delta > 0;\n var availableScroll = scrollHeight - clientHeight - scrollTop;\n var shouldCancelScroll = false; // reset bottom/top flags\n\n if (availableScroll > delta && _this.isBottom) {\n if (onBottomLeave) onBottomLeave(event);\n _this.isBottom = false;\n }\n\n if (isDeltaPositive && _this.isTop) {\n if (onTopLeave) onTopLeave(event);\n _this.isTop = false;\n } // bottom limit\n\n\n if (isDeltaPositive && delta > availableScroll) {\n if (onBottomArrive && !_this.isBottom) {\n onBottomArrive(event);\n }\n\n target.scrollTop = scrollHeight;\n shouldCancelScroll = true;\n _this.isBottom = true; // top limit\n } else if (!isDeltaPositive && -delta > scrollTop) {\n if (onTopArrive && !_this.isTop) {\n onTopArrive(event);\n }\n\n target.scrollTop = 0;\n shouldCancelScroll = true;\n _this.isTop = true;\n } // cancel scroll\n\n\n if (shouldCancelScroll) {\n _this.cancelScroll(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onWheel\", function (event) {\n _this.handleEventDelta(event, event.deltaY);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchStart\", function (event) {\n // set touch start so we can calculate touchmove delta\n _this.touchStart = event.changedTouches[0].clientY;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchMove\", function (event) {\n var deltaY = _this.touchStart - event.changedTouches[0].clientY;\n\n _this.handleEventDelta(event, deltaY);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getScrollTarget\", function (ref) {\n _this.scrollTarget = ref;\n });\n\n return _this;\n }\n\n _createClass(ScrollCaptor, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.startListening(this.scrollTarget);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.stopListening(this.scrollTarget);\n }\n }, {\n key: \"startListening\",\n value: function startListening(el) {\n // bail early if no element is available to attach to\n if (!el) return; // all the if statements are to appease Flow 😢\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('wheel', this.onWheel, false);\n }\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('touchstart', this.onTouchStart, false);\n }\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('touchmove', this.onTouchMove, false);\n }\n }\n }, {\n key: \"stopListening\",\n value: function stopListening(el) {\n // all the if statements are to appease Flow 😢\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('wheel', this.onWheel, false);\n }\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('touchstart', this.onTouchStart, false);\n }\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('touchmove', this.onTouchMove, false);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(NodeResolver, {\n innerRef: this.getScrollTarget\n }, this.props.children);\n }\n }]);\n\n return ScrollCaptor;\n}(Component);\n\nvar ScrollCaptorSwitch =\n/*#__PURE__*/\nfunction (_Component2) {\n _inherits(ScrollCaptorSwitch, _Component2);\n\n function ScrollCaptorSwitch() {\n _classCallCheck(this, ScrollCaptorSwitch);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ScrollCaptorSwitch).apply(this, arguments));\n }\n\n _createClass(ScrollCaptorSwitch, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n isEnabled = _this$props2.isEnabled,\n props = _objectWithoutProperties(_this$props2, [\"isEnabled\"]);\n\n return isEnabled ? React.createElement(ScrollCaptor, props) : this.props.children;\n }\n }]);\n\n return ScrollCaptorSwitch;\n}(Component);\n\n_defineProperty(ScrollCaptorSwitch, \"defaultProps\", {\n isEnabled: true\n});\n\nvar instructionsAriaMessage = function instructionsAriaMessage(event) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var isSearchable = context.isSearchable,\n isMulti = context.isMulti,\n label = context.label,\n isDisabled = context.isDisabled;\n\n switch (event) {\n case 'menu':\n return \"Use Up and Down to choose options\".concat(isDisabled ? '' : ', press Enter to select the currently focused option', \", press Escape to exit the menu, press Tab to select the option and exit the menu.\");\n\n case 'input':\n return \"\".concat(label ? label : 'Select', \" is focused \").concat(isSearchable ? ',type to refine list' : '', \", press Down to open the menu, \").concat(isMulti ? ' press left to focus selected values' : '');\n\n case 'value':\n return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value';\n }\n};\nvar valueEventAriaMessage = function valueEventAriaMessage(event, context) {\n var value = context.value,\n isDisabled = context.isDisabled;\n if (!value) return;\n\n switch (event) {\n case 'deselect-option':\n case 'pop-value':\n case 'remove-value':\n return \"option \".concat(value, \", deselected.\");\n\n case 'select-option':\n return isDisabled ? \"option \".concat(value, \" is disabled. Select another option.\") : \"option \".concat(value, \", selected.\");\n }\n};\nvar valueFocusAriaMessage = function valueFocusAriaMessage(_ref) {\n var focusedValue = _ref.focusedValue,\n getOptionLabel = _ref.getOptionLabel,\n selectValue = _ref.selectValue;\n return \"value \".concat(getOptionLabel(focusedValue), \" focused, \").concat(selectValue.indexOf(focusedValue) + 1, \" of \").concat(selectValue.length, \".\");\n};\nvar optionFocusAriaMessage = function optionFocusAriaMessage(_ref2) {\n var focusedOption = _ref2.focusedOption,\n getOptionLabel = _ref2.getOptionLabel,\n options = _ref2.options;\n return \"option \".concat(getOptionLabel(focusedOption), \" focused\").concat(focusedOption.isDisabled ? ' disabled' : '', \", \").concat(options.indexOf(focusedOption) + 1, \" of \").concat(options.length, \".\");\n};\nvar resultsAriaMessage = function resultsAriaMessage(_ref3) {\n var inputValue = _ref3.inputValue,\n screenReaderMessage = _ref3.screenReaderMessage;\n return \"\".concat(screenReaderMessage).concat(inputValue ? ' for search term ' + inputValue : '', \".\");\n};\n\nvar formatGroupLabel = function formatGroupLabel(group) {\n return group.label;\n};\nvar getOptionLabel = function getOptionLabel(option) {\n return option.label;\n};\nvar getOptionValue = function getOptionValue(option) {\n return option.value;\n};\nvar isOptionDisabled = function isOptionDisabled(option) {\n return !!option.isDisabled;\n};\n\nvar defaultStyles = {\n clearIndicator: clearIndicatorCSS,\n container: containerCSS,\n control: css,\n dropdownIndicator: dropdownIndicatorCSS,\n group: groupCSS,\n groupHeading: groupHeadingCSS,\n indicatorsContainer: indicatorsContainerCSS,\n indicatorSeparator: indicatorSeparatorCSS,\n input: inputCSS,\n loadingIndicator: loadingIndicatorCSS,\n loadingMessage: loadingMessageCSS,\n menu: menuCSS,\n menuList: menuListCSS,\n menuPortal: menuPortalCSS,\n multiValue: multiValueCSS,\n multiValueLabel: multiValueLabelCSS,\n multiValueRemove: multiValueRemoveCSS,\n noOptionsMessage: noOptionsMessageCSS,\n option: optionCSS,\n placeholder: placeholderCSS,\n singleValue: css$1,\n valueContainer: valueContainerCSS\n}; // Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // initialize with source styles\n var styles = _objectSpread({}, source); // massage in target styles\n\n\n Object.keys(target).forEach(function (key) {\n if (source[key]) {\n styles[key] = function (rsCss, props) {\n return target[key](source[key](rsCss, props), props);\n };\n } else {\n styles[key] = target[key];\n }\n });\n return styles;\n}\n\nvar colors = {\n primary: '#2684FF',\n primary75: '#4C9AFF',\n primary50: '#B2D4FF',\n primary25: '#DEEBFF',\n danger: '#DE350B',\n dangerLight: '#FFBDAD',\n neutral0: 'hsl(0, 0%, 100%)',\n neutral5: 'hsl(0, 0%, 95%)',\n neutral10: 'hsl(0, 0%, 90%)',\n neutral20: 'hsl(0, 0%, 80%)',\n neutral30: 'hsl(0, 0%, 70%)',\n neutral40: 'hsl(0, 0%, 60%)',\n neutral50: 'hsl(0, 0%, 50%)',\n neutral60: 'hsl(0, 0%, 40%)',\n neutral70: 'hsl(0, 0%, 30%)',\n neutral80: 'hsl(0, 0%, 20%)',\n neutral90: 'hsl(0, 0%, 10%)'\n};\nvar borderRadius = 4; // Used to calculate consistent margin/padding on elements\n\nvar baseUnit = 4; // The minimum height of the control\n\nvar controlHeight = 38; // The amount of space between the control and menu */\n\nvar menuGutter = baseUnit * 2;\nvar spacing = {\n baseUnit: baseUnit,\n controlHeight: controlHeight,\n menuGutter: menuGutter\n};\nvar defaultTheme = {\n borderRadius: borderRadius,\n colors: colors,\n spacing: spacing\n};\n\nvar defaultProps = {\n backspaceRemovesValue: true,\n blurInputOnSelect: isTouchCapable(),\n captureMenuScroll: !isTouchCapable(),\n closeMenuOnSelect: true,\n closeMenuOnScroll: false,\n components: {},\n controlShouldRenderValue: true,\n escapeClearsValue: false,\n filterOption: createFilter(),\n formatGroupLabel: formatGroupLabel,\n getOptionLabel: getOptionLabel,\n getOptionValue: getOptionValue,\n isDisabled: false,\n isLoading: false,\n isMulti: false,\n isRtl: false,\n isSearchable: true,\n isOptionDisabled: isOptionDisabled,\n loadingMessage: function loadingMessage() {\n return 'Loading...';\n },\n maxMenuHeight: 300,\n minMenuHeight: 140,\n menuIsOpen: false,\n menuPlacement: 'bottom',\n menuPosition: 'absolute',\n menuShouldBlockScroll: false,\n menuShouldScrollIntoView: !isMobileDevice(),\n noOptionsMessage: function noOptionsMessage() {\n return 'No options';\n },\n openMenuOnFocus: false,\n openMenuOnClick: true,\n options: [],\n pageSize: 5,\n placeholder: 'Select...',\n screenReaderStatus: function screenReaderStatus(_ref) {\n var count = _ref.count;\n return \"\".concat(count, \" result\").concat(count !== 1 ? 's' : '', \" available\");\n },\n styles: {},\n tabIndex: '0',\n tabSelectsValue: true\n};\nvar instanceId = 1;\n\nvar Select =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Select, _Component);\n\n // Misc. Instance Properties\n // ------------------------------\n // TODO\n // Refs\n // ------------------------------\n // Lifecycle\n // ------------------------------\n function Select(_props) {\n var _this;\n\n _classCallCheck(this, Select);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Select).call(this, _props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n ariaLiveSelection: '',\n ariaLiveContext: '',\n focusedOption: null,\n focusedValue: null,\n inputIsHidden: false,\n isFocused: false,\n menuOptions: {\n render: [],\n focusable: []\n },\n selectValue: []\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"blockOptionHover\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isComposing\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"clearFocusValueOnUpdate\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"commonProps\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"components\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"hasGroups\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"initialTouchX\", 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"initialTouchY\", 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"inputIsHiddenAfterUpdate\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"instancePrefix\", '');\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"openAfterFocus\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollToFocusedOptionOnUpdate\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"userIsDragging\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"controlRef\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getControlRef\", function (ref) {\n _this.controlRef = ref;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"focusedOptionRef\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getFocusedOptionRef\", function (ref) {\n _this.focusedOptionRef = ref;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"menuListRef\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getMenuListRef\", function (ref) {\n _this.menuListRef = ref;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"inputRef\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getInputRef\", function (ref) {\n _this.inputRef = ref;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"cacheComponents\", function (components) {\n _this.components = defaultComponents({\n components: components\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"focus\", _this.focusInput);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"blur\", _this.blurInput);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (newValue, actionMeta) {\n var _this$props = _this.props,\n onChange = _this$props.onChange,\n name = _this$props.name;\n onChange(newValue, _objectSpread({}, actionMeta, {\n name: name\n }));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setValue\", function (newValue) {\n var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'set-value';\n var option = arguments.length > 2 ? arguments[2] : undefined;\n var _this$props2 = _this.props,\n closeMenuOnSelect = _this$props2.closeMenuOnSelect,\n isMulti = _this$props2.isMulti;\n\n _this.onInputChange('', {\n action: 'set-value'\n });\n\n if (closeMenuOnSelect) {\n _this.inputIsHiddenAfterUpdate = !isMulti;\n\n _this.onMenuClose();\n } // when the select value should change, we should reset focusedValue\n\n\n _this.clearFocusValueOnUpdate = true;\n\n _this.onChange(newValue, {\n action: action,\n option: option\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"selectOption\", function (newValue) {\n var _this$props3 = _this.props,\n blurInputOnSelect = _this$props3.blurInputOnSelect,\n isMulti = _this$props3.isMulti;\n var selectValue = _this.state.selectValue;\n\n if (isMulti) {\n if (_this.isOptionSelected(newValue, selectValue)) {\n var candidate = _this.getOptionValue(newValue);\n\n _this.setValue(selectValue.filter(function (i) {\n return _this.getOptionValue(i) !== candidate;\n }), 'deselect-option', newValue);\n\n _this.announceAriaLiveSelection({\n event: 'deselect-option',\n context: {\n value: _this.getOptionLabel(newValue)\n }\n });\n } else {\n if (!_this.isOptionDisabled(newValue, selectValue)) {\n _this.setValue([].concat(_toConsumableArray(selectValue), [newValue]), 'select-option', newValue);\n\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue)\n }\n });\n } else {\n // announce that option is disabled\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue),\n isDisabled: true\n }\n });\n }\n }\n } else {\n if (!_this.isOptionDisabled(newValue, selectValue)) {\n _this.setValue(newValue, 'select-option');\n\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue)\n }\n });\n } else {\n // announce that option is disabled\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue),\n isDisabled: true\n }\n });\n }\n }\n\n if (blurInputOnSelect) {\n _this.blurInput();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"removeValue\", function (removedValue) {\n var selectValue = _this.state.selectValue;\n\n var candidate = _this.getOptionValue(removedValue);\n\n var newValue = selectValue.filter(function (i) {\n return _this.getOptionValue(i) !== candidate;\n });\n\n _this.onChange(newValue.length ? newValue : null, {\n action: 'remove-value',\n removedValue: removedValue\n });\n\n _this.announceAriaLiveSelection({\n event: 'remove-value',\n context: {\n value: removedValue ? _this.getOptionLabel(removedValue) : ''\n }\n });\n\n _this.focusInput();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"clearValue\", function () {\n var isMulti = _this.props.isMulti;\n\n _this.onChange(isMulti ? [] : null, {\n action: 'clear'\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popValue\", function () {\n var selectValue = _this.state.selectValue;\n var lastSelectedValue = selectValue[selectValue.length - 1];\n var newValue = selectValue.slice(0, selectValue.length - 1);\n\n _this.announceAriaLiveSelection({\n event: 'pop-value',\n context: {\n value: lastSelectedValue ? _this.getOptionLabel(lastSelectedValue) : ''\n }\n });\n\n _this.onChange(newValue.length ? newValue : null, {\n action: 'pop-value',\n removedValue: lastSelectedValue\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptionLabel\", function (data) {\n return _this.props.getOptionLabel(data);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptionValue\", function (data) {\n return _this.props.getOptionValue(data);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getStyles\", function (key, props) {\n var base = defaultStyles[key](props);\n base.boxSizing = 'border-box';\n var custom = _this.props.styles[key];\n return custom ? custom(base, props) : base;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getElementId\", function (element) {\n return \"\".concat(_this.instancePrefix, \"-\").concat(element);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getActiveDescendentId\", function () {\n var menuIsOpen = _this.props.menuIsOpen;\n var _this$state = _this.state,\n menuOptions = _this$state.menuOptions,\n focusedOption = _this$state.focusedOption;\n if (!focusedOption || !menuIsOpen) return undefined;\n var index = menuOptions.focusable.indexOf(focusedOption);\n var option = menuOptions.render[index];\n return option && option.key;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"announceAriaLiveSelection\", function (_ref2) {\n var event = _ref2.event,\n context = _ref2.context;\n\n _this.setState({\n ariaLiveSelection: valueEventAriaMessage(event, context)\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"announceAriaLiveContext\", function (_ref3) {\n var event = _ref3.event,\n context = _ref3.context;\n\n _this.setState({\n ariaLiveContext: instructionsAriaMessage(event, _objectSpread({}, context, {\n label: _this.props['aria-label']\n }))\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuMouseDown\", function (event) {\n if (event.button !== 0) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n _this.focusInput();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuMouseMove\", function (event) {\n _this.blockOptionHover = false;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onControlMouseDown\", function (event) {\n var openMenuOnClick = _this.props.openMenuOnClick;\n\n if (!_this.state.isFocused) {\n if (openMenuOnClick) {\n _this.openAfterFocus = true;\n }\n\n _this.focusInput();\n } else if (!_this.props.menuIsOpen) {\n if (openMenuOnClick) {\n _this.openMenu('first');\n }\n } else {\n //$FlowFixMe\n if (event.target.tagName !== 'INPUT') {\n _this.onMenuClose();\n }\n } //$FlowFixMe\n\n\n if (event.target.tagName !== 'INPUT') {\n event.preventDefault();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDropdownIndicatorMouseDown\", function (event) {\n // ignore mouse events that weren't triggered by the primary button\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n\n if (_this.props.isDisabled) return;\n var _this$props4 = _this.props,\n isMulti = _this$props4.isMulti,\n menuIsOpen = _this$props4.menuIsOpen;\n\n _this.focusInput();\n\n if (menuIsOpen) {\n _this.inputIsHiddenAfterUpdate = !isMulti;\n\n _this.onMenuClose();\n } else {\n _this.openMenu('first');\n }\n\n event.preventDefault();\n event.stopPropagation();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClearIndicatorMouseDown\", function (event) {\n // ignore mouse events that weren't triggered by the primary button\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n\n _this.clearValue();\n\n event.stopPropagation();\n _this.openAfterFocus = false;\n\n if (event.type === 'touchend') {\n _this.focusInput();\n } else {\n setTimeout(function () {\n return _this.focusInput();\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onScroll\", function (event) {\n if (typeof _this.props.closeMenuOnScroll === 'boolean') {\n if (event.target instanceof HTMLElement && isDocumentElement(event.target)) {\n _this.props.onMenuClose();\n }\n } else if (typeof _this.props.closeMenuOnScroll === 'function') {\n if (_this.props.closeMenuOnScroll(event)) {\n _this.props.onMenuClose();\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onCompositionStart\", function () {\n _this.isComposing = true;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onCompositionEnd\", function () {\n _this.isComposing = false;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchStart\", function (_ref4) {\n var touches = _ref4.touches;\n var touch = touches.item(0);\n\n if (!touch) {\n return;\n }\n\n _this.initialTouchX = touch.clientX;\n _this.initialTouchY = touch.clientY;\n _this.userIsDragging = false;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchMove\", function (_ref5) {\n var touches = _ref5.touches;\n var touch = touches.item(0);\n\n if (!touch) {\n return;\n }\n\n var deltaX = Math.abs(touch.clientX - _this.initialTouchX);\n var deltaY = Math.abs(touch.clientY - _this.initialTouchY);\n var moveThreshold = 5;\n _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchEnd\", function (event) {\n if (_this.userIsDragging) return; // close the menu if the user taps outside\n // we're checking on event.target here instead of event.currentTarget, because we want to assert information\n // on events on child elements, not the document (which we've attached this handler to).\n\n if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) {\n _this.blurInput();\n } // reset move vars\n\n\n _this.initialTouchX = 0;\n _this.initialTouchY = 0;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onControlTouchEnd\", function (event) {\n if (_this.userIsDragging) return;\n\n _this.onControlMouseDown(event);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClearIndicatorTouchEnd\", function (event) {\n if (_this.userIsDragging) return;\n\n _this.onClearIndicatorMouseDown(event);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDropdownIndicatorTouchEnd\", function (event) {\n if (_this.userIsDragging) return;\n\n _this.onDropdownIndicatorMouseDown(event);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleInputChange\", function (event) {\n var inputValue = event.currentTarget.value;\n _this.inputIsHiddenAfterUpdate = false;\n\n _this.onInputChange(inputValue, {\n action: 'input-change'\n });\n\n _this.onMenuOpen();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onInputFocus\", function (event) {\n var _this$props5 = _this.props,\n isSearchable = _this$props5.isSearchable,\n isMulti = _this$props5.isMulti;\n\n if (_this.props.onFocus) {\n _this.props.onFocus(event);\n }\n\n _this.inputIsHiddenAfterUpdate = false;\n\n _this.announceAriaLiveContext({\n event: 'input',\n context: {\n isSearchable: isSearchable,\n isMulti: isMulti\n }\n });\n\n _this.setState({\n isFocused: true\n });\n\n if (_this.openAfterFocus || _this.props.openMenuOnFocus) {\n _this.openMenu('first');\n }\n\n _this.openAfterFocus = false;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onInputBlur\", function (event) {\n if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) {\n _this.inputRef.focus();\n\n return;\n }\n\n if (_this.props.onBlur) {\n _this.props.onBlur(event);\n }\n\n _this.onInputChange('', {\n action: 'input-blur'\n });\n\n _this.onMenuClose();\n\n _this.setState({\n focusedValue: null,\n isFocused: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onOptionHover\", function (focusedOption) {\n if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) {\n return;\n }\n\n _this.setState({\n focusedOption: focusedOption\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"shouldHideSelectedOptions\", function () {\n var _this$props6 = _this.props,\n hideSelectedOptions = _this$props6.hideSelectedOptions,\n isMulti = _this$props6.isMulti;\n if (hideSelectedOptions === undefined) return isMulti;\n return hideSelectedOptions;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onKeyDown\", function (event) {\n var _this$props7 = _this.props,\n isMulti = _this$props7.isMulti,\n backspaceRemovesValue = _this$props7.backspaceRemovesValue,\n escapeClearsValue = _this$props7.escapeClearsValue,\n inputValue = _this$props7.inputValue,\n isClearable = _this$props7.isClearable,\n isDisabled = _this$props7.isDisabled,\n menuIsOpen = _this$props7.menuIsOpen,\n onKeyDown = _this$props7.onKeyDown,\n tabSelectsValue = _this$props7.tabSelectsValue,\n openMenuOnFocus = _this$props7.openMenuOnFocus;\n var _this$state2 = _this.state,\n focusedOption = _this$state2.focusedOption,\n focusedValue = _this$state2.focusedValue,\n selectValue = _this$state2.selectValue;\n if (isDisabled) return;\n\n if (typeof onKeyDown === 'function') {\n onKeyDown(event);\n\n if (event.defaultPrevented) {\n return;\n }\n } // Block option hover events when the user has just pressed a key\n\n\n _this.blockOptionHover = true;\n\n switch (event.key) {\n case 'ArrowLeft':\n if (!isMulti || inputValue) return;\n\n _this.focusValue('previous');\n\n break;\n\n case 'ArrowRight':\n if (!isMulti || inputValue) return;\n\n _this.focusValue('next');\n\n break;\n\n case 'Delete':\n case 'Backspace':\n if (inputValue) return;\n\n if (focusedValue) {\n _this.removeValue(focusedValue);\n } else {\n if (!backspaceRemovesValue) return;\n\n if (isMulti) {\n _this.popValue();\n } else if (isClearable) {\n _this.clearValue();\n }\n }\n\n break;\n\n case 'Tab':\n if (_this.isComposing) return;\n\n if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption || // don't capture the event if the menu opens on focus and the focused\n // option is already selected; it breaks the flow of navigation\n openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) {\n return;\n }\n\n _this.selectOption(focusedOption);\n\n break;\n\n case 'Enter':\n if (event.keyCode === 229) {\n // ignore the keydown event from an Input Method Editor(IME)\n // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n break;\n }\n\n if (menuIsOpen) {\n if (!focusedOption) return;\n if (_this.isComposing) return;\n\n _this.selectOption(focusedOption);\n\n break;\n }\n\n return;\n\n case 'Escape':\n if (menuIsOpen) {\n _this.inputIsHiddenAfterUpdate = false;\n\n _this.onInputChange('', {\n action: 'menu-close'\n });\n\n _this.onMenuClose();\n } else if (isClearable && escapeClearsValue) {\n _this.clearValue();\n }\n\n break;\n\n case ' ':\n // space\n if (inputValue) {\n return;\n }\n\n if (!menuIsOpen) {\n _this.openMenu('first');\n\n break;\n }\n\n if (!focusedOption) return;\n\n _this.selectOption(focusedOption);\n\n break;\n\n case 'ArrowUp':\n if (menuIsOpen) {\n _this.focusOption('up');\n } else {\n _this.openMenu('last');\n }\n\n break;\n\n case 'ArrowDown':\n if (menuIsOpen) {\n _this.focusOption('down');\n } else {\n _this.openMenu('first');\n }\n\n break;\n\n case 'PageUp':\n if (!menuIsOpen) return;\n\n _this.focusOption('pageup');\n\n break;\n\n case 'PageDown':\n if (!menuIsOpen) return;\n\n _this.focusOption('pagedown');\n\n break;\n\n case 'Home':\n if (!menuIsOpen) return;\n\n _this.focusOption('first');\n\n break;\n\n case 'End':\n if (!menuIsOpen) return;\n\n _this.focusOption('last');\n\n break;\n\n default:\n return;\n }\n\n event.preventDefault();\n });\n\n var value = _props.value;\n _this.cacheComponents = memoizeOne(_this.cacheComponents, exportedEqual).bind(_assertThisInitialized(_assertThisInitialized(_this)));\n\n _this.cacheComponents(_props.components);\n\n _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n\n var _selectValue = cleanValue(value);\n\n var _menuOptions = _props.menuIsOpen ? _this.buildMenuOptions(_props, _selectValue) : {\n render: [],\n focusable: []\n };\n\n _this.state.menuOptions = _menuOptions;\n _this.state.selectValue = _selectValue;\n return _this;\n }\n\n _createClass(Select, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.startListeningComposition();\n this.startListeningToTouch();\n\n if (this.props.closeMenuOnScroll && document && document.addEventListener) {\n // Listen to all scroll events, and filter them out inside of 'onScroll'\n document.addEventListener('scroll', this.onScroll, true);\n }\n\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n }, {\n key: \"UNSAFE_componentWillReceiveProps\",\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n var _this$props8 = this.props,\n options = _this$props8.options,\n value = _this$props8.value,\n menuIsOpen = _this$props8.menuIsOpen,\n inputValue = _this$props8.inputValue; // re-cache custom components\n\n this.cacheComponents(nextProps.components); // rebuild the menu options\n\n if (nextProps.value !== value || nextProps.options !== options || nextProps.menuIsOpen !== menuIsOpen || nextProps.inputValue !== inputValue) {\n var selectValue = cleanValue(nextProps.value);\n var menuOptions = nextProps.menuIsOpen ? this.buildMenuOptions(nextProps, selectValue) : {\n render: [],\n focusable: []\n };\n var focusedValue = this.getNextFocusedValue(selectValue);\n var focusedOption = this.getNextFocusedOption(menuOptions.focusable);\n this.setState({\n menuOptions: menuOptions,\n selectValue: selectValue,\n focusedOption: focusedOption,\n focusedValue: focusedValue\n });\n } // some updates should toggle the state of the input visibility\n\n\n if (this.inputIsHiddenAfterUpdate != null) {\n this.setState({\n inputIsHidden: this.inputIsHiddenAfterUpdate\n });\n delete this.inputIsHiddenAfterUpdate;\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props9 = this.props,\n isDisabled = _this$props9.isDisabled,\n menuIsOpen = _this$props9.menuIsOpen;\n var isFocused = this.state.isFocused;\n\n if ( // ensure focus is restored correctly when the control becomes enabled\n isFocused && !isDisabled && prevProps.isDisabled || // ensure focus is on the Input when the menu opens\n isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n this.focusInput();\n } // scroll the focused option into view if necessary\n\n\n if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) {\n scrollIntoView(this.menuListRef, this.focusedOptionRef);\n }\n\n this.scrollToFocusedOptionOnUpdate = false;\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.stopListeningComposition();\n this.stopListeningToTouch();\n document.removeEventListener('scroll', this.onScroll, true);\n }\n }, {\n key: \"onMenuOpen\",\n // ==============================\n // Consumer Handlers\n // ==============================\n value: function onMenuOpen() {\n this.props.onMenuOpen();\n }\n }, {\n key: \"onMenuClose\",\n value: function onMenuClose() {\n var _this$props10 = this.props,\n isSearchable = _this$props10.isSearchable,\n isMulti = _this$props10.isMulti;\n this.announceAriaLiveContext({\n event: 'input',\n context: {\n isSearchable: isSearchable,\n isMulti: isMulti\n }\n });\n this.onInputChange('', {\n action: 'menu-close'\n });\n this.props.onMenuClose();\n }\n }, {\n key: \"onInputChange\",\n value: function onInputChange(newValue, actionMeta) {\n this.props.onInputChange(newValue, actionMeta);\n } // ==============================\n // Methods\n // ==============================\n\n }, {\n key: \"focusInput\",\n value: function focusInput() {\n if (!this.inputRef) return;\n this.inputRef.focus();\n }\n }, {\n key: \"blurInput\",\n value: function blurInput() {\n if (!this.inputRef) return;\n this.inputRef.blur();\n } // aliased for consumers\n\n }, {\n key: \"openMenu\",\n value: function openMenu(focusOption) {\n var _this$state3 = this.state,\n menuOptions = _this$state3.menuOptions,\n selectValue = _this$state3.selectValue,\n isFocused = _this$state3.isFocused;\n var isMulti = this.props.isMulti;\n var openAtIndex = focusOption === 'first' ? 0 : menuOptions.focusable.length - 1;\n\n if (!isMulti) {\n var selectedIndex = menuOptions.focusable.indexOf(selectValue[0]);\n\n if (selectedIndex > -1) {\n openAtIndex = selectedIndex;\n }\n } // only scroll if the menu isn't already open\n\n\n this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef);\n this.inputIsHiddenAfterUpdate = false;\n this.onMenuOpen();\n this.setState({\n focusedValue: null,\n focusedOption: menuOptions.focusable[openAtIndex]\n });\n this.announceAriaLiveContext({\n event: 'menu'\n });\n }\n }, {\n key: \"focusValue\",\n value: function focusValue(direction) {\n var _this$props11 = this.props,\n isMulti = _this$props11.isMulti,\n isSearchable = _this$props11.isSearchable;\n var _this$state4 = this.state,\n selectValue = _this$state4.selectValue,\n focusedValue = _this$state4.focusedValue; // Only multiselects support value focusing\n\n if (!isMulti) return;\n this.setState({\n focusedOption: null\n });\n var focusedIndex = selectValue.indexOf(focusedValue);\n\n if (!focusedValue) {\n focusedIndex = -1;\n this.announceAriaLiveContext({\n event: 'value'\n });\n }\n\n var lastIndex = selectValue.length - 1;\n var nextFocus = -1;\n if (!selectValue.length) return;\n\n switch (direction) {\n case 'previous':\n if (focusedIndex === 0) {\n // don't cycle from the start to the end\n nextFocus = 0;\n } else if (focusedIndex === -1) {\n // if nothing is focused, focus the last value first\n nextFocus = lastIndex;\n } else {\n nextFocus = focusedIndex - 1;\n }\n\n break;\n\n case 'next':\n if (focusedIndex > -1 && focusedIndex < lastIndex) {\n nextFocus = focusedIndex + 1;\n }\n\n break;\n }\n\n if (nextFocus === -1) {\n this.announceAriaLiveContext({\n event: 'input',\n context: {\n isSearchable: isSearchable,\n isMulti: isMulti\n }\n });\n }\n\n this.setState({\n inputIsHidden: nextFocus !== -1,\n focusedValue: selectValue[nextFocus]\n });\n }\n }, {\n key: \"focusOption\",\n value: function focusOption() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first';\n var pageSize = this.props.pageSize;\n var _this$state5 = this.state,\n focusedOption = _this$state5.focusedOption,\n menuOptions = _this$state5.menuOptions;\n var options = menuOptions.focusable;\n if (!options.length) return;\n var nextFocus = 0; // handles 'first'\n\n var focusedIndex = options.indexOf(focusedOption);\n\n if (!focusedOption) {\n focusedIndex = -1;\n this.announceAriaLiveContext({\n event: 'menu'\n });\n }\n\n if (direction === 'up') {\n nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1;\n } else if (direction === 'down') {\n nextFocus = (focusedIndex + 1) % options.length;\n } else if (direction === 'pageup') {\n nextFocus = focusedIndex - pageSize;\n if (nextFocus < 0) nextFocus = 0;\n } else if (direction === 'pagedown') {\n nextFocus = focusedIndex + pageSize;\n if (nextFocus > options.length - 1) nextFocus = options.length - 1;\n } else if (direction === 'last') {\n nextFocus = options.length - 1;\n }\n\n this.scrollToFocusedOptionOnUpdate = true;\n this.setState({\n focusedOption: options[nextFocus],\n focusedValue: null\n });\n this.announceAriaLiveContext({\n event: 'menu',\n context: {\n isDisabled: isOptionDisabled(options[nextFocus])\n }\n });\n }\n }, {\n key: \"getTheme\",\n // ==============================\n // Getters\n // ==============================\n value: function getTheme() {\n // Use the default theme if there are no customizations.\n if (!this.props.theme) {\n return defaultTheme;\n } // If the theme prop is a function, assume the function\n // knows how to merge the passed-in default theme with\n // its own modifications.\n\n\n if (typeof this.props.theme === 'function') {\n return this.props.theme(defaultTheme);\n } // Otherwise, if a plain theme object was passed in,\n // overlay it with the default theme.\n\n\n return _objectSpread({}, defaultTheme, this.props.theme);\n }\n }, {\n key: \"getCommonProps\",\n value: function getCommonProps() {\n var clearValue = this.clearValue,\n getStyles = this.getStyles,\n setValue = this.setValue,\n selectOption = this.selectOption,\n props = this.props;\n var classNamePrefix = props.classNamePrefix,\n isMulti = props.isMulti,\n isRtl = props.isRtl,\n options = props.options;\n var selectValue = this.state.selectValue;\n var hasValue = this.hasValue();\n\n var getValue = function getValue() {\n return selectValue;\n };\n\n var cx = classNames.bind(null, classNamePrefix);\n return {\n cx: cx,\n clearValue: clearValue,\n getStyles: getStyles,\n getValue: getValue,\n hasValue: hasValue,\n isMulti: isMulti,\n isRtl: isRtl,\n options: options,\n selectOption: selectOption,\n setValue: setValue,\n selectProps: props,\n theme: this.getTheme()\n };\n }\n }, {\n key: \"getNextFocusedValue\",\n value: function getNextFocusedValue(nextSelectValue) {\n if (this.clearFocusValueOnUpdate) {\n this.clearFocusValueOnUpdate = false;\n return null;\n }\n\n var _this$state6 = this.state,\n focusedValue = _this$state6.focusedValue,\n lastSelectValue = _this$state6.selectValue;\n var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n\n if (lastFocusedIndex > -1) {\n var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n\n if (nextFocusedIndex > -1) {\n // the focused value is still in the selectValue, return it\n return focusedValue;\n } else if (lastFocusedIndex < nextSelectValue.length) {\n // the focusedValue is not present in the next selectValue array by\n // reference, so return the new value at the same index\n return nextSelectValue[lastFocusedIndex];\n }\n }\n\n return null;\n }\n }, {\n key: \"getNextFocusedOption\",\n value: function getNextFocusedOption(options) {\n var lastFocusedOption = this.state.focusedOption;\n return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n }\n }, {\n key: \"hasValue\",\n value: function hasValue() {\n var selectValue = this.state.selectValue;\n return selectValue.length > 0;\n }\n }, {\n key: \"hasOptions\",\n value: function hasOptions() {\n return !!this.state.menuOptions.render.length;\n }\n }, {\n key: \"countOptions\",\n value: function countOptions() {\n return this.state.menuOptions.focusable.length;\n }\n }, {\n key: \"isClearable\",\n value: function isClearable() {\n var _this$props12 = this.props,\n isClearable = _this$props12.isClearable,\n isMulti = _this$props12.isMulti; // single select, by default, IS NOT clearable\n // multi select, by default, IS clearable\n\n if (isClearable === undefined) return isMulti;\n return isClearable;\n }\n }, {\n key: \"isOptionDisabled\",\n value: function isOptionDisabled(option, selectValue) {\n return typeof this.props.isOptionDisabled === 'function' ? this.props.isOptionDisabled(option, selectValue) : false;\n }\n }, {\n key: \"isOptionSelected\",\n value: function isOptionSelected(option, selectValue) {\n var _this2 = this;\n\n if (selectValue.indexOf(option) > -1) return true;\n\n if (typeof this.props.isOptionSelected === 'function') {\n return this.props.isOptionSelected(option, selectValue);\n }\n\n var candidate = this.getOptionValue(option);\n return selectValue.some(function (i) {\n return _this2.getOptionValue(i) === candidate;\n });\n }\n }, {\n key: \"filterOption\",\n value: function filterOption(option, inputValue) {\n return this.props.filterOption ? this.props.filterOption(option, inputValue) : true;\n }\n }, {\n key: \"formatOptionLabel\",\n value: function formatOptionLabel(data, context) {\n if (typeof this.props.formatOptionLabel === 'function') {\n var inputValue = this.props.inputValue;\n var selectValue = this.state.selectValue;\n return this.props.formatOptionLabel(data, {\n context: context,\n inputValue: inputValue,\n selectValue: selectValue\n });\n } else {\n return this.getOptionLabel(data);\n }\n }\n }, {\n key: \"formatGroupLabel\",\n value: function formatGroupLabel(data) {\n return this.props.formatGroupLabel(data);\n } // ==============================\n // Mouse Handlers\n // ==============================\n\n }, {\n key: \"startListeningComposition\",\n // ==============================\n // Composition Handlers\n // ==============================\n value: function startListeningComposition() {\n if (document && document.addEventListener) {\n document.addEventListener('compositionstart', this.onCompositionStart, false);\n document.addEventListener('compositionend', this.onCompositionEnd, false);\n }\n }\n }, {\n key: \"stopListeningComposition\",\n value: function stopListeningComposition() {\n if (document && document.removeEventListener) {\n document.removeEventListener('compositionstart', this.onCompositionStart);\n document.removeEventListener('compositionend', this.onCompositionEnd);\n }\n }\n }, {\n key: \"startListeningToTouch\",\n // ==============================\n // Touch Handlers\n // ==============================\n value: function startListeningToTouch() {\n if (document && document.addEventListener) {\n document.addEventListener('touchstart', this.onTouchStart, false);\n document.addEventListener('touchmove', this.onTouchMove, false);\n document.addEventListener('touchend', this.onTouchEnd, false);\n }\n }\n }, {\n key: \"stopListeningToTouch\",\n value: function stopListeningToTouch() {\n if (document && document.removeEventListener) {\n document.removeEventListener('touchstart', this.onTouchStart);\n document.removeEventListener('touchmove', this.onTouchMove);\n document.removeEventListener('touchend', this.onTouchEnd);\n }\n }\n }, {\n key: \"buildMenuOptions\",\n // ==============================\n // Menu Options\n // ==============================\n value: function buildMenuOptions(props, selectValue) {\n var _this3 = this;\n\n var _props$inputValue = props.inputValue,\n inputValue = _props$inputValue === void 0 ? '' : _props$inputValue,\n options = props.options;\n\n var toOption = function toOption(option, id) {\n var isDisabled = _this3.isOptionDisabled(option, selectValue);\n\n var isSelected = _this3.isOptionSelected(option, selectValue);\n\n var label = _this3.getOptionLabel(option);\n\n var value = _this3.getOptionValue(option);\n\n if (_this3.shouldHideSelectedOptions() && isSelected || !_this3.filterOption({\n label: label,\n value: value,\n data: option\n }, inputValue)) {\n return;\n }\n\n var onHover = isDisabled ? undefined : function () {\n return _this3.onOptionHover(option);\n };\n var onSelect = isDisabled ? undefined : function () {\n return _this3.selectOption(option);\n };\n var optionId = \"\".concat(_this3.getElementId('option'), \"-\").concat(id);\n return {\n innerProps: {\n id: optionId,\n onClick: onSelect,\n onMouseMove: onHover,\n onMouseOver: onHover,\n tabIndex: -1\n },\n data: option,\n isDisabled: isDisabled,\n isSelected: isSelected,\n key: optionId,\n label: label,\n type: 'option',\n value: value\n };\n };\n\n return options.reduce(function (acc, item, itemIndex) {\n if (item.options) {\n // TODO needs a tidier implementation\n if (!_this3.hasGroups) _this3.hasGroups = true;\n var items = item.options;\n var children = items.map(function (child, i) {\n var option = toOption(child, \"\".concat(itemIndex, \"-\").concat(i));\n if (option) acc.focusable.push(child);\n return option;\n }).filter(Boolean);\n\n if (children.length) {\n var groupId = \"\".concat(_this3.getElementId('group'), \"-\").concat(itemIndex);\n acc.render.push({\n type: 'group',\n key: groupId,\n data: item,\n options: children\n });\n }\n } else {\n var option = toOption(item, \"\".concat(itemIndex));\n\n if (option) {\n acc.render.push(option);\n acc.focusable.push(item);\n }\n }\n\n return acc;\n }, {\n render: [],\n focusable: []\n });\n } // ==============================\n // Renderers\n // ==============================\n\n }, {\n key: \"constructAriaLiveMessage\",\n value: function constructAriaLiveMessage() {\n var _this$state7 = this.state,\n ariaLiveContext = _this$state7.ariaLiveContext,\n selectValue = _this$state7.selectValue,\n focusedValue = _this$state7.focusedValue,\n focusedOption = _this$state7.focusedOption;\n var _this$props13 = this.props,\n options = _this$props13.options,\n menuIsOpen = _this$props13.menuIsOpen,\n inputValue = _this$props13.inputValue,\n screenReaderStatus = _this$props13.screenReaderStatus; // An aria live message representing the currently focused value in the select.\n\n var focusedValueMsg = focusedValue ? valueFocusAriaMessage({\n focusedValue: focusedValue,\n getOptionLabel: this.getOptionLabel,\n selectValue: selectValue\n }) : ''; // An aria live message representing the currently focused option in the select.\n\n var focusedOptionMsg = focusedOption && menuIsOpen ? optionFocusAriaMessage({\n focusedOption: focusedOption,\n getOptionLabel: this.getOptionLabel,\n options: options\n }) : ''; // An aria live message representing the set of focusable results and current searchterm/inputvalue.\n\n var resultsMsg = resultsAriaMessage({\n inputValue: inputValue,\n screenReaderMessage: screenReaderStatus({\n count: this.countOptions()\n })\n });\n return \"\".concat(focusedValueMsg, \" \").concat(focusedOptionMsg, \" \").concat(resultsMsg, \" \").concat(ariaLiveContext);\n }\n }, {\n key: \"renderInput\",\n value: function renderInput() {\n var _this$props14 = this.props,\n isDisabled = _this$props14.isDisabled,\n isSearchable = _this$props14.isSearchable,\n inputId = _this$props14.inputId,\n inputValue = _this$props14.inputValue,\n tabIndex = _this$props14.tabIndex;\n var Input = this.components.Input;\n var inputIsHidden = this.state.inputIsHidden;\n var id = inputId || this.getElementId('input');\n\n if (!isSearchable) {\n // use a dummy input to maintain focus/blur functionality\n return React.createElement(DummyInput, {\n id: id,\n innerRef: this.getInputRef,\n onBlur: this.onInputBlur,\n onChange: noop,\n onFocus: this.onInputFocus,\n readOnly: true,\n disabled: isDisabled,\n tabIndex: tabIndex,\n value: \"\"\n });\n } // aria attributes makes the JSX \"noisy\", separated for clarity\n\n\n var ariaAttributes = {\n 'aria-autocomplete': 'list',\n 'aria-label': this.props['aria-label'],\n 'aria-labelledby': this.props['aria-labelledby']\n };\n var _this$commonProps = this.commonProps,\n cx = _this$commonProps.cx,\n theme = _this$commonProps.theme,\n selectProps = _this$commonProps.selectProps;\n return React.createElement(Input, _extends({\n autoCapitalize: \"none\",\n autoComplete: \"off\",\n autoCorrect: \"off\",\n cx: cx,\n getStyles: this.getStyles,\n id: id,\n innerRef: this.getInputRef,\n isDisabled: isDisabled,\n isHidden: inputIsHidden,\n onBlur: this.onInputBlur,\n onChange: this.handleInputChange,\n onFocus: this.onInputFocus,\n selectProps: selectProps,\n spellCheck: \"false\",\n tabIndex: tabIndex,\n theme: theme,\n type: \"text\",\n value: inputValue\n }, ariaAttributes));\n }\n }, {\n key: \"renderPlaceholderOrValue\",\n value: function renderPlaceholderOrValue() {\n var _this4 = this;\n\n var _this$components = this.components,\n MultiValue = _this$components.MultiValue,\n MultiValueContainer = _this$components.MultiValueContainer,\n MultiValueLabel = _this$components.MultiValueLabel,\n MultiValueRemove = _this$components.MultiValueRemove,\n SingleValue = _this$components.SingleValue,\n Placeholder = _this$components.Placeholder;\n var commonProps = this.commonProps;\n var _this$props15 = this.props,\n controlShouldRenderValue = _this$props15.controlShouldRenderValue,\n isDisabled = _this$props15.isDisabled,\n isMulti = _this$props15.isMulti,\n inputValue = _this$props15.inputValue,\n placeholder = _this$props15.placeholder;\n var _this$state8 = this.state,\n selectValue = _this$state8.selectValue,\n focusedValue = _this$state8.focusedValue,\n isFocused = _this$state8.isFocused;\n\n if (!this.hasValue() || !controlShouldRenderValue) {\n return inputValue ? null : React.createElement(Placeholder, _extends({}, commonProps, {\n key: \"placeholder\",\n isDisabled: isDisabled,\n isFocused: isFocused\n }), placeholder);\n }\n\n if (isMulti) {\n var selectValues = selectValue.map(function (opt, index) {\n var isOptionFocused = opt === focusedValue;\n return React.createElement(MultiValue, _extends({}, commonProps, {\n components: {\n Container: MultiValueContainer,\n Label: MultiValueLabel,\n Remove: MultiValueRemove\n },\n isFocused: isOptionFocused,\n isDisabled: isDisabled,\n key: _this4.getOptionValue(opt),\n index: index,\n removeProps: {\n onClick: function onClick() {\n return _this4.removeValue(opt);\n },\n onTouchEnd: function onTouchEnd() {\n return _this4.removeValue(opt);\n },\n onMouseDown: function onMouseDown(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n data: opt\n }), _this4.formatOptionLabel(opt, 'value'));\n });\n return selectValues;\n }\n\n if (inputValue) {\n return null;\n }\n\n var singleValue = selectValue[0];\n return React.createElement(SingleValue, _extends({}, commonProps, {\n data: singleValue,\n isDisabled: isDisabled\n }), this.formatOptionLabel(singleValue, 'value'));\n }\n }, {\n key: \"renderClearIndicator\",\n value: function renderClearIndicator() {\n var ClearIndicator = this.components.ClearIndicator;\n var commonProps = this.commonProps;\n var _this$props16 = this.props,\n isDisabled = _this$props16.isDisabled,\n isLoading = _this$props16.isLoading;\n var isFocused = this.state.isFocused;\n\n if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) {\n return null;\n }\n\n var innerProps = {\n onMouseDown: this.onClearIndicatorMouseDown,\n onTouchEnd: this.onClearIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n return React.createElement(ClearIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderLoadingIndicator\",\n value: function renderLoadingIndicator() {\n var LoadingIndicator = this.components.LoadingIndicator;\n var commonProps = this.commonProps;\n var _this$props17 = this.props,\n isDisabled = _this$props17.isDisabled,\n isLoading = _this$props17.isLoading;\n var isFocused = this.state.isFocused;\n if (!LoadingIndicator || !isLoading) return null;\n var innerProps = {\n 'aria-hidden': 'true'\n };\n return React.createElement(LoadingIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderIndicatorSeparator\",\n value: function renderIndicatorSeparator() {\n var _this$components2 = this.components,\n DropdownIndicator = _this$components2.DropdownIndicator,\n IndicatorSeparator = _this$components2.IndicatorSeparator; // separator doesn't make sense without the dropdown indicator\n\n if (!DropdownIndicator || !IndicatorSeparator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n return React.createElement(IndicatorSeparator, _extends({}, commonProps, {\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderDropdownIndicator\",\n value: function renderDropdownIndicator() {\n var DropdownIndicator = this.components.DropdownIndicator;\n if (!DropdownIndicator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n var innerProps = {\n onMouseDown: this.onDropdownIndicatorMouseDown,\n onTouchEnd: this.onDropdownIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n return React.createElement(DropdownIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderMenu\",\n value: function renderMenu() {\n var _this5 = this;\n\n var _this$components3 = this.components,\n Group = _this$components3.Group,\n GroupHeading = _this$components3.GroupHeading,\n Menu = _this$components3.Menu,\n MenuList = _this$components3.MenuList,\n MenuPortal = _this$components3.MenuPortal,\n LoadingMessage = _this$components3.LoadingMessage,\n NoOptionsMessage = _this$components3.NoOptionsMessage,\n Option = _this$components3.Option;\n var commonProps = this.commonProps;\n var _this$state9 = this.state,\n focusedOption = _this$state9.focusedOption,\n menuOptions = _this$state9.menuOptions;\n var _this$props18 = this.props,\n captureMenuScroll = _this$props18.captureMenuScroll,\n inputValue = _this$props18.inputValue,\n isLoading = _this$props18.isLoading,\n loadingMessage = _this$props18.loadingMessage,\n minMenuHeight = _this$props18.minMenuHeight,\n maxMenuHeight = _this$props18.maxMenuHeight,\n menuIsOpen = _this$props18.menuIsOpen,\n menuPlacement = _this$props18.menuPlacement,\n menuPosition = _this$props18.menuPosition,\n menuPortalTarget = _this$props18.menuPortalTarget,\n menuShouldBlockScroll = _this$props18.menuShouldBlockScroll,\n menuShouldScrollIntoView = _this$props18.menuShouldScrollIntoView,\n noOptionsMessage = _this$props18.noOptionsMessage,\n onMenuScrollToTop = _this$props18.onMenuScrollToTop,\n onMenuScrollToBottom = _this$props18.onMenuScrollToBottom;\n if (!menuIsOpen) return null; // TODO: Internal Option Type here\n\n var render = function render(props) {\n // for performance, the menu options in state aren't changed when the\n // focused option changes so we calculate additional props based on that\n var isFocused = focusedOption === props.data;\n props.innerRef = isFocused ? _this5.getFocusedOptionRef : undefined;\n return React.createElement(Option, _extends({}, commonProps, props, {\n isFocused: isFocused\n }), _this5.formatOptionLabel(props.data, 'menu'));\n };\n\n var menuUI;\n\n if (this.hasOptions()) {\n menuUI = menuOptions.render.map(function (item) {\n if (item.type === 'group') {\n var type = item.type,\n group = _objectWithoutProperties(item, [\"type\"]);\n\n var headingId = \"\".concat(item.key, \"-heading\");\n return React.createElement(Group, _extends({}, commonProps, group, {\n Heading: GroupHeading,\n headingProps: {\n id: headingId\n },\n label: _this5.formatGroupLabel(item.data)\n }), item.options.map(function (option) {\n return render(option);\n }));\n } else if (item.type === 'option') {\n return render(item);\n }\n });\n } else if (isLoading) {\n var message = loadingMessage({\n inputValue: inputValue\n });\n if (message === null) return null;\n menuUI = React.createElement(LoadingMessage, commonProps, message);\n } else {\n var _message = noOptionsMessage({\n inputValue: inputValue\n });\n\n if (_message === null) return null;\n menuUI = React.createElement(NoOptionsMessage, commonProps, _message);\n }\n\n var menuPlacementProps = {\n minMenuHeight: minMenuHeight,\n maxMenuHeight: maxMenuHeight,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition,\n menuShouldScrollIntoView: menuShouldScrollIntoView\n };\n var menuElement = React.createElement(MenuPlacer, _extends({}, commonProps, menuPlacementProps), function (_ref6) {\n var ref = _ref6.ref,\n _ref6$placerProps = _ref6.placerProps,\n placement = _ref6$placerProps.placement,\n maxHeight = _ref6$placerProps.maxHeight;\n return React.createElement(Menu, _extends({}, commonProps, menuPlacementProps, {\n innerRef: ref,\n innerProps: {\n onMouseDown: _this5.onMenuMouseDown,\n onMouseMove: _this5.onMenuMouseMove\n },\n isLoading: isLoading,\n placement: placement\n }), React.createElement(ScrollCaptorSwitch, {\n isEnabled: captureMenuScroll,\n onTopArrive: onMenuScrollToTop,\n onBottomArrive: onMenuScrollToBottom\n }, React.createElement(ScrollBlock, {\n isEnabled: menuShouldBlockScroll\n }, React.createElement(MenuList, _extends({}, commonProps, {\n innerRef: _this5.getMenuListRef,\n isLoading: isLoading,\n maxHeight: maxHeight\n }), menuUI))));\n }); // positioning behaviour is almost identical for portalled and fixed,\n // so we use the same component. the actual portalling logic is forked\n // within the component based on `menuPosition`\n\n return menuPortalTarget || menuPosition === 'fixed' ? React.createElement(MenuPortal, _extends({}, commonProps, {\n appendTo: menuPortalTarget,\n controlElement: this.controlRef,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition\n }), menuElement) : menuElement;\n }\n }, {\n key: \"renderFormField\",\n value: function renderFormField() {\n var _this6 = this;\n\n var _this$props19 = this.props,\n delimiter = _this$props19.delimiter,\n isDisabled = _this$props19.isDisabled,\n isMulti = _this$props19.isMulti,\n name = _this$props19.name;\n var selectValue = this.state.selectValue;\n if (!name || isDisabled) return;\n\n if (isMulti) {\n if (delimiter) {\n var value = selectValue.map(function (opt) {\n return _this6.getOptionValue(opt);\n }).join(delimiter);\n return React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: value\n });\n } else {\n var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n return React.createElement(\"input\", {\n key: \"i-\".concat(i),\n name: name,\n type: \"hidden\",\n value: _this6.getOptionValue(opt)\n });\n }) : React.createElement(\"input\", {\n name: name,\n type: \"hidden\"\n });\n return React.createElement(\"div\", null, input);\n }\n } else {\n var _value = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n\n return React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: _value\n });\n }\n }\n }, {\n key: \"renderLiveRegion\",\n value: function renderLiveRegion() {\n if (!this.state.isFocused) return null;\n return React.createElement(A11yText, {\n \"aria-live\": \"polite\"\n }, React.createElement(\"p\", {\n id: \"aria-selection-event\"\n }, \"\\xA0\", this.state.ariaLiveSelection), React.createElement(\"p\", {\n id: \"aria-context\"\n }, \"\\xA0\", this.constructAriaLiveMessage()));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$components4 = this.components,\n Control = _this$components4.Control,\n IndicatorsContainer = _this$components4.IndicatorsContainer,\n SelectContainer = _this$components4.SelectContainer,\n ValueContainer = _this$components4.ValueContainer;\n var _this$props20 = this.props,\n className = _this$props20.className,\n id = _this$props20.id,\n isDisabled = _this$props20.isDisabled,\n menuIsOpen = _this$props20.menuIsOpen;\n var isFocused = this.state.isFocused;\n var commonProps = this.commonProps = this.getCommonProps();\n return React.createElement(SelectContainer, _extends({}, commonProps, {\n className: className,\n innerProps: {\n id: id,\n onKeyDown: this.onKeyDown\n },\n isDisabled: isDisabled,\n isFocused: isFocused\n }), this.renderLiveRegion(), React.createElement(Control, _extends({}, commonProps, {\n innerRef: this.getControlRef,\n innerProps: {\n onMouseDown: this.onControlMouseDown,\n onTouchEnd: this.onControlTouchEnd\n },\n isDisabled: isDisabled,\n isFocused: isFocused,\n menuIsOpen: menuIsOpen\n }), React.createElement(ValueContainer, _extends({}, commonProps, {\n isDisabled: isDisabled\n }), this.renderPlaceholderOrValue(), this.renderInput()), React.createElement(IndicatorsContainer, _extends({}, commonProps, {\n isDisabled: isDisabled\n }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());\n }\n }]);\n\n return Select;\n}(Component);\n\n_defineProperty(Select, \"defaultProps\", defaultProps);\n\nexport { Select as S, defaultTheme as a, createFilter as c, defaultProps as d, mergeStyles as m };\n","import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { Component } from 'react';\n\nvar defaultProps = {\n defaultInputValue: '',\n defaultMenuIsOpen: false,\n defaultValue: null\n};\n\nvar manageState = function manageState(SelectComponent) {\n var _class, _temp;\n\n return _temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inherits(StateManager, _Component);\n\n function StateManager() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, StateManager);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(StateManager)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"select\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n inputValue: _this.props.inputValue !== undefined ? _this.props.inputValue : _this.props.defaultInputValue,\n menuIsOpen: _this.props.menuIsOpen !== undefined ? _this.props.menuIsOpen : _this.props.defaultMenuIsOpen,\n value: _this.props.value !== undefined ? _this.props.value : _this.props.defaultValue\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (value, actionMeta) {\n _this.callProp('onChange', value, actionMeta);\n\n _this.setState({\n value: value\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onInputChange\", function (value, actionMeta) {\n // TODO: for backwards compatibility, we allow the prop to return a new\n // value, but now inputValue is a controllable prop we probably shouldn't\n var newValue = _this.callProp('onInputChange', value, actionMeta);\n\n _this.setState({\n inputValue: newValue !== undefined ? newValue : value\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuOpen\", function () {\n _this.callProp('onMenuOpen');\n\n _this.setState({\n menuIsOpen: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuClose\", function () {\n _this.callProp('onMenuClose');\n\n _this.setState({\n menuIsOpen: false\n });\n });\n\n return _this;\n }\n\n _createClass(StateManager, [{\n key: \"focus\",\n value: function focus() {\n this.select.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.select.blur();\n } // FIXME: untyped flow code, return any\n\n }, {\n key: \"getProp\",\n value: function getProp(key) {\n return this.props[key] !== undefined ? this.props[key] : this.state[key];\n } // FIXME: untyped flow code, return any\n\n }, {\n key: \"callProp\",\n value: function callProp(name) {\n if (typeof this.props[name] === 'function') {\n var _this$props;\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return (_this$props = this.props)[name].apply(_this$props, args);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n defaultInputValue = _this$props2.defaultInputValue,\n defaultMenuIsOpen = _this$props2.defaultMenuIsOpen,\n defaultValue = _this$props2.defaultValue,\n props = _objectWithoutProperties(_this$props2, [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\"]);\n\n return React.createElement(SelectComponent, _extends({}, props, {\n ref: function ref(_ref) {\n _this2.select = _ref;\n },\n inputValue: this.getProp('inputValue'),\n menuIsOpen: this.getProp('menuIsOpen'),\n onChange: this.onChange,\n onInputChange: this.onInputChange,\n onMenuClose: this.onMenuClose,\n onMenuOpen: this.onMenuOpen,\n value: this.getProp('value')\n }));\n }\n }]);\n\n return StateManager;\n }(Component), _defineProperty(_class, \"defaultProps\", defaultProps), _temp;\n};\n\nexport { manageState as m };\n","import '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport '@babel/runtime/helpers/esm/extends';\nimport '@babel/runtime/helpers/esm/toConsumableArray';\nimport '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { Component } from 'react';\nimport memoizeOne from 'memoize-one';\nimport { CacheProvider } from '@emotion/core';\nimport 'react-dom';\nimport 'prop-types';\nimport '@babel/runtime/helpers/esm/typeof';\nimport './chunk-39d3fda8.browser.esm.js';\nexport { y as components } from './chunk-80640036.browser.esm.js';\nimport { S as Select } from './base/dist/react-select-cac0a5ae.browser.esm.js';\nexport { c as createFilter, a as defaultTheme, m as mergeStyles } from './base/dist/react-select-cac0a5ae.browser.esm.js';\nimport '@emotion/css';\nimport '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport 'react-input-autosize';\nimport { m as manageState } from './chunk-b36baf1a.browser.esm.js';\nimport createCache from '@emotion/cache';\n\nvar NonceProvider =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(NonceProvider, _Component);\n\n function NonceProvider(props) {\n var _this;\n\n _classCallCheck(this, NonceProvider);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NonceProvider).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"createEmotionCache\", function (nonce) {\n return createCache({\n nonce: nonce\n });\n });\n\n _this.createEmotionCache = memoizeOne(_this.createEmotionCache);\n return _this;\n }\n\n _createClass(NonceProvider, [{\n key: \"render\",\n value: function render() {\n var emotionCache = this.createEmotionCache(this.props.nonce);\n return React.createElement(CacheProvider, {\n value: emotionCache\n }, this.props.children);\n }\n }]);\n\n return NonceProvider;\n}(Component);\n\nvar index = manageState(Select);\n\nexport default index;\nexport { NonceProvider };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"../widgets/component\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { GridOptionsWrapper } from \"../gridOptionsWrapper\";\nimport { Events } from \"../events\";\nimport { HeaderWrapperComp } from \"./header/headerWrapperComp\";\nimport { HeaderGroupWrapperComp } from \"./headerGroup/headerGroupWrapperComp\";\nimport { Constants } from \"../constants\";\nimport { _ } from \"../utils\";\nimport { FloatingFilterWrapper } from \"../filter/floating/floatingFilterWrapper\";\nexport var HeaderRowType;\n(function (HeaderRowType) {\n HeaderRowType[HeaderRowType[\"COLUMN_GROUP\"] = 0] = \"COLUMN_GROUP\";\n HeaderRowType[HeaderRowType[\"COLUMN\"] = 1] = \"COLUMN\";\n HeaderRowType[HeaderRowType[\"FLOATING_FILTER\"] = 2] = \"FLOATING_FILTER\";\n})(HeaderRowType || (HeaderRowType = {}));\nvar HeaderRowComp = /** @class */ (function (_super) {\n __extends(HeaderRowComp, _super);\n function HeaderRowComp(dept, type, pinned, dropTarget) {\n var _this = _super.call(this, \"
\") || this;\n _this.headerComps = {};\n _this.dept = dept;\n _this.type = type;\n _this.pinned = pinned;\n _this.dropTarget = dropTarget;\n return _this;\n }\n HeaderRowComp.prototype.forEachHeaderElement = function (callback) {\n var _this = this;\n Object.keys(this.headerComps).forEach(function (key) {\n callback(_this.headerComps[key]);\n });\n };\n HeaderRowComp.prototype.destroy = function () {\n var idsOfAllChildren = Object.keys(this.headerComps);\n this.removeAndDestroyChildComponents(idsOfAllChildren);\n _super.prototype.destroy.call(this);\n };\n HeaderRowComp.prototype.removeAndDestroyChildComponents = function (idsToDestroy) {\n var _this = this;\n idsToDestroy.forEach(function (id) {\n var childHeaderComp = _this.headerComps[id];\n _this.getGui().removeChild(childHeaderComp.getGui());\n childHeaderComp.destroy();\n delete _this.headerComps[id];\n });\n };\n HeaderRowComp.prototype.onRowHeightChanged = function () {\n var headerRowCount = this.columnController.getHeaderRowCount();\n var sizes = [];\n var numberOfFloating = 0;\n var groupHeight;\n var headerHeight;\n if (!this.columnController.isPivotMode()) {\n if (this.gridOptionsWrapper.isFloatingFilter()) {\n headerRowCount++;\n }\n numberOfFloating = (this.gridOptionsWrapper.isFloatingFilter()) ? 1 : 0;\n groupHeight = this.gridOptionsWrapper.getGroupHeaderHeight();\n headerHeight = this.gridOptionsWrapper.getHeaderHeight();\n }\n else {\n numberOfFloating = 0;\n groupHeight = this.gridOptionsWrapper.getPivotGroupHeaderHeight();\n headerHeight = this.gridOptionsWrapper.getPivotHeaderHeight();\n }\n var numberOfNonGroups = 1 + numberOfFloating;\n var numberOfGroups = headerRowCount - numberOfNonGroups;\n for (var i = 0; i < numberOfGroups; i++) {\n sizes.push(groupHeight);\n }\n sizes.push(headerHeight);\n for (var i = 0; i < numberOfFloating; i++) {\n sizes.push(this.gridOptionsWrapper.getFloatingFiltersHeight());\n }\n var rowHeight = 0;\n for (var i = 0; i < this.dept; i++) {\n rowHeight += sizes[i];\n }\n this.getGui().style.top = rowHeight + 'px';\n this.getGui().style.height = sizes[this.dept] + 'px';\n };\n //noinspection JSUnusedLocalSymbols\n HeaderRowComp.prototype.init = function () {\n this.onRowHeightChanged();\n this.onVirtualColumnsChanged();\n this.setWidth();\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n };\n HeaderRowComp.prototype.onColumnResized = function () {\n this.setWidth();\n };\n HeaderRowComp.prototype.setWidth = function () {\n var width = this.getWidthForRow();\n this.getGui().style.width = width + 'px';\n };\n HeaderRowComp.prototype.getWidthForRow = function () {\n var printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n if (printLayout) {\n var centerRow = _.missing(this.pinned);\n if (centerRow) {\n return this.columnController.getContainerWidth(Constants.PINNED_RIGHT)\n + this.columnController.getContainerWidth(Constants.PINNED_LEFT)\n + this.columnController.getContainerWidth(null);\n }\n else {\n return 0;\n }\n }\n else {\n // if not printing, just return the width as normal\n return this.columnController.getContainerWidth(this.pinned);\n }\n };\n HeaderRowComp.prototype.onGridColumnsChanged = function () {\n this.removeAndDestroyAllChildComponents();\n };\n HeaderRowComp.prototype.removeAndDestroyAllChildComponents = function () {\n var idsOfAllChildren = Object.keys(this.headerComps);\n this.removeAndDestroyChildComponents(idsOfAllChildren);\n };\n HeaderRowComp.prototype.onDisplayedColumnsChanged = function () {\n this.onVirtualColumnsChanged();\n this.setWidth();\n };\n HeaderRowComp.prototype.getItemsAtDepth = function () {\n var _this = this;\n var printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n if (printLayout) {\n // for print layout, we add all columns into the center\n var centerContainer = _.missing(this.pinned);\n if (centerContainer) {\n var result_1 = [];\n [Constants.PINNED_LEFT, null, Constants.PINNED_RIGHT].forEach(function (pinned) {\n var items = _this.columnController.getVirtualHeaderGroupRow(pinned, _this.type == HeaderRowType.FLOATING_FILTER ?\n _this.dept - 1 :\n _this.dept);\n result_1 = result_1.concat(items);\n });\n return result_1;\n }\n else {\n return [];\n }\n }\n else {\n // when in normal layout, we add the columns for that container only\n return this.columnController.getVirtualHeaderGroupRow(this.pinned, this.type == HeaderRowType.FLOATING_FILTER ?\n this.dept - 1 :\n this.dept);\n }\n };\n HeaderRowComp.prototype.onVirtualColumnsChanged = function () {\n var _this = this;\n var currentChildIds = Object.keys(this.headerComps);\n var correctChildIds = [];\n var itemsAtDepth = this.getItemsAtDepth();\n itemsAtDepth.forEach(function (child) {\n // skip groups that have no displayed children. this can happen when the group is broken,\n // and this section happens to have nothing to display for the open / closed state.\n // (a broken group is one that is split, ie columns in the group have a non-group column\n // in between them)\n if (child.isEmptyGroup()) {\n return;\n }\n var idOfChild = child.getUniqueId();\n var eParentContainer = _this.getGui();\n // if we already have this cell rendered, do nothing\n var colAlreadyInDom = currentChildIds.indexOf(idOfChild) >= 0;\n var headerComp;\n var eHeaderCompGui;\n if (colAlreadyInDom) {\n _.removeFromArray(currentChildIds, idOfChild);\n }\n else {\n headerComp = _this.createHeaderComp(child);\n _this.headerComps[idOfChild] = headerComp;\n eHeaderCompGui = headerComp.getGui();\n eParentContainer.appendChild(eHeaderCompGui);\n }\n correctChildIds.push(idOfChild);\n });\n // at this point, anything left in currentChildIds is an element that is no longer in the viewport\n this.removeAndDestroyChildComponents(currentChildIds);\n var ensureDomOrder = this.gridOptionsWrapper.isEnsureDomOrder();\n if (ensureDomOrder) {\n var correctChildOrder = correctChildIds.map(function (id) { return _this.headerComps[id].getGui(); });\n _.setDomChildOrder(this.getGui(), correctChildOrder);\n }\n };\n HeaderRowComp.prototype.createHeaderComp = function (columnGroupChild) {\n var result;\n switch (this.type) {\n case HeaderRowType.COLUMN:\n result = new HeaderWrapperComp(columnGroupChild, this.dropTarget, this.pinned);\n break;\n case HeaderRowType.COLUMN_GROUP:\n result = new HeaderGroupWrapperComp(columnGroupChild, this.dropTarget, this.pinned);\n break;\n case HeaderRowType.FLOATING_FILTER:\n result = new FloatingFilterWrapper(columnGroupChild);\n break;\n }\n this.getContext().wireBean(result);\n return result;\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], HeaderRowComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('gridApi')\n ], HeaderRowComp.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnController')\n ], HeaderRowComp.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], HeaderRowComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('filterManager')\n ], HeaderRowComp.prototype, \"filterManager\", void 0);\n __decorate([\n PostConstruct\n ], HeaderRowComp.prototype, \"init\", null);\n return HeaderRowComp;\n}(Component));\nexport { HeaderRowComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"../../widgets/component\";\nimport { Column } from \"../../entities/column\";\nimport { ColumnGroup } from \"../../entities/columnGroup\";\nimport { Autowired, PostConstruct } from \"../../context/context\";\nimport { CssClassApplier } from \"../cssClassApplier\";\nimport { DragSourceType } from \"../../dragAndDrop/dragAndDropService\";\nimport { SetLeftFeature } from \"../../rendering/features/setLeftFeature\";\nimport { HoverFeature } from \"../hoverFeature\";\nimport { _ } from \"../../utils\";\nimport { Constants } from \"../../constants\";\nvar HeaderGroupWrapperComp = /** @class */ (function (_super) {\n __extends(HeaderGroupWrapperComp, _super);\n function HeaderGroupWrapperComp(columnGroup, dragSourceDropTarget, pinned) {\n var _this = _super.call(this, HeaderGroupWrapperComp.TEMPLATE) || this;\n // the children can change, we keep destroy functions related to listening to the children here\n _this.childColumnsDestroyFuncs = [];\n _this.columnGroup = columnGroup;\n _this.dragSourceDropTarget = dragSourceDropTarget;\n _this.pinned = pinned;\n return _this;\n }\n HeaderGroupWrapperComp.prototype.postConstruct = function () {\n CssClassApplier.addHeaderClassesFromColDef(this.getComponentHolder(), this.getGui(), this.gridOptionsWrapper, null, this.columnGroup);\n var displayName = this.columnController.getDisplayNameForColumnGroup(this.columnGroup, 'header');\n this.appendHeaderGroupComp(displayName);\n this.setupResize();\n this.addClasses();\n this.setupWidth();\n this.addAttributes();\n this.setupMovingCss();\n this.setupTooltip();\n this.addFeature(new HoverFeature(this.columnGroup.getOriginalColumnGroup().getLeafColumns(), this.getGui()));\n var setLeftFeature = new SetLeftFeature(this.columnGroup, this.getGui(), this.beans);\n setLeftFeature.init();\n this.addDestroyFunc(setLeftFeature.destroy.bind(setLeftFeature));\n };\n HeaderGroupWrapperComp.prototype.setupMovingCss = function () {\n var _this = this;\n var originalColumnGroup = this.columnGroup.getOriginalColumnGroup();\n var leafColumns = originalColumnGroup.getLeafColumns();\n leafColumns.forEach(function (col) {\n _this.addDestroyableEventListener(col, Column.EVENT_MOVING_CHANGED, _this.onColumnMovingChanged.bind(_this));\n });\n this.onColumnMovingChanged();\n };\n HeaderGroupWrapperComp.prototype.getColumn = function () {\n return this.columnGroup;\n };\n HeaderGroupWrapperComp.prototype.getComponentHolder = function () {\n return this.columnGroup.getColGroupDef();\n };\n HeaderGroupWrapperComp.prototype.getTooltipText = function () {\n var colGroupDef = this.getComponentHolder();\n return colGroupDef && colGroupDef.headerTooltip;\n };\n HeaderGroupWrapperComp.prototype.setupTooltip = function () {\n var tooltipText = this.getTooltipText();\n if (tooltipText == null) {\n return;\n }\n if (this.gridOptionsWrapper.isEnableBrowserTooltips()) {\n this.getGui().setAttribute('title', tooltipText);\n }\n else {\n this.beans.tooltipManager.registerTooltip(this);\n }\n };\n HeaderGroupWrapperComp.prototype.onColumnMovingChanged = function () {\n // this function adds or removes the moving css, based on if the col is moving.\n // this is what makes the header go dark when it is been moved (gives impression to\n // user that the column was picked up).\n _.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-moving', this.columnGroup.isMoving());\n };\n HeaderGroupWrapperComp.prototype.addAttributes = function () {\n this.getGui().setAttribute(\"col-id\", this.columnGroup.getUniqueId());\n };\n HeaderGroupWrapperComp.prototype.appendHeaderGroupComp = function (displayName) {\n var _this = this;\n var params = {\n displayName: displayName,\n columnGroup: this.columnGroup,\n setExpanded: function (expanded) {\n _this.columnController.setColumnGroupOpened(_this.columnGroup.getOriginalColumnGroup(), expanded, \"gridInitializing\");\n },\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsWrapper.getContext()\n };\n if (!displayName) {\n var columnGroup = this.columnGroup;\n var leafCols = columnGroup.getLeafColumns();\n // find the top most column group that represents the same columns. so if we are dragging a group, we also\n // want to visually show the parent groups dragging for the same column set. for example imaging 5 levels\n // of grouping, with each group only containing the next group, and the last group containing three columns,\n // then when you move any group (even the lowest level group) you are in-fact moving all the groups, as all\n // the groups represent the same column set.\n while (columnGroup.getParent() && columnGroup.getParent().getLeafColumns().length === leafCols.length) {\n columnGroup = columnGroup.getParent();\n }\n var colGroupDef = columnGroup.getColGroupDef();\n if (colGroupDef) {\n displayName = colGroupDef.headerName;\n }\n if (!displayName) {\n displayName = leafCols ? this.columnController.getDisplayNameForColumn(leafCols[0], 'header', true) : '';\n }\n }\n var callback = this.afterHeaderCompCreated.bind(this, displayName);\n this.userComponentFactory.newHeaderGroupComponent(params).then(callback);\n };\n HeaderGroupWrapperComp.prototype.afterHeaderCompCreated = function (displayName, headerGroupComp) {\n this.appendChild(headerGroupComp);\n this.setupMove(headerGroupComp.getGui(), displayName);\n };\n HeaderGroupWrapperComp.prototype.addClasses = function () {\n // having different classes below allows the style to not have a bottom border\n // on the group header, if no group is specified\n // columnGroup.getColGroupDef\n if (this.columnGroup.isPadding()) {\n this.addCssClass('ag-header-group-cell-no-group');\n }\n else {\n this.addCssClass('ag-header-group-cell-with-group');\n }\n };\n HeaderGroupWrapperComp.prototype.setupMove = function (eHeaderGroup, displayName) {\n var _this = this;\n if (!eHeaderGroup) {\n return;\n }\n if (this.isSuppressMoving()) {\n return;\n }\n var allLeafColumns = this.columnGroup.getOriginalColumnGroup().getLeafColumns();\n if (eHeaderGroup) {\n var dragSource_1 = {\n type: DragSourceType.HeaderCell,\n eElement: eHeaderGroup,\n dragItemName: displayName,\n // we add in the original group leaf columns, so we move both visible and non-visible items\n dragItemCallback: this.getDragItemForGroup.bind(this),\n dragSourceDropTarget: this.dragSourceDropTarget,\n dragStarted: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(true, \"uiColumnDragged\"); }); },\n dragStopped: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(false, \"uiColumnDragged\"); }); }\n };\n this.dragAndDropService.addDragSource(dragSource_1, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource_1); });\n }\n };\n // when moving the columns, we want to move all the columns (contained within the DragItem) in this group in one go,\n // and in the order they are currently in the screen.\n HeaderGroupWrapperComp.prototype.getDragItemForGroup = function () {\n var allColumnsOriginalOrder = this.columnGroup.getOriginalColumnGroup().getLeafColumns();\n // capture visible state, used when re-entering grid to dictate which columns should be visible\n var visibleState = {};\n allColumnsOriginalOrder.forEach(function (column) { return visibleState[column.getId()] = column.isVisible(); });\n var allColumnsCurrentOrder = [];\n this.columnController.getAllDisplayedColumns().forEach(function (column) {\n if (allColumnsOriginalOrder.indexOf(column) >= 0) {\n allColumnsCurrentOrder.push(column);\n _.removeFromArray(allColumnsOriginalOrder, column);\n }\n });\n // we are left with non-visible columns, stick these in at the end\n allColumnsOriginalOrder.forEach(function (column) { return allColumnsCurrentOrder.push(column); });\n // create and return dragItem\n return {\n columns: allColumnsCurrentOrder,\n visibleState: visibleState\n };\n };\n HeaderGroupWrapperComp.prototype.isSuppressMoving = function () {\n // if any child is fixed, then don't allow moving\n var childSuppressesMoving = false;\n this.columnGroup.getLeafColumns().forEach(function (column) {\n if (column.getColDef().suppressMovable || column.getColDef().lockPosition) {\n childSuppressesMoving = true;\n }\n });\n var result = childSuppressesMoving || this.gridOptionsWrapper.isSuppressMovableColumns();\n return result;\n };\n HeaderGroupWrapperComp.prototype.setupWidth = function () {\n // we need to listen to changes in child columns, as they impact our width\n this.addListenersToChildrenColumns();\n // the children belonging to this group can change, so we need to add and remove listeners as they change\n this.addDestroyableEventListener(this.columnGroup, ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED, this.onDisplayedChildrenChanged.bind(this));\n this.onWidthChanged();\n // the child listeners are not tied to this components life-cycle, as children can get added and removed\n // to the group - hence they are on a different life-cycle. so we must make sure the existing children\n // listeners are removed when we finally get destroyed\n this.addDestroyFunc(this.destroyListenersOnChildrenColumns.bind(this));\n };\n HeaderGroupWrapperComp.prototype.onDisplayedChildrenChanged = function () {\n this.addListenersToChildrenColumns();\n this.onWidthChanged();\n };\n HeaderGroupWrapperComp.prototype.addListenersToChildrenColumns = function () {\n var _this = this;\n // first destroy any old listeners\n this.destroyListenersOnChildrenColumns();\n // now add new listeners to the new set of children\n var widthChangedListener = this.onWidthChanged.bind(this);\n this.columnGroup.getLeafColumns().forEach(function (column) {\n column.addEventListener(Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n column.addEventListener(Column.EVENT_VISIBLE_CHANGED, widthChangedListener);\n _this.childColumnsDestroyFuncs.push(function () {\n column.removeEventListener(Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n column.removeEventListener(Column.EVENT_VISIBLE_CHANGED, widthChangedListener);\n });\n });\n };\n HeaderGroupWrapperComp.prototype.destroyListenersOnChildrenColumns = function () {\n this.childColumnsDestroyFuncs.forEach(function (func) { return func(); });\n this.childColumnsDestroyFuncs = [];\n };\n HeaderGroupWrapperComp.prototype.onWidthChanged = function () {\n this.getGui().style.width = this.columnGroup.getActualWidth() + 'px';\n };\n HeaderGroupWrapperComp.prototype.setupResize = function () {\n var _this = this;\n this.eHeaderCellResize = this.getRefElement('agResize');\n if (!this.columnGroup.isResizable()) {\n _.removeFromParent(this.eHeaderCellResize);\n return;\n }\n var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({\n eResizeBar: this.eHeaderCellResize,\n onResizeStart: this.onResizeStart.bind(this),\n onResizing: this.onResizing.bind(this, false),\n onResizeEnd: this.onResizing.bind(this, true)\n });\n this.addDestroyFunc(finishedWithResizeFunc);\n if (!this.gridOptionsWrapper.isSuppressAutoSize()) {\n this.eHeaderCellResize.addEventListener('dblclick', function (event) {\n // get list of all the column keys we are responsible for\n var keys = [];\n _this.columnGroup.getDisplayedLeafColumns().forEach(function (column) {\n // not all cols in the group may be participating with auto-resize\n if (!column.getColDef().suppressAutoSize) {\n keys.push(column.getColId());\n }\n });\n if (keys.length > 0) {\n _this.columnController.autoSizeColumns(keys, \"uiColumnResized\");\n }\n });\n }\n };\n HeaderGroupWrapperComp.prototype.onResizeStart = function (shiftKey) {\n var _this = this;\n var leafCols = this.columnGroup.getDisplayedLeafColumns();\n this.resizeCols = leafCols.filter(function (col) { return col.isResizable(); });\n this.resizeStartWidth = 0;\n this.resizeCols.forEach(function (col) { return _this.resizeStartWidth += col.getActualWidth(); });\n this.resizeRatios = [];\n this.resizeCols.forEach(function (col) { return _this.resizeRatios.push(col.getActualWidth() / _this.resizeStartWidth); });\n var takeFromGroup = null;\n if (shiftKey) {\n takeFromGroup = this.columnController.getDisplayedGroupAfter(this.columnGroup);\n }\n if (takeFromGroup) {\n var takeFromLeafCols = takeFromGroup.getDisplayedLeafColumns();\n this.resizeTakeFromCols = takeFromLeafCols.filter(function (col) { return col.isResizable(); });\n this.resizeTakeFromStartWidth = 0;\n this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromStartWidth += col.getActualWidth(); });\n this.resizeTakeFromRatios = [];\n this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromRatios.push(col.getActualWidth() / _this.resizeTakeFromStartWidth); });\n }\n else {\n this.resizeTakeFromCols = null;\n this.resizeTakeFromStartWidth = null;\n this.resizeTakeFromRatios = null;\n }\n _.addCssClass(this.getGui(), 'ag-column-resizing');\n };\n HeaderGroupWrapperComp.prototype.onResizing = function (finished, resizeAmount) {\n var resizeSets = [];\n var resizeAmountNormalised = this.normaliseDragChange(resizeAmount);\n resizeSets.push({\n columns: this.resizeCols,\n ratios: this.resizeRatios,\n width: this.resizeStartWidth + resizeAmountNormalised\n });\n if (this.resizeTakeFromCols) {\n resizeSets.push({\n columns: this.resizeTakeFromCols,\n ratios: this.resizeTakeFromRatios,\n width: this.resizeTakeFromStartWidth - resizeAmountNormalised\n });\n }\n this.columnController.resizeColumnSets(resizeSets, finished, 'uiColumnDragged');\n if (finished) {\n _.removeCssClass(this.getGui(), 'ag-column-resizing');\n }\n };\n // optionally inverts the drag, depending on pinned and RTL\n // note - this method is duplicated in RenderedHeaderCell - should refactor out?\n HeaderGroupWrapperComp.prototype.normaliseDragChange = function (dragChange) {\n var result = dragChange;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, dragging left makes the col bigger, except when pinning left\n if (this.pinned !== Constants.PINNED_LEFT) {\n result *= -1;\n }\n }\n else {\n // for LTR (ie normal), dragging left makes the col smaller, except when pinning right\n if (this.pinned === Constants.PINNED_RIGHT) {\n result *= -1;\n }\n }\n return result;\n };\n HeaderGroupWrapperComp.TEMPLATE = '
' +\n '
' +\n '
';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], HeaderGroupWrapperComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], HeaderGroupWrapperComp.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('horizontalResizeService')\n ], HeaderGroupWrapperComp.prototype, \"horizontalResizeService\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], HeaderGroupWrapperComp.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], HeaderGroupWrapperComp.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('gridApi')\n ], HeaderGroupWrapperComp.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], HeaderGroupWrapperComp.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('beans')\n ], HeaderGroupWrapperComp.prototype, \"beans\", void 0);\n __decorate([\n PostConstruct\n ], HeaderGroupWrapperComp.prototype, \"postConstruct\", null);\n return HeaderGroupWrapperComp;\n}(Component));\nexport { HeaderGroupWrapperComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"../../../widgets/component\";\nimport { RefSelector } from \"../../../widgets/componentAnnotations\";\n// optional floating filter for user provided filters - instead of providing a floating filter,\n// they can provide a getModelAsString() method on the filter instead. this class just displays\n// the string returned from getModelAsString()\nvar ReadOnlyFloatingFilter = /** @class */ (function (_super) {\n __extends(ReadOnlyFloatingFilter, _super);\n function ReadOnlyFloatingFilter() {\n return _super.call(this, \"
\") || this;\n }\n ReadOnlyFloatingFilter.prototype.init = function (params) {\n this.params = params;\n this.eFloatingFilterText.disabled = true;\n };\n ReadOnlyFloatingFilter.prototype.onParentModelChanged = function (parentModel) {\n var _this = this;\n if (!parentModel) {\n this.eFloatingFilterText.value = '';\n return;\n }\n this.params.parentFilterInstance(function (filterInstance) {\n // getModelAsString should be present, as we check this\n // in floatingFilterWrapper\n if (filterInstance.getModelAsString) {\n var modelAsString = filterInstance.getModelAsString(parentModel);\n _this.eFloatingFilterText.value = modelAsString;\n }\n });\n };\n __decorate([\n RefSelector('eFloatingFilterText')\n ], ReadOnlyFloatingFilter.prototype, \"eFloatingFilterText\", void 0);\n return ReadOnlyFloatingFilter;\n}(Component));\nexport { ReadOnlyFloatingFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Autowired, PostConstruct } from \"../../context/context\";\nimport { Column } from \"../../entities/column\";\nimport { SetLeftFeature } from \"../../rendering/features/setLeftFeature\";\nimport { Component } from \"../../widgets/component\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { HoverFeature } from \"../../headerRendering/hoverFeature\";\nimport { Events } from \"../../events\";\nimport { _, Promise } from \"../../utils\";\nimport { ReadOnlyFloatingFilter } from \"./provided/readOnlyFloatingFilter\";\nimport { ModuleNames } from \"../../modules/moduleNames\";\nimport { ModuleRegistry } from \"../../modules/moduleRegistry\";\nvar FloatingFilterWrapper = /** @class */ (function (_super) {\n __extends(FloatingFilterWrapper, _super);\n function FloatingFilterWrapper(column) {\n var _this = _super.call(this, FloatingFilterWrapper.TEMPLATE) || this;\n _this.column = column;\n return _this;\n }\n FloatingFilterWrapper.prototype.postConstruct = function () {\n this.setupFloatingFilter();\n this.setupWidth();\n this.setupLeftPositioning();\n this.setupColumnHover();\n this.addFeature(new HoverFeature([this.column], this.getGui()));\n this.addDestroyableEventListener(this.eButtonShowMainFilter, 'click', this.showParentFilter.bind(this));\n };\n FloatingFilterWrapper.prototype.setupFloatingFilter = function () {\n var _this = this;\n var colDef = this.column.getColDef();\n if (colDef.filter) {\n this.floatingFilterCompPromise = this.getFloatingFilterInstance();\n if (this.floatingFilterCompPromise) {\n this.floatingFilterCompPromise.then(function (compInstance) {\n if (compInstance) {\n _this.setupWithFloatingFilter(compInstance);\n _this.setupSyncWithFilter();\n }\n else {\n _this.setupEmpty();\n }\n });\n }\n else {\n this.setupEmpty();\n }\n }\n else {\n this.setupEmpty();\n }\n };\n FloatingFilterWrapper.prototype.setupLeftPositioning = function () {\n var setLeftFeature = new SetLeftFeature(this.column, this.getGui(), this.beans);\n setLeftFeature.init();\n this.addDestroyFunc(setLeftFeature.destroy.bind(setLeftFeature));\n };\n FloatingFilterWrapper.prototype.setupSyncWithFilter = function () {\n var _this = this;\n var syncWithFilter = function (filterChangedEvent) {\n var filterComponentPromise = _this.filterManager.getFilterComponent(_this.column, 'NO_UI');\n var parentModel = filterComponentPromise.resolveNow(null, function (filter) { return filter.getModel(); });\n _this.onParentModelChanged(parentModel, filterChangedEvent);\n };\n this.addDestroyableEventListener(this.column, Column.EVENT_FILTER_CHANGED, syncWithFilter);\n if (this.filterManager.isFilterActive(this.column)) {\n syncWithFilter(null);\n }\n };\n // linked to event listener in template\n FloatingFilterWrapper.prototype.showParentFilter = function () {\n this.menuFactory.showMenuAfterButtonClick(this.column, this.eButtonShowMainFilter, 'filterMenuTab', ['filterMenuTab']);\n };\n FloatingFilterWrapper.prototype.setupColumnHover = function () {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, this.onColumnHover.bind(this));\n this.onColumnHover();\n };\n FloatingFilterWrapper.prototype.onColumnHover = function () {\n var isHovered = this.columnHoverService.isHovered(this.column);\n _.addOrRemoveCssClass(this.getGui(), 'ag-column-hover', isHovered);\n };\n FloatingFilterWrapper.prototype.setupWidth = function () {\n this.addDestroyableEventListener(this.column, Column.EVENT_WIDTH_CHANGED, this.onColumnWidthChanged.bind(this));\n this.onColumnWidthChanged();\n };\n FloatingFilterWrapper.prototype.onColumnWidthChanged = function () {\n this.getGui().style.width = this.column.getActualWidth() + 'px';\n };\n FloatingFilterWrapper.prototype.setupWithFloatingFilter = function (floatingFilterComp) {\n var disposeFunc = function () {\n if (floatingFilterComp.destroy) {\n floatingFilterComp.destroy();\n }\n };\n if (!this.isAlive()) {\n disposeFunc();\n return;\n }\n this.addDestroyFunc(disposeFunc);\n var floatingFilterCompUi = floatingFilterComp.getGui();\n _.addOrRemoveCssClass(this.eFloatingFilterBody, 'ag-floating-filter-body', !this.suppressFilterButton);\n _.addOrRemoveCssClass(this.eFloatingFilterBody, 'ag-floating-filter-full-body', this.suppressFilterButton);\n _.setDisplayed(this.eButtonWrapper, !this.suppressFilterButton);\n var eIcon = _.createIconNoSpan('filter', this.gridOptionsWrapper, this.column);\n this.eButtonShowMainFilter.appendChild(eIcon);\n this.eFloatingFilterBody.appendChild(floatingFilterCompUi);\n if (floatingFilterComp.afterGuiAttached) {\n floatingFilterComp.afterGuiAttached();\n }\n };\n FloatingFilterWrapper.prototype.parentFilterInstance = function (callback) {\n var promise = this.filterManager.getFilterComponent(this.column, 'NO_UI');\n promise.then(callback);\n };\n FloatingFilterWrapper.prototype.getFloatingFilterInstance = function () {\n var colDef = this.column.getColDef();\n var defaultFloatingFilterType;\n if (typeof colDef.filter === 'string') {\n // will be undefined if not in the map\n defaultFloatingFilterType = FloatingFilterWrapper.filterToFloatingFilterNames[colDef.filter];\n }\n else if (colDef.filter === true) {\n var setFilterModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.SetFilterModule);\n defaultFloatingFilterType = setFilterModuleLoaded ? 'agSetColumnFloatingFilter' : 'agTextColumnFloatingFilter';\n }\n var filterParams = this.filterManager.createFilterParams(this.column, this.column.getColDef());\n var finalFilterParams = this.userComponentFactory.createFinalParams(colDef, 'filter', filterParams);\n var params = {\n api: this.gridApi,\n column: this.column,\n filterParams: finalFilterParams,\n currentParentModel: this.currentParentModel.bind(this),\n parentFilterInstance: this.parentFilterInstance.bind(this),\n onFloatingFilterChanged: this.onFloatingFilterChanged.bind(this),\n suppressFilterButton: false // This one might be overridden from the colDef\n };\n // this is unusual - we need a params value OUTSIDE the component the params are for.\n // the params are for the floating filter component, but this property is actually for the wrapper.\n this.suppressFilterButton = colDef.floatingFilterComponentParams ? !!colDef.floatingFilterComponentParams.suppressFilterButton : false;\n var promise = this.userComponentFactory.newFloatingFilterComponent(colDef, params, defaultFloatingFilterType);\n if (!promise) {\n var filterComponent = this.getFilterComponentPrototype(colDef);\n var getModelAsStringExists = filterComponent && filterComponent.prototype && filterComponent.prototype.getModelAsString;\n if (getModelAsStringExists) {\n var compInstance = this.userComponentFactory.createUserComponentFromConcreteClass(ReadOnlyFloatingFilter, params);\n promise = Promise.resolve(compInstance);\n }\n }\n return promise;\n };\n FloatingFilterWrapper.prototype.createDynamicParams = function () {\n return {\n column: this.column,\n colDef: this.column.getColDef(),\n api: this.gridApi,\n columnApi: this.columnApi\n };\n };\n FloatingFilterWrapper.prototype.getFilterComponentPrototype = function (colDef) {\n var resolvedComponent = this.userComponentFactory.lookupComponentClassDef(colDef, \"filter\", this.createDynamicParams());\n return resolvedComponent ? resolvedComponent.component : null;\n };\n FloatingFilterWrapper.prototype.setupEmpty = function () {\n _.setDisplayed(this.eButtonWrapper, false);\n };\n FloatingFilterWrapper.prototype.currentParentModel = function () {\n var filterPromise = this.filterManager.getFilterComponent(this.column, 'NO_UI');\n return filterPromise.resolveNow(null, function (filter) { return filter.getModel(); });\n };\n FloatingFilterWrapper.prototype.onParentModelChanged = function (model, filterChangedEvent) {\n if (!this.floatingFilterCompPromise) {\n return;\n }\n this.floatingFilterCompPromise.then(function (floatingFilterComp) {\n floatingFilterComp.onParentModelChanged(model, filterChangedEvent);\n });\n };\n FloatingFilterWrapper.prototype.onFloatingFilterChanged = function () {\n console.warn('ag-Grid: since version 21.x, how floating filters are implemented has changed. ' +\n 'Instead of calling params.onFloatingFilterChanged(), get a reference to the main filter via ' +\n 'params.parentFilterInstance() and then set a value on the parent filter directly.');\n };\n FloatingFilterWrapper.filterToFloatingFilterNames = {\n set: 'agSetColumnFloatingFilter',\n agSetColumnFilter: 'agSetColumnFloatingFilter',\n number: 'agNumberColumnFloatingFilter',\n agNumberColumnFilter: 'agNumberColumnFloatingFilter',\n date: 'agDateColumnFloatingFilter',\n agDateColumnFilter: 'agDateColumnFloatingFilter',\n text: 'agTextColumnFloatingFilter',\n agTextColumnFilter: 'agTextColumnFloatingFilter'\n };\n FloatingFilterWrapper.TEMPLATE = \"
\\n
\\n
\\n \\n
\\n
\";\n __decorate([\n Autowired('columnHoverService')\n ], FloatingFilterWrapper.prototype, \"columnHoverService\", void 0);\n __decorate([\n Autowired('eventService')\n ], FloatingFilterWrapper.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('beans')\n ], FloatingFilterWrapper.prototype, \"beans\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], FloatingFilterWrapper.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired(\"userComponentFactory\")\n ], FloatingFilterWrapper.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired(\"gridApi\")\n ], FloatingFilterWrapper.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired(\"columnApi\")\n ], FloatingFilterWrapper.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired(\"filterManager\")\n ], FloatingFilterWrapper.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('menuFactory')\n ], FloatingFilterWrapper.prototype, \"menuFactory\", void 0);\n __decorate([\n RefSelector('eFloatingFilterBody')\n ], FloatingFilterWrapper.prototype, \"eFloatingFilterBody\", void 0);\n __decorate([\n RefSelector('eButtonWrapper')\n ], FloatingFilterWrapper.prototype, \"eButtonWrapper\", void 0);\n __decorate([\n RefSelector('eButtonShowMainFilter')\n ], FloatingFilterWrapper.prototype, \"eButtonShowMainFilter\", void 0);\n __decorate([\n PostConstruct\n ], FloatingFilterWrapper.prototype, \"postConstruct\", null);\n return FloatingFilterWrapper;\n}(Component));\nexport { FloatingFilterWrapper };\n","/**\n * The current status of a query’s execution in our system.\n */\nexport enum NetworkStatus {\n /**\n * The query has never been run before and the query is now currently running. A query will still\n * have this network status even if a partial data result was returned from the cache, but a\n * query was dispatched anyway.\n */\n loading = 1,\n\n /**\n * If `setVariables` was called and a query was fired because of that then the network status\n * will be `setVariables` until the result of that query comes back.\n */\n setVariables = 2,\n\n /**\n * Indicates that `fetchMore` was called on this query and that the query created is currently in\n * flight.\n */\n fetchMore = 3,\n\n /**\n * Similar to the `setVariables` network status. It means that `refetch` was called on a query\n * and the refetch request is currently in flight.\n */\n refetch = 4,\n\n /**\n * Indicates that a polling query is currently in flight. So for example if you are polling a\n * query every 10 seconds then the network status will switch to `poll` every 10 seconds whenever\n * a poll request has been sent but not resolved.\n */\n poll = 6,\n\n /**\n * No request is in flight for this query, and no errors happened. Everything is OK.\n */\n ready = 7,\n\n /**\n * No request is in flight for this query, but one or more errors were detected.\n */\n error = 8,\n}\n\n/**\n * Returns true if there is currently a network request in flight according to a given network\n * status.\n */\nexport function isNetworkRequestInFlight(\n networkStatus: NetworkStatus,\n): boolean {\n return networkStatus < 7;\n}\n","// This simplified polyfill attempts to follow the ECMAScript Observable proposal.\n// See https://github.com/zenparsing/es-observable\nimport { Observable as LinkObservable } from 'apollo-link';\n\nexport type Subscription = ZenObservable.Subscription;\nexport type Observer = ZenObservable.Observer;\n\nimport $$observable from 'symbol-observable';\n\n// rxjs interopt\nexport class Observable extends LinkObservable {\n public [$$observable]() {\n return this;\n }\n\n public ['@@observable' as any]() {\n return this;\n }\n}\n","export function isNonEmptyArray(value?: ArrayLike): value is Array {\n return Array.isArray(value) && value.length > 0;\n}\n","import { GraphQLError } from 'graphql';\nimport { isNonEmptyArray } from '../util/arrays';\n\nexport function isApolloError(err: Error): err is ApolloError {\n return err.hasOwnProperty('graphQLErrors');\n}\n\n// Sets the error message on this error according to the\n// the GraphQL and network errors that are present.\n// If the error message has already been set through the\n// constructor or otherwise, this function is a nop.\nconst generateErrorMessage = (err: ApolloError) => {\n let message = '';\n // If we have GraphQL errors present, add that to the error message.\n if (isNonEmptyArray(err.graphQLErrors)) {\n err.graphQLErrors.forEach((graphQLError: GraphQLError) => {\n const errorMessage = graphQLError\n ? graphQLError.message\n : 'Error message not found.';\n message += `GraphQL error: ${errorMessage}\\n`;\n });\n }\n\n if (err.networkError) {\n message += 'Network error: ' + err.networkError.message + '\\n';\n }\n\n // strip newline from the end of the message\n message = message.replace(/\\n$/, '');\n return message;\n};\n\nexport class ApolloError extends Error {\n public message: string;\n public graphQLErrors: ReadonlyArray;\n public networkError: Error | null;\n\n // An object that can be used to provide some additional information\n // about an error, e.g. specifying the type of error this is. Used\n // internally within Apollo Client.\n public extraInfo: any;\n\n // Constructs an instance of ApolloError given a GraphQLError\n // or a network error. Note that one of these has to be a valid\n // value or the constructed error will be meaningless.\n constructor({\n graphQLErrors,\n networkError,\n errorMessage,\n extraInfo,\n }: {\n graphQLErrors?: ReadonlyArray;\n networkError?: Error | null;\n errorMessage?: string;\n extraInfo?: any;\n }) {\n super(errorMessage);\n this.graphQLErrors = graphQLErrors || [];\n this.networkError = networkError || null;\n\n if (!errorMessage) {\n this.message = generateErrorMessage(this);\n } else {\n this.message = errorMessage;\n }\n\n this.extraInfo = extraInfo;\n\n // We're not using `Object.setPrototypeOf` here as it isn't fully\n // supported on Android (see issue #3236).\n (this as any).__proto__ = ApolloError.prototype;\n }\n}\n","import { FetchResult } from 'apollo-link';\nimport { DocumentNode, GraphQLError } from 'graphql';\n\nimport { QueryStoreValue } from '../data/queries';\nimport { NetworkStatus } from './networkStatus';\n\nexport type QueryListener = (\n queryStoreValue: QueryStoreValue,\n newData?: any,\n forceResolvers?: boolean,\n) => void;\n\nexport type OperationVariables = { [key: string]: any };\n\nexport type PureQueryOptions = {\n query: DocumentNode;\n variables?: { [key: string]: any };\n context?: any;\n};\n\nexport type ApolloQueryResult = {\n data: T;\n errors?: ReadonlyArray;\n loading: boolean;\n networkStatus: NetworkStatus;\n stale: boolean;\n};\n\nexport enum FetchType {\n normal = 1,\n refetch = 2,\n poll = 3,\n}\n\n// This is part of the public API, people write these functions in `updateQueries`.\nexport type MutationQueryReducer = (\n previousResult: Record,\n options: {\n mutationResult: FetchResult;\n queryName: string | undefined;\n queryVariables: Record;\n },\n) => Record;\n\nexport type MutationQueryReducersMap = {\n [queryName: string]: MutationQueryReducer;\n};\n\nexport interface Resolvers {\n [key: string]: {\n [field: string]: (\n rootValue?: any,\n args?: any,\n context?: any,\n info?: any,\n ) => any;\n };\n}\n","import {\n isEqual,\n tryFunctionOrLogError,\n cloneDeep,\n getOperationDefinition,\n} from 'apollo-utilities';\nimport { GraphQLError } from 'graphql';\nimport { NetworkStatus, isNetworkRequestInFlight } from './networkStatus';\nimport { Observable, Observer, Subscription } from '../util/Observable';\nimport { ApolloError } from '../errors/ApolloError';\nimport { QueryManager } from './QueryManager';\nimport { ApolloQueryResult, FetchType, OperationVariables } from './types';\nimport {\n WatchQueryOptions,\n FetchMoreQueryOptions,\n SubscribeToMoreOptions,\n ErrorPolicy,\n} from './watchQueryOptions';\n\nimport { QueryStoreValue } from '../data/queries';\n\nimport { invariant, InvariantError } from 'ts-invariant';\nimport { isNonEmptyArray } from '../util/arrays';\n\n// XXX remove in the next breaking semver change (3.0)\n// Deprecated, use ApolloCurrentQueryResult\nexport type ApolloCurrentResult = {\n data: T | {};\n errors?: ReadonlyArray;\n loading: boolean;\n networkStatus: NetworkStatus;\n error?: ApolloError;\n partial?: boolean;\n};\n\nexport type ApolloCurrentQueryResult = {\n data: T | undefined;\n errors?: ReadonlyArray;\n loading: boolean;\n networkStatus: NetworkStatus;\n error?: ApolloError;\n partial?: boolean;\n stale?: boolean;\n};\n\nexport interface FetchMoreOptions<\n TData = any,\n TVariables = OperationVariables\n> {\n updateQuery: (\n previousQueryResult: TData,\n options: {\n fetchMoreResult?: TData;\n variables?: TVariables;\n },\n ) => TData;\n}\n\nexport interface UpdateQueryOptions {\n variables?: TVariables;\n}\n\nexport const hasError = (\n storeValue: QueryStoreValue,\n policy: ErrorPolicy = 'none',\n) => storeValue && (\n storeValue.networkError ||\n (policy === 'none' && isNonEmptyArray(storeValue.graphQLErrors))\n);\n\nexport class ObservableQuery<\n TData = any,\n TVariables = OperationVariables\n> extends Observable> {\n public options: WatchQueryOptions;\n public readonly queryId: string;\n public readonly queryName?: string;\n /**\n *\n * The current value of the variables for this query. Can change.\n */\n public variables: TVariables;\n\n private shouldSubscribe: boolean;\n private isTornDown: boolean;\n private queryManager: QueryManager;\n private observers = new Set>>();\n private subscriptions = new Set();\n\n private lastResult: ApolloQueryResult;\n private lastResultSnapshot: ApolloQueryResult;\n private lastError: ApolloError;\n\n constructor({\n queryManager,\n options,\n shouldSubscribe = true,\n }: {\n queryManager: QueryManager;\n options: WatchQueryOptions;\n shouldSubscribe?: boolean;\n }) {\n super((observer: Observer>) =>\n this.onSubscribe(observer),\n );\n\n // active state\n this.isTornDown = false;\n\n // query information\n this.options = options;\n this.variables = options.variables || ({} as TVariables);\n this.queryId = queryManager.generateQueryId();\n this.shouldSubscribe = shouldSubscribe;\n\n const opDef = getOperationDefinition(options.query);\n this.queryName = opDef && opDef.name && opDef.name.value;\n\n // related classes\n this.queryManager = queryManager;\n }\n\n public result(): Promise> {\n return new Promise((resolve, reject) => {\n const observer: Observer> = {\n next: (result: ApolloQueryResult) => {\n resolve(result);\n\n // Stop the query within the QueryManager if we can before\n // this function returns.\n //\n // We do this in order to prevent observers piling up within\n // the QueryManager. Notice that we only fully unsubscribe\n // from the subscription in a setTimeout(..., 0) call. This call can\n // actually be handled by the browser at a much later time. If queries\n // are fired in the meantime, observers that should have been removed\n // from the QueryManager will continue to fire, causing an unnecessary\n // performance hit.\n this.observers.delete(observer);\n if (!this.observers.size) {\n this.queryManager.removeQuery(this.queryId);\n }\n\n setTimeout(() => {\n subscription.unsubscribe();\n }, 0);\n },\n error: reject,\n };\n const subscription = this.subscribe(observer);\n });\n }\n\n // XXX remove in the next breaking semver change (3.0)\n // Deprecated, use getCurrentResult()\n public currentResult(): ApolloCurrentResult {\n const result = this.getCurrentResult() as ApolloCurrentResult;\n if (result.data === undefined) {\n result.data = {};\n }\n return result;\n }\n\n /**\n * Return the result of the query from the local cache as well as some fetching status\n * `loading` and `networkStatus` allow to know if a request is in flight\n * `partial` lets you know if the result from the local cache is complete or partial\n * @return {data: Object, error: ApolloError, loading: boolean, networkStatus: number, partial: boolean}\n */\n public getCurrentResult(): ApolloCurrentQueryResult {\n if (this.isTornDown) {\n const { lastResult } = this;\n return {\n data: !this.lastError && lastResult && lastResult.data || void 0,\n error: this.lastError,\n loading: false,\n networkStatus: NetworkStatus.error,\n };\n }\n\n const { data, partial } = this.queryManager.getCurrentQueryResult(this);\n const queryStoreValue = this.queryManager.queryStore.get(this.queryId);\n let result: ApolloQueryResult;\n\n const { fetchPolicy } = this.options;\n\n const isNetworkFetchPolicy =\n fetchPolicy === 'network-only' ||\n fetchPolicy === 'no-cache';\n\n if (queryStoreValue) {\n const { networkStatus } = queryStoreValue;\n\n if (hasError(queryStoreValue, this.options.errorPolicy)) {\n return {\n data: void 0,\n loading: false,\n networkStatus,\n error: new ApolloError({\n graphQLErrors: queryStoreValue.graphQLErrors,\n networkError: queryStoreValue.networkError,\n }),\n };\n }\n\n // Variables might have been added dynamically at query time, when\n // using `@client @export(as: \"varname\")` for example. When this happens,\n // the variables have been updated in the query store, but not updated on\n // the original `ObservableQuery`. We'll update the observable query\n // variables here to match, so retrieving from the cache doesn't fail.\n if (queryStoreValue.variables) {\n this.options.variables = {\n ...this.options.variables,\n ...(queryStoreValue.variables as TVariables),\n };\n this.variables = this.options.variables;\n }\n\n result = {\n data,\n loading: isNetworkRequestInFlight(networkStatus),\n networkStatus,\n } as ApolloQueryResult;\n\n if (queryStoreValue.graphQLErrors && this.options.errorPolicy === 'all') {\n result.errors = queryStoreValue.graphQLErrors;\n }\n\n } else {\n // We need to be careful about the loading state we show to the user, to try\n // and be vaguely in line with what the user would have seen from .subscribe()\n // but to still provide useful information synchronously when the query\n // will not end up hitting the server.\n // See more: https://github.com/apollostack/apollo-client/issues/707\n // Basically: is there a query in flight right now (modolo the next tick)?\n const loading = isNetworkFetchPolicy ||\n (partial && fetchPolicy !== 'cache-only');\n\n result = {\n data,\n loading,\n networkStatus: loading ? NetworkStatus.loading : NetworkStatus.ready,\n } as ApolloQueryResult;\n }\n\n if (!partial) {\n this.updateLastResult({ ...result, stale: false });\n }\n\n return { ...result, partial };\n }\n\n // Compares newResult to the snapshot we took of this.lastResult when it was\n // first received.\n public isDifferentFromLastResult(newResult: ApolloQueryResult) {\n const { lastResultSnapshot: snapshot } = this;\n return !(\n snapshot &&\n newResult &&\n snapshot.networkStatus === newResult.networkStatus &&\n snapshot.stale === newResult.stale &&\n isEqual(snapshot.data, newResult.data)\n );\n }\n\n // Returns the last result that observer.next was called with. This is not the same as\n // getCurrentResult! If you're not sure which you need, then you probably need getCurrentResult.\n public getLastResult(): ApolloQueryResult {\n return this.lastResult;\n }\n\n public getLastError(): ApolloError {\n return this.lastError;\n }\n\n public resetLastResults(): void {\n delete this.lastResult;\n delete this.lastResultSnapshot;\n delete this.lastError;\n this.isTornDown = false;\n }\n\n public resetQueryStoreErrors() {\n const queryStore = this.queryManager.queryStore.get(this.queryId);\n if (queryStore) {\n queryStore.networkError = null;\n queryStore.graphQLErrors = [];\n }\n }\n\n /**\n * Update the variables of this observable query, and fetch the new results.\n * This method should be preferred over `setVariables` in most use cases.\n *\n * @param variables: The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n */\n public refetch(variables?: TVariables): Promise> {\n let { fetchPolicy } = this.options;\n // early return if trying to read from cache during refetch\n if (fetchPolicy === 'cache-only') {\n return Promise.reject(new InvariantError(\n 'cache-only fetchPolicy option should not be used together with query refetch.',\n ));\n }\n\n // Unless the provided fetchPolicy always consults the network\n // (no-cache, network-only, or cache-and-network), override it with\n // network-only to force the refetch for this fetchQuery call.\n if (fetchPolicy !== 'no-cache' &&\n fetchPolicy !== 'cache-and-network') {\n fetchPolicy = 'network-only';\n }\n\n if (!isEqual(this.variables, variables)) {\n // update observable variables\n this.variables = {\n ...this.variables,\n ...variables,\n };\n }\n\n if (!isEqual(this.options.variables, this.variables)) {\n // Update the existing options with new variables\n this.options.variables = {\n ...this.options.variables,\n ...this.variables,\n };\n }\n\n return this.queryManager.fetchQuery(\n this.queryId,\n { ...this.options, fetchPolicy },\n FetchType.refetch,\n ) as Promise>;\n }\n\n public fetchMore(\n fetchMoreOptions: FetchMoreQueryOptions &\n FetchMoreOptions,\n ): Promise> {\n // early return if no update Query\n invariant(\n fetchMoreOptions.updateQuery,\n 'updateQuery option is required. This function defines how to update the query data with the new results.',\n );\n\n const combinedOptions = {\n ...(fetchMoreOptions.query ? fetchMoreOptions : {\n ...this.options,\n ...fetchMoreOptions,\n variables: {\n ...this.variables,\n ...fetchMoreOptions.variables,\n },\n }),\n fetchPolicy: 'network-only',\n } as WatchQueryOptions;\n\n const qid = this.queryManager.generateQueryId();\n\n return this.queryManager\n .fetchQuery(\n qid,\n combinedOptions,\n FetchType.normal,\n this.queryId,\n )\n .then(\n fetchMoreResult => {\n this.updateQuery((previousResult: any) =>\n fetchMoreOptions.updateQuery(previousResult, {\n fetchMoreResult: fetchMoreResult.data as TData,\n variables: combinedOptions.variables as TVariables,\n }),\n );\n this.queryManager.stopQuery(qid);\n return fetchMoreResult as ApolloQueryResult;\n },\n error => {\n this.queryManager.stopQuery(qid);\n throw error;\n },\n );\n }\n\n // XXX the subscription variables are separate from the query variables.\n // if you want to update subscription variables, right now you have to do that separately,\n // and you can only do it by stopping the subscription and then subscribing again with new variables.\n public subscribeToMore<\n TSubscriptionData = TData,\n TSubscriptionVariables = TVariables\n >(\n options: SubscribeToMoreOptions<\n TData,\n TSubscriptionVariables,\n TSubscriptionData\n >,\n ) {\n const subscription = this.queryManager\n .startGraphQLSubscription({\n query: options.document,\n variables: options.variables,\n })\n .subscribe({\n next: (subscriptionData: { data: TSubscriptionData }) => {\n const { updateQuery } = options;\n if (updateQuery) {\n this.updateQuery(\n (previous, { variables }) =>\n updateQuery(previous, {\n subscriptionData,\n variables,\n }),\n );\n }\n },\n error: (err: any) => {\n if (options.onError) {\n options.onError(err);\n return;\n }\n invariant.error('Unhandled GraphQL subscription error', err);\n },\n });\n\n this.subscriptions.add(subscription);\n\n return () => {\n if (this.subscriptions.delete(subscription)) {\n subscription.unsubscribe();\n }\n };\n }\n\n // Note: if the query is not active (there are no subscribers), the promise\n // will return null immediately.\n public setOptions(\n opts: WatchQueryOptions,\n ): Promise | void> {\n const { fetchPolicy: oldFetchPolicy } = this.options;\n this.options = {\n ...this.options,\n ...opts,\n } as WatchQueryOptions;\n\n if (opts.pollInterval) {\n this.startPolling(opts.pollInterval);\n } else if (opts.pollInterval === 0) {\n this.stopPolling();\n }\n\n const { fetchPolicy } = opts;\n\n return this.setVariables(\n this.options.variables as TVariables,\n // Try to fetch the query if fetchPolicy changed from either cache-only\n // or standby to something else, or changed to network-only.\n oldFetchPolicy !== fetchPolicy && (\n oldFetchPolicy === 'cache-only' ||\n oldFetchPolicy === 'standby' ||\n fetchPolicy === 'network-only'\n ),\n opts.fetchResults,\n );\n }\n\n /**\n * This is for *internal* use only. Most users should instead use `refetch`\n * in order to be properly notified of results even when they come from cache.\n *\n * Update the variables of this observable query, and fetch the new results\n * if they've changed. If you want to force new results, use `refetch`.\n *\n * Note: the `next` callback will *not* fire if the variables have not changed\n * or if the result is coming from cache.\n *\n * Note: the promise will return the old results immediately if the variables\n * have not changed.\n *\n * Note: the promise will return null immediately if the query is not active\n * (there are no subscribers).\n *\n * @private\n *\n * @param variables: The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n *\n * @param tryFetch: Try and fetch new results even if the variables haven't\n * changed (we may still just hit the store, but if there's nothing in there\n * this will refetch)\n *\n * @param fetchResults: Option to ignore fetching results when updating variables\n */\n public setVariables(\n variables: TVariables,\n tryFetch: boolean = false,\n fetchResults = true,\n ): Promise | void> {\n // since setVariables restarts the subscription, we reset the tornDown status\n this.isTornDown = false;\n\n variables = variables || this.variables;\n\n if (!tryFetch && isEqual(variables, this.variables)) {\n // If we have no observers, then we don't actually want to make a network\n // request. As soon as someone observes the query, the request will kick\n // off. For now, we just store any changes. (See #1077)\n return this.observers.size && fetchResults\n ? this.result()\n : Promise.resolve();\n }\n\n this.variables = this.options.variables = variables;\n\n // See comment above\n if (!this.observers.size) {\n return Promise.resolve();\n }\n\n // Use the same options as before, but with new variables\n return this.queryManager.fetchQuery(\n this.queryId,\n this.options,\n ) as Promise>;\n }\n\n public updateQuery(\n mapFn: (\n previousQueryResult: TData,\n options: UpdateQueryOptions,\n ) => TData,\n ): void {\n const { queryManager } = this;\n const {\n previousResult,\n variables,\n document,\n } = queryManager.getQueryWithPreviousResult(\n this.queryId,\n );\n\n const newResult = tryFunctionOrLogError(() =>\n mapFn(previousResult, { variables }),\n );\n\n if (newResult) {\n queryManager.dataStore.markUpdateQueryResult(\n document,\n variables,\n newResult,\n );\n queryManager.broadcastQueries();\n }\n }\n\n public stopPolling() {\n this.queryManager.stopPollingQuery(this.queryId);\n this.options.pollInterval = undefined;\n }\n\n public startPolling(pollInterval: number) {\n assertNotCacheFirstOrOnly(this);\n this.options.pollInterval = pollInterval;\n this.queryManager.startPollingQuery(this.options, this.queryId);\n }\n\n private updateLastResult(newResult: ApolloQueryResult) {\n const previousResult = this.lastResult;\n this.lastResult = newResult;\n this.lastResultSnapshot = this.queryManager.assumeImmutableResults\n ? newResult\n : cloneDeep(newResult);\n return previousResult;\n }\n\n private onSubscribe(observer: Observer>) {\n // Zen Observable has its own error function, so in order to log correctly\n // we need to provide a custom error callback.\n try {\n var subObserver = (observer as any)._subscription._observer;\n if (subObserver && !subObserver.error) {\n subObserver.error = defaultSubscriptionObserverErrorCallback;\n }\n } catch {}\n\n const first = !this.observers.size;\n this.observers.add(observer);\n\n // Deliver initial result\n if (observer.next && this.lastResult) observer.next(this.lastResult);\n if (observer.error && this.lastError) observer.error(this.lastError);\n\n // setup the query if it hasn't been done before\n if (first) {\n this.setUpQuery();\n }\n\n return () => {\n if (this.observers.delete(observer) && !this.observers.size) {\n this.tearDownQuery();\n }\n };\n }\n\n private setUpQuery() {\n const { queryManager, queryId } = this;\n\n if (this.shouldSubscribe) {\n queryManager.addObservableQuery(queryId, this);\n }\n\n if (this.options.pollInterval) {\n assertNotCacheFirstOrOnly(this);\n queryManager.startPollingQuery(this.options, queryId);\n }\n\n const onError = (error: ApolloError) => {\n // Since we don't get the current result on errors, only the error, we\n // must mirror the updates that occur in QueryStore.markQueryError here\n this.updateLastResult({\n ...this.lastResult,\n errors: error.graphQLErrors,\n networkStatus: NetworkStatus.error,\n loading: false,\n });\n iterateObserversSafely(this.observers, 'error', this.lastError = error);\n };\n\n queryManager.observeQuery(queryId, this.options, {\n next: (result: ApolloQueryResult) => {\n if (this.lastError || this.isDifferentFromLastResult(result)) {\n const previousResult = this.updateLastResult(result);\n const { query, variables, fetchPolicy } = this.options;\n\n // Before calling `next` on each observer, we need to first see if\n // the query is using `@client @export` directives, and update\n // any variables that might have changed. If `@export` variables have\n // changed, and the query is calling against both local and remote\n // data, a refetch is needed to pull in new data, using the\n // updated `@export` variables.\n if (queryManager.transform(query).hasClientExports) {\n queryManager.getLocalState().addExportedVariables(\n query,\n variables,\n ).then((variables: TVariables) => {\n const previousVariables = this.variables;\n this.variables = this.options.variables = variables;\n if (\n !result.loading &&\n previousResult &&\n fetchPolicy !== 'cache-only' &&\n queryManager.transform(query).serverQuery &&\n !isEqual(previousVariables, variables)\n ) {\n this.refetch();\n } else {\n iterateObserversSafely(this.observers, 'next', result);\n }\n });\n } else {\n iterateObserversSafely(this.observers, 'next', result);\n }\n }\n },\n error: onError,\n }).catch(onError);\n }\n\n private tearDownQuery() {\n const { queryManager } = this;\n\n this.isTornDown = true;\n queryManager.stopPollingQuery(this.queryId);\n\n // stop all active GraphQL subscriptions\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.subscriptions.clear();\n\n queryManager.removeObservableQuery(this.queryId);\n queryManager.stopQuery(this.queryId);\n\n this.observers.clear();\n }\n}\n\nfunction defaultSubscriptionObserverErrorCallback(error: ApolloError) {\n invariant.error('Unhandled error', error.message, error.stack);\n}\n\nfunction iterateObserversSafely(\n observers: Set>,\n method: keyof Observer,\n argument?: A,\n) {\n // In case observers is modified during iteration, we need to commit to the\n // original elements, which also provides an opportunity to filter them down\n // to just the observers with the given method.\n const observersWithMethod: Observer[] = [];\n observers.forEach(obs => obs[method] && observersWithMethod.push(obs));\n observersWithMethod.forEach(obs => (obs as any)[method](argument));\n}\n\nfunction assertNotCacheFirstOrOnly(\n obsQuery: ObservableQuery,\n) {\n const { fetchPolicy } = obsQuery.options;\n invariant(\n fetchPolicy !== 'cache-first' && fetchPolicy !== 'cache-only',\n 'Queries that specify the cache-first and cache-only fetchPolicies cannot also be polling queries.',\n );\n}\n","import { DocumentNode } from 'graphql';\n\nexport class MutationStore {\n private store: { [mutationId: string]: MutationStoreValue } = {};\n\n public getStore(): { [mutationId: string]: MutationStoreValue } {\n return this.store;\n }\n\n public get(mutationId: string): MutationStoreValue {\n return this.store[mutationId];\n }\n\n public initMutation(\n mutationId: string,\n mutation: DocumentNode,\n variables: Object | undefined,\n ) {\n this.store[mutationId] = {\n mutation,\n variables: variables || {},\n loading: true,\n error: null,\n };\n }\n\n public markMutationError(mutationId: string, error: Error) {\n const mutation = this.store[mutationId];\n if (mutation) {\n mutation.loading = false;\n mutation.error = error;\n }\n }\n\n public markMutationResult(mutationId: string) {\n const mutation = this.store[mutationId];\n if (mutation) {\n mutation.loading = false;\n mutation.error = null;\n }\n }\n\n public reset() {\n this.store = {};\n }\n}\n\nexport interface MutationStoreValue {\n mutation: DocumentNode;\n variables: Object;\n loading: boolean;\n error: Error | null;\n}\n","import { DocumentNode, GraphQLError, ExecutionResult } from 'graphql';\nimport { isEqual } from 'apollo-utilities';\nimport { invariant } from 'ts-invariant';\nimport { NetworkStatus } from '../core/networkStatus';\nimport { isNonEmptyArray } from '../util/arrays';\n\nexport type QueryStoreValue = {\n document: DocumentNode;\n variables: Object;\n previousVariables?: Object | null;\n networkStatus: NetworkStatus;\n networkError?: Error | null;\n graphQLErrors?: ReadonlyArray;\n metadata: any;\n};\n\nexport class QueryStore {\n private store: { [queryId: string]: QueryStoreValue } = {};\n\n public getStore(): { [queryId: string]: QueryStoreValue } {\n return this.store;\n }\n\n public get(queryId: string): QueryStoreValue {\n return this.store[queryId];\n }\n\n public initQuery(query: {\n queryId: string;\n document: DocumentNode;\n storePreviousVariables: boolean;\n variables: Object;\n isPoll: boolean;\n isRefetch: boolean;\n metadata: any;\n fetchMoreForQueryId: string | undefined;\n }) {\n const previousQuery = this.store[query.queryId];\n\n // XXX we're throwing an error here to catch bugs where a query gets overwritten by a new one.\n // we should implement a separate action for refetching so that QUERY_INIT may never overwrite\n // an existing query (see also: https://github.com/apollostack/apollo-client/issues/732)\n invariant(\n !previousQuery ||\n previousQuery.document === query.document ||\n isEqual(previousQuery.document, query.document),\n 'Internal Error: may not update existing query string in store',\n );\n\n let isSetVariables = false;\n\n let previousVariables: Object | null = null;\n if (\n query.storePreviousVariables &&\n previousQuery &&\n previousQuery.networkStatus !== NetworkStatus.loading\n // if the previous query was still loading, we don't want to remember it at all.\n ) {\n if (!isEqual(previousQuery.variables, query.variables)) {\n isSetVariables = true;\n previousVariables = previousQuery.variables;\n }\n }\n\n // TODO break this out into a separate function\n let networkStatus;\n if (isSetVariables) {\n networkStatus = NetworkStatus.setVariables;\n } else if (query.isPoll) {\n networkStatus = NetworkStatus.poll;\n } else if (query.isRefetch) {\n networkStatus = NetworkStatus.refetch;\n // TODO: can we determine setVariables here if it's a refetch and the variables have changed?\n } else {\n networkStatus = NetworkStatus.loading;\n }\n\n let graphQLErrors: ReadonlyArray = [];\n if (previousQuery && previousQuery.graphQLErrors) {\n graphQLErrors = previousQuery.graphQLErrors;\n }\n\n // XXX right now if QUERY_INIT is fired twice, like in a refetch situation, we just overwrite\n // the store. We probably want a refetch action instead, because I suspect that if you refetch\n // before the initial fetch is done, you'll get an error.\n this.store[query.queryId] = {\n document: query.document,\n variables: query.variables,\n previousVariables,\n networkError: null,\n graphQLErrors: graphQLErrors,\n networkStatus,\n metadata: query.metadata,\n };\n\n // If the action had a `moreForQueryId` property then we need to set the\n // network status on that query as well to `fetchMore`.\n //\n // We have a complement to this if statement in the query result and query\n // error action branch, but importantly *not* in the client result branch.\n // This is because the implementation of `fetchMore` *always* sets\n // `fetchPolicy` to `network-only` so we would never have a client result.\n if (\n typeof query.fetchMoreForQueryId === 'string' &&\n this.store[query.fetchMoreForQueryId]\n ) {\n this.store[query.fetchMoreForQueryId].networkStatus =\n NetworkStatus.fetchMore;\n }\n }\n\n public markQueryResult(\n queryId: string,\n result: ExecutionResult,\n fetchMoreForQueryId: string | undefined,\n ) {\n if (!this.store || !this.store[queryId]) return;\n\n this.store[queryId].networkError = null;\n this.store[queryId].graphQLErrors = isNonEmptyArray(result.errors) ? result.errors : [];\n this.store[queryId].previousVariables = null;\n this.store[queryId].networkStatus = NetworkStatus.ready;\n\n // If we have a `fetchMoreForQueryId` then we need to update the network\n // status for that query. See the branch for query initialization for more\n // explanation about this process.\n if (\n typeof fetchMoreForQueryId === 'string' &&\n this.store[fetchMoreForQueryId]\n ) {\n this.store[fetchMoreForQueryId].networkStatus = NetworkStatus.ready;\n }\n }\n\n public markQueryError(\n queryId: string,\n error: Error,\n fetchMoreForQueryId: string | undefined,\n ) {\n if (!this.store || !this.store[queryId]) return;\n\n this.store[queryId].networkError = error;\n this.store[queryId].networkStatus = NetworkStatus.error;\n\n // If we have a `fetchMoreForQueryId` then we need to update the network\n // status for that query. See the branch for query initialization for more\n // explanation about this process.\n if (typeof fetchMoreForQueryId === 'string') {\n this.markQueryResultClient(fetchMoreForQueryId, true);\n }\n }\n\n public markQueryResultClient(queryId: string, complete: boolean) {\n const storeValue = this.store && this.store[queryId];\n if (storeValue) {\n storeValue.networkError = null;\n storeValue.previousVariables = null;\n if (complete) {\n storeValue.networkStatus = NetworkStatus.ready;\n }\n }\n }\n\n public stopQuery(queryId: string) {\n delete this.store[queryId];\n }\n\n public reset(observableQueryIds: string[]) {\n Object.keys(this.store).forEach(queryId => {\n if (observableQueryIds.indexOf(queryId) < 0) {\n this.stopQuery(queryId);\n } else {\n // XXX set loading to true so listeners don't trigger unless they want results with partial data\n this.store[queryId].networkStatus = NetworkStatus.loading;\n }\n });\n }\n}\n","import {\n ExecutionResult,\n DocumentNode,\n OperationDefinitionNode,\n SelectionSetNode,\n SelectionNode,\n InlineFragmentNode,\n FragmentDefinitionNode,\n FieldNode,\n ASTNode,\n} from 'graphql';\nimport { visit, BREAK } from 'graphql/language/visitor';\n\nimport { ApolloCache } from 'apollo-cache';\nimport {\n getMainDefinition,\n buildQueryFromSelectionSet,\n hasDirectives,\n removeClientSetsFromDocument,\n mergeDeep,\n mergeDeepArray,\n FragmentMap,\n argumentsObjectFromField,\n resultKeyNameFromField,\n getFragmentDefinitions,\n createFragmentMap,\n shouldInclude,\n isField,\n isInlineFragment,\n} from 'apollo-utilities';\n\nimport { invariant } from 'ts-invariant';\n\nimport ApolloClient from '../ApolloClient';\nimport { Resolvers, OperationVariables } from './types';\nimport { capitalizeFirstLetter } from '../util/capitalizeFirstLetter';\n\nexport type Resolver = (\n fieldName: string,\n rootValue: any,\n args: any,\n context: any,\n info: {\n field: FieldNode;\n },\n) => any;\n\nexport type VariableMap = { [name: string]: any };\n\nexport type FragmentMatcher = (\n rootValue: any,\n typeCondition: string,\n context: any,\n) => boolean;\n\nexport type ExecContext = {\n fragmentMap: FragmentMap;\n context: any;\n variables: VariableMap;\n fragmentMatcher: FragmentMatcher;\n defaultOperationType: string;\n exportedVariables: Record;\n onlyRunForcedResolvers: boolean;\n};\n\nexport type LocalStateOptions = {\n cache: ApolloCache;\n client?: ApolloClient;\n resolvers?: Resolvers | Resolvers[];\n fragmentMatcher?: FragmentMatcher;\n};\n\nexport class LocalState {\n private cache: ApolloCache;\n private client: ApolloClient;\n private resolvers?: Resolvers;\n private fragmentMatcher: FragmentMatcher;\n\n constructor({\n cache,\n client,\n resolvers,\n fragmentMatcher,\n }: LocalStateOptions) {\n this.cache = cache;\n\n if (client) {\n this.client = client;\n }\n\n if (resolvers) {\n this.addResolvers(resolvers);\n }\n\n if (fragmentMatcher) {\n this.setFragmentMatcher(fragmentMatcher);\n }\n }\n\n public addResolvers(resolvers: Resolvers | Resolvers[]) {\n this.resolvers = this.resolvers || {};\n if (Array.isArray(resolvers)) {\n resolvers.forEach(resolverGroup => {\n this.resolvers = mergeDeep(this.resolvers, resolverGroup);\n });\n } else {\n this.resolvers = mergeDeep(this.resolvers, resolvers);\n }\n }\n\n public setResolvers(resolvers: Resolvers | Resolvers[]) {\n this.resolvers = {};\n this.addResolvers(resolvers);\n }\n\n public getResolvers() {\n return this.resolvers || {};\n }\n\n // Run local client resolvers against the incoming query and remote data.\n // Locally resolved field values are merged with the incoming remote data,\n // and returned. Note that locally resolved fields will overwrite\n // remote data using the same field name.\n public async runResolvers({\n document,\n remoteResult,\n context,\n variables,\n onlyRunForcedResolvers = false,\n }: {\n document: DocumentNode | null;\n remoteResult: ExecutionResult;\n context?: Record;\n variables?: Record;\n onlyRunForcedResolvers?: boolean;\n }): Promise> {\n if (document) {\n return this.resolveDocument(\n document,\n remoteResult.data,\n context,\n variables,\n this.fragmentMatcher,\n onlyRunForcedResolvers,\n ).then(localResult => ({\n ...remoteResult,\n data: localResult.result,\n }));\n }\n\n return remoteResult;\n }\n\n public setFragmentMatcher(fragmentMatcher: FragmentMatcher) {\n this.fragmentMatcher = fragmentMatcher;\n }\n\n public getFragmentMatcher(): FragmentMatcher {\n return this.fragmentMatcher;\n }\n\n // Client queries contain everything in the incoming document (if a @client\n // directive is found).\n public clientQuery(document: DocumentNode) {\n if (hasDirectives(['client'], document)) {\n if (this.resolvers) {\n return document;\n }\n invariant.warn(\n 'Found @client directives in a query but no ApolloClient resolvers ' +\n 'were specified. This means ApolloClient local resolver handling ' +\n 'has been disabled, and @client directives will be passed through ' +\n 'to your link chain.',\n );\n }\n return null;\n }\n\n // Server queries are stripped of all @client based selection sets.\n public serverQuery(document: DocumentNode) {\n return this.resolvers ? removeClientSetsFromDocument(document) : document;\n }\n\n public prepareContext(context = {}) {\n const { cache } = this;\n\n const newContext = {\n ...context,\n cache,\n // Getting an entry's cache key is useful for local state resolvers.\n getCacheKey: (obj: { __typename: string; id: string | number }) => {\n if ((cache as any).config) {\n return (cache as any).config.dataIdFromObject(obj);\n } else {\n invariant(false,\n 'To use context.getCacheKey, you need to use a cache that has ' +\n 'a configurable dataIdFromObject, like apollo-cache-inmemory.',\n );\n }\n },\n };\n\n return newContext;\n }\n\n // To support `@client @export(as: \"someVar\")` syntax, we'll first resolve\n // @client @export fields locally, then pass the resolved values back to be\n // used alongside the original operation variables.\n public async addExportedVariables(\n document: DocumentNode,\n variables: OperationVariables = {},\n context = {},\n ) {\n if (document) {\n return this.resolveDocument(\n document,\n this.buildRootValueFromCache(document, variables) || {},\n this.prepareContext(context),\n variables,\n ).then(data => ({\n ...variables,\n ...data.exportedVariables,\n }));\n }\n\n return {\n ...variables,\n };\n }\n\n public shouldForceResolvers(document: ASTNode) {\n let forceResolvers = false;\n visit(document, {\n Directive: {\n enter(node) {\n if (node.name.value === 'client' && node.arguments) {\n forceResolvers = node.arguments.some(\n arg =>\n arg.name.value === 'always' &&\n arg.value.kind === 'BooleanValue' &&\n arg.value.value === true,\n );\n if (forceResolvers) {\n return BREAK;\n }\n }\n },\n },\n });\n return forceResolvers;\n }\n\n // Query the cache and return matching data.\n private buildRootValueFromCache(\n document: DocumentNode,\n variables?: Record,\n ) {\n return this.cache.diff({\n query: buildQueryFromSelectionSet(document),\n variables,\n returnPartialData: true,\n optimistic: false,\n }).result;\n }\n\n private async resolveDocument(\n document: DocumentNode,\n rootValue: TData,\n context: any = {},\n variables: VariableMap = {},\n fragmentMatcher: FragmentMatcher = () => true,\n onlyRunForcedResolvers: boolean = false,\n ) {\n const mainDefinition = getMainDefinition(document);\n const fragments = getFragmentDefinitions(document);\n const fragmentMap = createFragmentMap(fragments);\n\n const definitionOperation = (mainDefinition as OperationDefinitionNode)\n .operation;\n\n const defaultOperationType = definitionOperation\n ? capitalizeFirstLetter(definitionOperation)\n : 'Query';\n\n const { cache, client } = this;\n const execContext: ExecContext = {\n fragmentMap,\n context: {\n ...context,\n cache,\n client,\n },\n variables,\n fragmentMatcher,\n defaultOperationType,\n exportedVariables: {},\n onlyRunForcedResolvers,\n };\n\n return this.resolveSelectionSet(\n mainDefinition.selectionSet,\n rootValue,\n execContext,\n ).then(result => ({\n result,\n exportedVariables: execContext.exportedVariables,\n }));\n }\n\n private async resolveSelectionSet(\n selectionSet: SelectionSetNode,\n rootValue: TData,\n execContext: ExecContext,\n ) {\n const { fragmentMap, context, variables } = execContext;\n const resultsToMerge: TData[] = [rootValue];\n\n const execute = async (selection: SelectionNode): Promise => {\n if (!shouldInclude(selection, variables)) {\n // Skip this entirely.\n return;\n }\n\n if (isField(selection)) {\n return this.resolveField(selection, rootValue, execContext).then(\n fieldResult => {\n if (typeof fieldResult !== 'undefined') {\n resultsToMerge.push({\n [resultKeyNameFromField(selection)]: fieldResult,\n } as TData);\n }\n },\n );\n }\n\n let fragment: InlineFragmentNode | FragmentDefinitionNode;\n\n if (isInlineFragment(selection)) {\n fragment = selection;\n } else {\n // This is a named fragment.\n fragment = fragmentMap[selection.name.value];\n invariant(fragment, `No fragment named ${selection.name.value}`);\n }\n\n if (fragment && fragment.typeCondition) {\n const typeCondition = fragment.typeCondition.name.value;\n if (execContext.fragmentMatcher(rootValue, typeCondition, context)) {\n return this.resolveSelectionSet(\n fragment.selectionSet,\n rootValue,\n execContext,\n ).then(fragmentResult => {\n resultsToMerge.push(fragmentResult);\n });\n }\n }\n };\n\n return Promise.all(selectionSet.selections.map(execute)).then(function() {\n return mergeDeepArray(resultsToMerge);\n });\n }\n\n private async resolveField(\n field: FieldNode,\n rootValue: any,\n execContext: ExecContext,\n ): Promise {\n const { variables } = execContext;\n const fieldName = field.name.value;\n const aliasedFieldName = resultKeyNameFromField(field);\n const aliasUsed = fieldName !== aliasedFieldName;\n const defaultResult = rootValue[aliasedFieldName] || rootValue[fieldName];\n let resultPromise = Promise.resolve(defaultResult);\n\n // Usually all local resolvers are run when passing through here, but\n // if we've specifically identified that we only want to run forced\n // resolvers (that is, resolvers for fields marked with\n // `@client(always: true)`), then we'll skip running non-forced resolvers.\n if (\n !execContext.onlyRunForcedResolvers ||\n this.shouldForceResolvers(field)\n ) {\n const resolverType =\n rootValue.__typename || execContext.defaultOperationType;\n const resolverMap = this.resolvers && this.resolvers[resolverType];\n if (resolverMap) {\n const resolve = resolverMap[aliasUsed ? fieldName : aliasedFieldName];\n if (resolve) {\n resultPromise = Promise.resolve(resolve(\n rootValue,\n argumentsObjectFromField(field, variables),\n execContext.context,\n { field },\n ));\n }\n }\n }\n\n return resultPromise.then((result = defaultResult) => {\n // If an @export directive is associated with the current field, store\n // the `as` export variable name and current result for later use.\n if (field.directives) {\n field.directives.forEach(directive => {\n if (directive.name.value === 'export' && directive.arguments) {\n directive.arguments.forEach(arg => {\n if (arg.name.value === 'as' && arg.value.kind === 'StringValue') {\n execContext.exportedVariables[arg.value.value] = result;\n }\n });\n }\n });\n }\n\n // Handle all scalar types here.\n if (!field.selectionSet) {\n return result;\n }\n\n // From here down, the field has a selection set, which means it's trying\n // to query a GraphQLObjectType.\n if (result == null) {\n // Basically any field in a GraphQL response can be null, or missing\n return result;\n }\n\n if (Array.isArray(result)) {\n return this.resolveSubSelectedArray(field, result, execContext);\n }\n\n // Returned value is an object, and the query has a sub-selection. Recurse.\n if (field.selectionSet) {\n return this.resolveSelectionSet(\n field.selectionSet,\n result,\n execContext,\n );\n }\n });\n }\n\n private resolveSubSelectedArray(\n field: FieldNode,\n result: any[],\n execContext: ExecContext,\n ): any {\n return Promise.all(\n result.map(item => {\n if (item === null) {\n return null;\n }\n\n // This is a nested array, recurse.\n if (Array.isArray(item)) {\n return this.resolveSubSelectedArray(field, item, execContext);\n }\n\n // This is an object, run the selection set on it.\n if (field.selectionSet) {\n return this.resolveSelectionSet(field.selectionSet, item, execContext);\n }\n }),\n );\n }\n}\n","export function capitalizeFirstLetter(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n","import { Observable, Observer, Subscription } from './Observable';\n\n// Returns a normal Observable that can have any number of subscribers,\n// while ensuring the original Observable gets subscribed to at most once.\nexport function multiplex(inner: Observable): Observable {\n const observers = new Set>();\n let sub: Subscription | null = null;\n return new Observable(observer => {\n observers.add(observer);\n sub = sub || inner.subscribe({\n next(value) {\n observers.forEach(obs => obs.next && obs.next(value));\n },\n error(error) {\n observers.forEach(obs => obs.error && obs.error(error));\n },\n complete() {\n observers.forEach(obs => obs.complete && obs.complete());\n },\n });\n return () => {\n if (observers.delete(observer) && !observers.size && sub) {\n sub.unsubscribe();\n sub = null;\n }\n };\n });\n}\n\n// Like Observable.prototype.map, except that the mapping function can\n// optionally return a Promise (or be async).\nexport function asyncMap(\n observable: Observable,\n mapFn: (value: V) => R | Promise,\n): Observable {\n return new Observable(observer => {\n const { next, error, complete } = observer;\n let activeNextCount = 0;\n let completed = false;\n\n const handler: Observer = {\n next(value) {\n ++activeNextCount;\n new Promise(resolve => {\n resolve(mapFn(value));\n }).then(\n result => {\n --activeNextCount;\n next && next.call(observer, result);\n completed && handler.complete!();\n },\n e => {\n --activeNextCount;\n error && error.call(observer, e);\n },\n );\n },\n error(e) {\n error && error.call(observer, e);\n },\n complete() {\n completed = true;\n if (!activeNextCount) {\n complete && complete.call(observer);\n }\n },\n };\n\n const sub = observable.subscribe(handler);\n return () => sub.unsubscribe();\n });\n}\n","import { execute, ApolloLink, FetchResult } from 'apollo-link';\nimport { ExecutionResult, DocumentNode } from 'graphql';\nimport { Cache } from 'apollo-cache';\nimport {\n getDefaultValues,\n getOperationDefinition,\n getOperationName,\n hasDirectives,\n graphQLResultHasError,\n hasClientExports,\n removeConnectionDirectiveFromDocument,\n canUseWeakMap,\n} from 'apollo-utilities';\n\nimport { invariant, InvariantError } from 'ts-invariant';\n\nimport { isApolloError, ApolloError } from '../errors/ApolloError';\nimport { Observer, Subscription, Observable } from '../util/Observable';\nimport { QueryWithUpdater, DataStore } from '../data/store';\nimport { MutationStore } from '../data/mutations';\nimport { QueryStore, QueryStoreValue } from '../data/queries';\n\nimport {\n QueryOptions,\n WatchQueryOptions,\n SubscriptionOptions,\n MutationOptions,\n ErrorPolicy,\n} from './watchQueryOptions';\nimport { ObservableQuery } from './ObservableQuery';\nimport { NetworkStatus, isNetworkRequestInFlight } from './networkStatus';\nimport {\n QueryListener,\n ApolloQueryResult,\n FetchType,\n OperationVariables,\n} from './types';\nimport { LocalState } from './LocalState';\nimport { asyncMap, multiplex } from '../util/observables';\nimport { isNonEmptyArray } from '../util/arrays';\n\nconst { hasOwnProperty } = Object.prototype;\n\nexport interface QueryInfo {\n listeners: Set;\n invalidated: boolean;\n newData: Cache.DiffResult | null;\n document: DocumentNode | null;\n lastRequestId: number;\n // A map going from queryId to an observer for a query issued by watchQuery. We use\n // these to keep track of queries that are inflight and error on the observers associated\n // with them in case of some destabalizing action (e.g. reset of the Apollo store).\n observableQuery: ObservableQuery | null;\n subscriptions: Set;\n cancel?: () => void;\n}\n\nexport class QueryManager {\n public link: ApolloLink;\n public mutationStore: MutationStore = new MutationStore();\n public queryStore: QueryStore = new QueryStore();\n public dataStore: DataStore;\n public readonly assumeImmutableResults: boolean;\n\n private queryDeduplication: boolean;\n private clientAwareness: Record = {};\n private localState: LocalState;\n\n private onBroadcast: () => void;\n\n private ssrMode: boolean;\n\n // let's not start at zero to avoid pain with bad checks\n private idCounter = 1;\n\n // XXX merge with ObservableQuery but that needs to be expanded to support mutations and\n // subscriptions as well\n private queries: Map = new Map();\n\n // A map of Promise reject functions for fetchQuery promises that have not\n // yet been resolved, used to keep track of in-flight queries so that we can\n // reject them in case a destabilizing event occurs (e.g. Apollo store reset).\n // The key is in the format of `query:${queryId}` or `fetchRequest:${queryId}`,\n // depending on where the promise's rejection function was created from.\n private fetchQueryRejectFns = new Map();\n\n constructor({\n link,\n queryDeduplication = false,\n store,\n onBroadcast = () => undefined,\n ssrMode = false,\n clientAwareness = {},\n localState,\n assumeImmutableResults,\n }: {\n link: ApolloLink;\n queryDeduplication?: boolean;\n store: DataStore;\n onBroadcast?: () => void;\n ssrMode?: boolean;\n clientAwareness?: Record;\n localState?: LocalState;\n assumeImmutableResults?: boolean;\n }) {\n this.link = link;\n this.queryDeduplication = queryDeduplication;\n this.dataStore = store;\n this.onBroadcast = onBroadcast;\n this.clientAwareness = clientAwareness;\n this.localState = localState || new LocalState({ cache: store.getCache() });\n this.ssrMode = ssrMode;\n this.assumeImmutableResults = !!assumeImmutableResults;\n }\n\n /**\n * Call this method to terminate any active query processes, making it safe\n * to dispose of this QueryManager instance.\n */\n public stop() {\n this.queries.forEach((_info, queryId) => {\n this.stopQueryNoBroadcast(queryId);\n });\n\n this.fetchQueryRejectFns.forEach(reject => {\n reject(\n new InvariantError('QueryManager stopped while query was in flight'),\n );\n });\n }\n\n public async mutate({\n mutation,\n variables,\n optimisticResponse,\n updateQueries: updateQueriesByName,\n refetchQueries = [],\n awaitRefetchQueries = false,\n update: updateWithProxyFn,\n errorPolicy = 'none',\n fetchPolicy,\n context = {},\n }: MutationOptions): Promise> {\n invariant(\n mutation,\n 'mutation option is required. You must specify your GraphQL document in the mutation option.',\n );\n\n invariant(\n !fetchPolicy || fetchPolicy === 'no-cache',\n \"fetchPolicy for mutations currently only supports the 'no-cache' policy\"\n );\n\n const mutationId = this.generateQueryId();\n mutation = this.transform(mutation).document;\n\n this.setQuery(mutationId, () => ({ document: mutation }));\n\n variables = this.getVariables(mutation, variables);\n\n if (this.transform(mutation).hasClientExports) {\n variables = await this.localState.addExportedVariables(mutation, variables, context);\n }\n\n // Create a map of update queries by id to the query instead of by name.\n const generateUpdateQueriesInfo: () => {\n [queryId: string]: QueryWithUpdater;\n } = () => {\n const ret: { [queryId: string]: QueryWithUpdater } = {};\n\n if (updateQueriesByName) {\n this.queries.forEach(({ observableQuery }, queryId) => {\n if (observableQuery) {\n const { queryName } = observableQuery;\n if (\n queryName &&\n hasOwnProperty.call(updateQueriesByName, queryName)\n ) {\n ret[queryId] = {\n updater: updateQueriesByName[queryName],\n query: this.queryStore.get(queryId),\n };\n }\n }\n });\n }\n\n return ret;\n };\n\n this.mutationStore.initMutation(\n mutationId,\n mutation,\n variables,\n );\n\n this.dataStore.markMutationInit({\n mutationId,\n document: mutation,\n variables,\n updateQueries: generateUpdateQueriesInfo(),\n update: updateWithProxyFn,\n optimisticResponse,\n });\n\n this.broadcastQueries();\n\n const self = this;\n\n return new Promise((resolve, reject) => {\n let storeResult: FetchResult | null;\n let error: ApolloError;\n\n self.getObservableFromLink(\n mutation,\n {\n ...context,\n optimisticResponse,\n },\n variables,\n false,\n ).subscribe({\n next(result: ExecutionResult) {\n if (graphQLResultHasError(result) && errorPolicy === 'none') {\n error = new ApolloError({\n graphQLErrors: result.errors,\n });\n return;\n }\n\n self.mutationStore.markMutationResult(mutationId);\n\n if (fetchPolicy !== 'no-cache') {\n self.dataStore.markMutationResult({\n mutationId,\n result,\n document: mutation,\n variables,\n updateQueries: generateUpdateQueriesInfo(),\n update: updateWithProxyFn,\n });\n }\n\n storeResult = result as FetchResult;\n },\n\n error(err: Error) {\n self.mutationStore.markMutationError(mutationId, err);\n self.dataStore.markMutationComplete({\n mutationId,\n optimisticResponse,\n });\n self.broadcastQueries();\n self.setQuery(mutationId, () => ({ document: null }));\n reject(\n new ApolloError({\n networkError: err,\n }),\n );\n },\n\n complete() {\n if (error) {\n self.mutationStore.markMutationError(mutationId, error);\n }\n\n self.dataStore.markMutationComplete({\n mutationId,\n optimisticResponse,\n });\n\n self.broadcastQueries();\n\n if (error) {\n reject(error);\n return;\n }\n\n // allow for conditional refetches\n // XXX do we want to make this the only API one day?\n if (typeof refetchQueries === 'function') {\n refetchQueries = refetchQueries(storeResult as ExecutionResult);\n }\n\n const refetchQueryPromises: Promise<\n ApolloQueryResult[] | ApolloQueryResult<{}>\n >[] = [];\n\n if (isNonEmptyArray(refetchQueries)) {\n refetchQueries.forEach(refetchQuery => {\n if (typeof refetchQuery === 'string') {\n self.queries.forEach(({ observableQuery }) => {\n if (\n observableQuery &&\n observableQuery.queryName === refetchQuery\n ) {\n refetchQueryPromises.push(observableQuery.refetch());\n }\n });\n } else {\n const queryOptions: QueryOptions = {\n query: refetchQuery.query,\n variables: refetchQuery.variables,\n fetchPolicy: 'network-only',\n };\n\n if (refetchQuery.context) {\n queryOptions.context = refetchQuery.context;\n }\n\n refetchQueryPromises.push(self.query(queryOptions));\n }\n });\n }\n\n Promise.all(\n awaitRefetchQueries ? refetchQueryPromises : [],\n ).then(() => {\n self.setQuery(mutationId, () => ({ document: null }));\n\n if (\n errorPolicy === 'ignore' &&\n storeResult &&\n graphQLResultHasError(storeResult)\n ) {\n delete storeResult.errors;\n }\n\n resolve(storeResult!);\n });\n },\n });\n });\n }\n\n public async fetchQuery(\n queryId: string,\n options: WatchQueryOptions,\n fetchType?: FetchType,\n // This allows us to track if this is a query spawned by a `fetchMore`\n // call for another query. We need this data to compute the `fetchMore`\n // network status for the query this is fetching for.\n fetchMoreForQueryId?: string,\n ): Promise> {\n const {\n metadata = null,\n fetchPolicy = 'cache-first', // cache-first is the default fetch policy.\n context = {},\n } = options;\n\n const query = this.transform(options.query).document;\n\n let variables = this.getVariables(query, options.variables);\n\n if (this.transform(query).hasClientExports) {\n variables = await this.localState.addExportedVariables(query, variables, context);\n }\n\n options = { ...options, variables };\n\n let storeResult: any;\n const isNetworkOnly =\n fetchPolicy === 'network-only' || fetchPolicy === 'no-cache';\n let needToFetch = isNetworkOnly;\n\n // Unless we are completely skipping the cache, we want to diff the query\n // against the cache before we fetch it from the network interface.\n if (!isNetworkOnly) {\n const { complete, result } = this.dataStore.getCache().diff({\n query,\n variables,\n returnPartialData: true,\n optimistic: false,\n });\n\n // If we're in here, only fetch if we have missing fields\n needToFetch = !complete || fetchPolicy === 'cache-and-network';\n storeResult = result;\n }\n\n let shouldFetch =\n needToFetch && fetchPolicy !== 'cache-only' && fetchPolicy !== 'standby';\n\n // we need to check to see if this is an operation that uses the @live directive\n if (hasDirectives(['live'], query)) shouldFetch = true;\n\n const requestId = this.idCounter++;\n\n // set up a watcher to listen to cache updates\n const cancel = fetchPolicy !== 'no-cache'\n ? this.updateQueryWatch(queryId, query, options)\n : undefined;\n\n // Initialize query in store with unique requestId\n this.setQuery(queryId, () => ({\n document: query,\n lastRequestId: requestId,\n invalidated: true,\n cancel,\n }));\n\n this.invalidate(fetchMoreForQueryId);\n\n this.queryStore.initQuery({\n queryId,\n document: query,\n storePreviousVariables: shouldFetch,\n variables,\n isPoll: fetchType === FetchType.poll,\n isRefetch: fetchType === FetchType.refetch,\n metadata,\n fetchMoreForQueryId,\n });\n\n this.broadcastQueries();\n\n if (shouldFetch) {\n const networkResult = this.fetchRequest({\n requestId,\n queryId,\n document: query,\n options,\n fetchMoreForQueryId,\n }).catch(error => {\n // This is for the benefit of `refetch` promises, which currently don't get their errors\n // through the store like watchQuery observers do\n if (isApolloError(error)) {\n throw error;\n } else {\n if (requestId >= this.getQuery(queryId).lastRequestId) {\n this.queryStore.markQueryError(queryId, error, fetchMoreForQueryId);\n this.invalidate(queryId);\n this.invalidate(fetchMoreForQueryId);\n this.broadcastQueries();\n }\n throw new ApolloError({ networkError: error });\n }\n });\n\n // we don't return the promise for cache-and-network since it is already\n // returned below from the cache\n if (fetchPolicy !== 'cache-and-network') {\n return networkResult;\n }\n\n // however we need to catch the error so it isn't unhandled in case of\n // network error\n networkResult.catch(() => {});\n }\n\n // If there is no part of the query we need to fetch from the server (or,\n // fetchPolicy is cache-only), we just write the store result as the final result.\n this.queryStore.markQueryResultClient(queryId, !shouldFetch);\n this.invalidate(queryId);\n this.invalidate(fetchMoreForQueryId);\n\n if (this.transform(query).hasForcedResolvers) {\n return this.localState.runResolvers({\n document: query,\n remoteResult: { data: storeResult },\n context,\n variables,\n onlyRunForcedResolvers: true,\n }).then((result: FetchResult) => {\n this.markQueryResult(\n queryId,\n result,\n options,\n fetchMoreForQueryId,\n );\n this.broadcastQueries();\n return result;\n });\n }\n\n this.broadcastQueries();\n\n // If we have no query to send to the server, we should return the result\n // found within the store.\n return { data: storeResult };\n }\n\n private markQueryResult(\n queryId: string,\n result: ExecutionResult,\n {\n fetchPolicy,\n variables,\n errorPolicy,\n }: WatchQueryOptions,\n fetchMoreForQueryId?: string,\n ) {\n if (fetchPolicy === 'no-cache') {\n this.setQuery(queryId, () => ({\n newData: { result: result.data, complete: true },\n }));\n } else {\n this.dataStore.markQueryResult(\n result,\n this.getQuery(queryId).document!,\n variables,\n fetchMoreForQueryId,\n errorPolicy === 'ignore' || errorPolicy === 'all',\n );\n }\n }\n\n // Returns a query listener that will update the given observer based on the\n // results (or lack thereof) for a particular query.\n public queryListenerForObserver(\n queryId: string,\n options: WatchQueryOptions,\n observer: Observer>,\n ): QueryListener {\n function invoke(method: 'next' | 'error', argument: any) {\n if (observer[method]) {\n try {\n observer[method]!(argument);\n } catch (e) {\n invariant.error(e);\n }\n } else if (method === 'error') {\n invariant.error(argument);\n }\n }\n\n return (\n queryStoreValue: QueryStoreValue,\n newData?: Cache.DiffResult,\n ) => {\n // we're going to take a look at the data, so the query is no longer invalidated\n this.invalidate(queryId, false);\n\n // The query store value can be undefined in the event of a store\n // reset.\n if (!queryStoreValue) return;\n\n const { observableQuery, document } = this.getQuery(queryId);\n\n const fetchPolicy = observableQuery\n ? observableQuery.options.fetchPolicy\n : options.fetchPolicy;\n\n // don't watch the store for queries on standby\n if (fetchPolicy === 'standby') return;\n\n const loading = isNetworkRequestInFlight(queryStoreValue.networkStatus);\n const lastResult = observableQuery && observableQuery.getLastResult();\n\n const networkStatusChanged = !!(\n lastResult &&\n lastResult.networkStatus !== queryStoreValue.networkStatus\n );\n\n const shouldNotifyIfLoading =\n options.returnPartialData ||\n (!newData && queryStoreValue.previousVariables) ||\n (networkStatusChanged && options.notifyOnNetworkStatusChange) ||\n fetchPolicy === 'cache-only' ||\n fetchPolicy === 'cache-and-network';\n\n if (loading && !shouldNotifyIfLoading) {\n return;\n }\n\n const hasGraphQLErrors = isNonEmptyArray(queryStoreValue.graphQLErrors);\n\n const errorPolicy: ErrorPolicy = observableQuery\n && observableQuery.options.errorPolicy\n || options.errorPolicy\n || 'none';\n\n // If we have either a GraphQL error or a network error, we create\n // an error and tell the observer about it.\n if (errorPolicy === 'none' && hasGraphQLErrors || queryStoreValue.networkError) {\n return invoke('error', new ApolloError({\n graphQLErrors: queryStoreValue.graphQLErrors,\n networkError: queryStoreValue.networkError,\n }));\n }\n\n try {\n let data: any;\n let isMissing: boolean;\n\n if (newData) {\n // As long as we're using the cache, clear out the latest\n // `newData`, since it will now become the current data. We need\n // to keep the `newData` stored with the query when using\n // `no-cache` since `getCurrentQueryResult` attemps to pull from\n // `newData` first, following by trying the cache (which won't\n // find a hit for `no-cache`).\n if (fetchPolicy !== 'no-cache' && fetchPolicy !== 'network-only') {\n this.setQuery(queryId, () => ({ newData: null }));\n }\n\n data = newData.result;\n isMissing = !newData.complete;\n } else {\n const lastError = observableQuery && observableQuery.getLastError();\n const errorStatusChanged =\n errorPolicy !== 'none' &&\n (lastError && lastError.graphQLErrors) !==\n queryStoreValue.graphQLErrors;\n\n if (lastResult && lastResult.data && !errorStatusChanged) {\n data = lastResult.data;\n isMissing = false;\n } else {\n const diffResult = this.dataStore.getCache().diff({\n query: document as DocumentNode,\n variables:\n queryStoreValue.previousVariables ||\n queryStoreValue.variables,\n returnPartialData: true,\n optimistic: true,\n });\n\n data = diffResult.result;\n isMissing = !diffResult.complete;\n }\n }\n\n // If there is some data missing and the user has told us that they\n // do not tolerate partial data then we want to return the previous\n // result and mark it as stale.\n const stale = isMissing && !(\n options.returnPartialData ||\n fetchPolicy === 'cache-only'\n );\n\n const resultFromStore: ApolloQueryResult = {\n data: stale ? lastResult && lastResult.data : data,\n loading,\n networkStatus: queryStoreValue.networkStatus,\n stale,\n };\n\n // if the query wants updates on errors we need to add it to the result\n if (errorPolicy === 'all' && hasGraphQLErrors) {\n resultFromStore.errors = queryStoreValue.graphQLErrors;\n }\n\n invoke('next', resultFromStore);\n\n } catch (networkError) {\n invoke('error', new ApolloError({ networkError }));\n }\n };\n }\n\n private transformCache = new (canUseWeakMap ? WeakMap : Map)<\n DocumentNode,\n Readonly<{\n document: Readonly;\n hasClientExports: boolean;\n hasForcedResolvers: boolean;\n clientQuery: Readonly | null;\n serverQuery: Readonly | null;\n defaultVars: Readonly;\n }>\n >();\n\n public transform(document: DocumentNode) {\n const { transformCache } = this;\n\n if (!transformCache.has(document)) {\n const cache = this.dataStore.getCache();\n const transformed = cache.transformDocument(document);\n const forLink = removeConnectionDirectiveFromDocument(\n cache.transformForLink(transformed));\n\n const clientQuery = this.localState.clientQuery(transformed);\n const serverQuery = this.localState.serverQuery(forLink);\n\n const cacheEntry = {\n document: transformed,\n // TODO These two calls (hasClientExports and shouldForceResolvers)\n // could probably be merged into a single traversal.\n hasClientExports: hasClientExports(transformed),\n hasForcedResolvers: this.localState.shouldForceResolvers(transformed),\n clientQuery,\n serverQuery,\n defaultVars: getDefaultValues(\n getOperationDefinition(transformed)\n ) as OperationVariables,\n };\n\n const add = (doc: DocumentNode | null) => {\n if (doc && !transformCache.has(doc)) {\n transformCache.set(doc, cacheEntry);\n }\n }\n // Add cacheEntry to the transformCache using several different keys,\n // since any one of these documents could end up getting passed to the\n // transform method again in the future.\n add(document);\n add(transformed);\n add(clientQuery);\n add(serverQuery);\n }\n\n return transformCache.get(document)!;\n }\n\n private getVariables(\n document: DocumentNode,\n variables?: OperationVariables,\n ): OperationVariables {\n return {\n ...this.transform(document).defaultVars,\n ...variables,\n };\n }\n\n // The shouldSubscribe option is a temporary fix that tells us whether watchQuery was called\n // directly (i.e. through ApolloClient) or through the query method within QueryManager.\n // Currently, the query method uses watchQuery in order to handle non-network errors correctly\n // but we don't want to keep track observables issued for the query method since those aren't\n // supposed to be refetched in the event of a store reset. Once we unify error handling for\n // network errors and non-network errors, the shouldSubscribe option will go away.\n\n public watchQuery(\n options: WatchQueryOptions,\n shouldSubscribe = true,\n ): ObservableQuery {\n invariant(\n options.fetchPolicy !== 'standby',\n 'client.watchQuery cannot be called with fetchPolicy set to \"standby\"',\n );\n\n // assign variable default values if supplied\n options.variables = this.getVariables(options.query, options.variables);\n\n if (typeof options.notifyOnNetworkStatusChange === 'undefined') {\n options.notifyOnNetworkStatusChange = false;\n }\n\n let transformedOptions = { ...options } as WatchQueryOptions;\n\n return new ObservableQuery({\n queryManager: this,\n options: transformedOptions,\n shouldSubscribe: shouldSubscribe,\n });\n }\n\n public query(options: QueryOptions): Promise> {\n invariant(\n options.query,\n 'query option is required. You must specify your GraphQL document ' +\n 'in the query option.',\n );\n\n invariant(\n options.query.kind === 'Document',\n 'You must wrap the query string in a \"gql\" tag.',\n );\n\n invariant(\n !(options as any).returnPartialData,\n 'returnPartialData option only supported on watchQuery.',\n );\n\n invariant(\n !(options as any).pollInterval,\n 'pollInterval option only supported on watchQuery.',\n );\n\n return new Promise>((resolve, reject) => {\n const watchedQuery = this.watchQuery(options, false);\n this.fetchQueryRejectFns.set(`query:${watchedQuery.queryId}`, reject);\n watchedQuery\n .result()\n .then(resolve, reject)\n // Since neither resolve nor reject throw or return a value, this .then\n // handler is guaranteed to execute. Note that it doesn't really matter\n // when we remove the reject function from this.fetchQueryRejectFns,\n // since resolve and reject are mutually idempotent. In fact, it would\n // not be incorrect to let reject functions accumulate over time; it's\n // just a waste of memory.\n .then(() =>\n this.fetchQueryRejectFns.delete(`query:${watchedQuery.queryId}`),\n );\n });\n }\n\n public generateQueryId() {\n return String(this.idCounter++);\n }\n\n public stopQueryInStore(queryId: string) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.broadcastQueries();\n }\n\n private stopQueryInStoreNoBroadcast(queryId: string) {\n this.stopPollingQuery(queryId);\n this.queryStore.stopQuery(queryId);\n this.invalidate(queryId);\n }\n\n public addQueryListener(queryId: string, listener: QueryListener) {\n this.setQuery(queryId, ({ listeners }) => {\n listeners.add(listener);\n return { invalidated: false };\n });\n }\n\n public updateQueryWatch(\n queryId: string,\n document: DocumentNode,\n options: WatchQueryOptions,\n ) {\n const { cancel } = this.getQuery(queryId);\n if (cancel) cancel();\n const previousResult = () => {\n let previousResult = null;\n const { observableQuery } = this.getQuery(queryId);\n if (observableQuery) {\n const lastResult = observableQuery.getLastResult();\n if (lastResult) {\n previousResult = lastResult.data;\n }\n }\n\n return previousResult;\n };\n return this.dataStore.getCache().watch({\n query: document as DocumentNode,\n variables: options.variables,\n optimistic: true,\n previousResult,\n callback: newData => {\n this.setQuery(queryId, () => ({ invalidated: true, newData }));\n },\n });\n }\n\n // Adds an ObservableQuery to this.observableQueries and to this.observableQueriesByName.\n public addObservableQuery(\n queryId: string,\n observableQuery: ObservableQuery,\n ) {\n this.setQuery(queryId, () => ({ observableQuery }));\n }\n\n public removeObservableQuery(queryId: string) {\n const { cancel } = this.getQuery(queryId);\n this.setQuery(queryId, () => ({ observableQuery: null }));\n if (cancel) cancel();\n }\n\n public clearStore(): Promise {\n // Before we have sent the reset action to the store,\n // we can no longer rely on the results returned by in-flight\n // requests since these may depend on values that previously existed\n // in the data portion of the store. So, we cancel the promises and observers\n // that we have issued so far and not yet resolved (in the case of\n // queries).\n this.fetchQueryRejectFns.forEach(reject => {\n reject(new InvariantError(\n 'Store reset while query was in flight (not completed in link chain)',\n ));\n });\n\n const resetIds: string[] = [];\n this.queries.forEach(({ observableQuery }, queryId) => {\n if (observableQuery) resetIds.push(queryId);\n });\n\n this.queryStore.reset(resetIds);\n this.mutationStore.reset();\n\n // begin removing data from the store\n return this.dataStore.reset();\n }\n\n public resetStore(): Promise[]> {\n // Similarly, we have to have to refetch each of the queries currently being\n // observed. We refetch instead of error'ing on these since the assumption is that\n // resetting the store doesn't eliminate the need for the queries currently being\n // watched. If there is an existing query in flight when the store is reset,\n // the promise for it will be rejected and its results will not be written to the\n // store.\n return this.clearStore().then(() => {\n return this.reFetchObservableQueries();\n });\n }\n\n public reFetchObservableQueries(\n includeStandby: boolean = false,\n ): Promise[]> {\n const observableQueryPromises: Promise>[] = [];\n\n this.queries.forEach(({ observableQuery }, queryId) => {\n if (observableQuery) {\n const fetchPolicy = observableQuery.options.fetchPolicy;\n\n observableQuery.resetLastResults();\n if (\n fetchPolicy !== 'cache-only' &&\n (includeStandby || fetchPolicy !== 'standby')\n ) {\n observableQueryPromises.push(observableQuery.refetch());\n }\n\n this.setQuery(queryId, () => ({ newData: null }));\n this.invalidate(queryId);\n }\n });\n\n this.broadcastQueries();\n\n return Promise.all(observableQueryPromises);\n }\n\n public observeQuery(\n queryId: string,\n options: WatchQueryOptions,\n observer: Observer>,\n ) {\n this.addQueryListener(\n queryId,\n this.queryListenerForObserver(queryId, options, observer),\n );\n return this.fetchQuery(queryId, options);\n }\n\n public startQuery(\n queryId: string,\n options: WatchQueryOptions,\n listener: QueryListener,\n ) {\n invariant.warn(\"The QueryManager.startQuery method has been deprecated\");\n\n this.addQueryListener(queryId, listener);\n\n this.fetchQuery(queryId, options)\n // `fetchQuery` returns a Promise. In case of a failure it should be caucht or else the\n // console will show an `Uncaught (in promise)` message. Ignore the error for now.\n .catch(() => undefined);\n\n return queryId;\n }\n\n public startGraphQLSubscription({\n query,\n fetchPolicy,\n variables,\n }: SubscriptionOptions): Observable> {\n query = this.transform(query).document;\n variables = this.getVariables(query, variables);\n\n const makeObservable = (variables: OperationVariables) =>\n this.getObservableFromLink(\n query,\n {},\n variables,\n false,\n ).map(result => {\n if (!fetchPolicy || fetchPolicy !== 'no-cache') {\n this.dataStore.markSubscriptionResult(\n result,\n query,\n variables,\n );\n this.broadcastQueries();\n }\n\n if (graphQLResultHasError(result)) {\n throw new ApolloError({\n graphQLErrors: result.errors,\n });\n }\n\n return result;\n });\n\n if (this.transform(query).hasClientExports) {\n const observablePromise = this.localState.addExportedVariables(\n query,\n variables,\n ).then(makeObservable);\n\n return new Observable>(observer => {\n let sub: Subscription | null = null;\n observablePromise.then(\n observable => sub = observable.subscribe(observer),\n observer.error,\n );\n return () => sub && sub.unsubscribe();\n });\n }\n\n return makeObservable(variables);\n }\n\n public stopQuery(queryId: string) {\n this.stopQueryNoBroadcast(queryId);\n this.broadcastQueries();\n }\n\n private stopQueryNoBroadcast(queryId: string) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.removeQuery(queryId);\n }\n\n public removeQuery(queryId: string) {\n // teardown all links\n // Both `QueryManager.fetchRequest` and `QueryManager.query` create separate promises\n // that each add their reject functions to fetchQueryRejectFns.\n // A query created with `QueryManager.query()` could trigger a `QueryManager.fetchRequest`.\n // The same queryId could have two rejection fns for two promises\n this.fetchQueryRejectFns.delete(`query:${queryId}`);\n this.fetchQueryRejectFns.delete(`fetchRequest:${queryId}`);\n this.getQuery(queryId).subscriptions.forEach(x => x.unsubscribe());\n this.queries.delete(queryId);\n }\n\n public getCurrentQueryResult(\n observableQuery: ObservableQuery,\n optimistic: boolean = true,\n ): {\n data: T | undefined;\n partial: boolean;\n } {\n const { variables, query, fetchPolicy, returnPartialData } = observableQuery.options;\n const lastResult = observableQuery.getLastResult();\n const { newData } = this.getQuery(observableQuery.queryId);\n\n if (newData && newData.complete) {\n return { data: newData.result, partial: false };\n }\n\n if (fetchPolicy === 'no-cache' || fetchPolicy === 'network-only') {\n return { data: undefined, partial: false };\n }\n\n const { result, complete } = this.dataStore.getCache().diff({\n query,\n variables,\n previousResult: lastResult ? lastResult.data : undefined,\n returnPartialData: true,\n optimistic,\n });\n\n return {\n data: (complete || returnPartialData) ? result : void 0,\n partial: !complete,\n };\n }\n\n public getQueryWithPreviousResult(\n queryIdOrObservable: string | ObservableQuery,\n ): {\n previousResult: any;\n variables: TVariables | undefined;\n document: DocumentNode;\n } {\n let observableQuery: ObservableQuery;\n if (typeof queryIdOrObservable === 'string') {\n const { observableQuery: foundObserveableQuery } = this.getQuery(\n queryIdOrObservable,\n );\n invariant(\n foundObserveableQuery,\n `ObservableQuery with this id doesn't exist: ${queryIdOrObservable}`\n );\n observableQuery = foundObserveableQuery!;\n } else {\n observableQuery = queryIdOrObservable;\n }\n\n const { variables, query } = observableQuery.options;\n return {\n previousResult: this.getCurrentQueryResult(observableQuery, false).data,\n variables,\n document: query,\n };\n }\n\n public broadcastQueries() {\n this.onBroadcast();\n this.queries.forEach((info, id) => {\n if (info.invalidated) {\n info.listeners.forEach(listener => {\n // it's possible for the listener to be undefined if the query is being stopped\n // See here for more detail: https://github.com/apollostack/apollo-client/issues/231\n if (listener) {\n listener(this.queryStore.get(id), info.newData);\n }\n });\n }\n });\n }\n\n public getLocalState(): LocalState {\n return this.localState;\n }\n\n private inFlightLinkObservables = new Map<\n DocumentNode,\n Map>\n >();\n\n private getObservableFromLink(\n query: DocumentNode,\n context: any,\n variables?: OperationVariables,\n deduplication: boolean = this.queryDeduplication,\n ): Observable> {\n let observable: Observable>;\n\n const { serverQuery } = this.transform(query);\n if (serverQuery) {\n const { inFlightLinkObservables, link } = this;\n\n const operation = {\n query: serverQuery,\n variables,\n operationName: getOperationName(serverQuery) || void 0,\n context: this.prepareContext({\n ...context,\n forceFetch: !deduplication\n }),\n };\n\n context = operation.context;\n\n if (deduplication) {\n const byVariables = inFlightLinkObservables.get(serverQuery) || new Map();\n inFlightLinkObservables.set(serverQuery, byVariables);\n\n const varJson = JSON.stringify(variables);\n observable = byVariables.get(varJson);\n\n if (!observable) {\n byVariables.set(\n varJson,\n observable = multiplex(\n execute(link, operation) as Observable>\n )\n );\n\n const cleanup = () => {\n byVariables.delete(varJson);\n if (!byVariables.size) inFlightLinkObservables.delete(serverQuery);\n cleanupSub.unsubscribe();\n };\n\n const cleanupSub = observable.subscribe({\n next: cleanup,\n error: cleanup,\n complete: cleanup,\n });\n }\n\n } else {\n observable = multiplex(execute(link, operation) as Observable>);\n }\n } else {\n observable = Observable.of({ data: {} } as FetchResult);\n context = this.prepareContext(context);\n }\n\n const { clientQuery } = this.transform(query);\n if (clientQuery) {\n observable = asyncMap(observable, result => {\n return this.localState.runResolvers({\n document: clientQuery,\n remoteResult: result,\n context,\n variables,\n });\n });\n }\n\n return observable;\n }\n\n // Takes a request id, query id, a query document and information associated with the query\n // and send it to the network interface. Returns\n // a promise for the result associated with that request.\n private fetchRequest({\n requestId,\n queryId,\n document,\n options,\n fetchMoreForQueryId,\n }: {\n requestId: number;\n queryId: string;\n document: DocumentNode;\n options: WatchQueryOptions;\n fetchMoreForQueryId?: string;\n }): Promise> {\n const { variables, errorPolicy = 'none', fetchPolicy } = options;\n let resultFromStore: any;\n let errorsFromStore: any;\n\n return new Promise>((resolve, reject) => {\n const observable = this.getObservableFromLink(\n document,\n options.context,\n variables,\n );\n\n const fqrfId = `fetchRequest:${queryId}`;\n this.fetchQueryRejectFns.set(fqrfId, reject);\n\n const cleanup = () => {\n this.fetchQueryRejectFns.delete(fqrfId);\n this.setQuery(queryId, ({ subscriptions }) => {\n subscriptions.delete(subscription);\n });\n };\n\n const subscription = observable.map((result: ExecutionResult) => {\n if (requestId >= this.getQuery(queryId).lastRequestId) {\n this.markQueryResult(\n queryId,\n result,\n options,\n fetchMoreForQueryId,\n );\n\n this.queryStore.markQueryResult(\n queryId,\n result,\n fetchMoreForQueryId,\n );\n\n this.invalidate(queryId);\n this.invalidate(fetchMoreForQueryId);\n\n this.broadcastQueries();\n }\n\n if (errorPolicy === 'none' && isNonEmptyArray(result.errors)) {\n return reject(new ApolloError({\n graphQLErrors: result.errors,\n }));\n }\n\n if (errorPolicy === 'all') {\n errorsFromStore = result.errors;\n }\n\n if (fetchMoreForQueryId || fetchPolicy === 'no-cache') {\n // We don't write fetchMore results to the store because this would overwrite\n // the original result in case an @connection directive is used.\n resultFromStore = result.data;\n } else {\n // ensure result is combined with data already in store\n const { result, complete } = this.dataStore.getCache().diff({\n variables,\n query: document,\n optimistic: false,\n returnPartialData: true,\n });\n\n if (complete || options.returnPartialData) {\n resultFromStore = result;\n }\n }\n }).subscribe({\n error(error: ApolloError) {\n cleanup();\n reject(error);\n },\n\n complete() {\n cleanup();\n resolve({\n data: resultFromStore,\n errors: errorsFromStore,\n loading: false,\n networkStatus: NetworkStatus.ready,\n stale: false,\n });\n },\n });\n\n this.setQuery(queryId, ({ subscriptions }) => {\n subscriptions.add(subscription);\n });\n });\n }\n\n private getQuery(queryId: string) {\n return (\n this.queries.get(queryId) || {\n listeners: new Set(),\n invalidated: false,\n document: null,\n newData: null,\n lastRequestId: 1,\n observableQuery: null,\n subscriptions: new Set(),\n }\n );\n }\n\n private setQuery(\n queryId: string,\n updater: (prev: QueryInfo) => Pick | void,\n ) {\n const prev = this.getQuery(queryId);\n const newInfo = { ...prev, ...updater(prev) };\n this.queries.set(queryId, newInfo);\n }\n\n private invalidate(\n queryId: string | undefined,\n invalidated = true,\n ) {\n if (queryId) {\n this.setQuery(queryId, () => ({ invalidated }));\n }\n }\n\n private prepareContext(context = {}) {\n const newContext = this.localState.prepareContext(context);\n return {\n ...newContext,\n clientAwareness: this.clientAwareness,\n };\n }\n\n public checkInFlight(queryId: string) {\n const query = this.queryStore.get(queryId);\n\n return (\n query &&\n query.networkStatus !== NetworkStatus.ready &&\n query.networkStatus !== NetworkStatus.error\n );\n }\n\n // Map from client ID to { interval, options }.\n private pollingInfoByQueryId = new Map();\n\n public startPollingQuery(\n options: WatchQueryOptions,\n queryId: string,\n listener?: QueryListener,\n ): string {\n const { pollInterval } = options;\n\n invariant(\n pollInterval,\n 'Attempted to start a polling query without a polling interval.',\n );\n\n // Do not poll in SSR mode\n if (!this.ssrMode) {\n let info = this.pollingInfoByQueryId.get(queryId)!;\n if (!info) {\n this.pollingInfoByQueryId.set(queryId, (info = {} as any));\n }\n\n info.interval = pollInterval!;\n info.options = {\n ...options,\n fetchPolicy: 'network-only',\n };\n\n const maybeFetch = () => {\n const info = this.pollingInfoByQueryId.get(queryId);\n if (info) {\n if (this.checkInFlight(queryId)) {\n poll();\n } else {\n this.fetchQuery(queryId, info.options, FetchType.poll).then(\n poll,\n poll,\n );\n }\n }\n };\n\n const poll = () => {\n const info = this.pollingInfoByQueryId.get(queryId);\n if (info) {\n clearTimeout(info.timeout);\n info.timeout = setTimeout(maybeFetch, info.interval);\n }\n };\n\n if (listener) {\n this.addQueryListener(queryId, listener);\n }\n\n poll();\n }\n\n return queryId;\n }\n\n public stopPollingQuery(queryId: string) {\n this.pollingInfoByQueryId.delete(queryId);\n }\n}\n","import { ExecutionResult, DocumentNode } from 'graphql';\nimport { ApolloCache, Cache, DataProxy } from 'apollo-cache';\n\nimport { QueryStoreValue } from '../data/queries';\nimport {\n getOperationName,\n tryFunctionOrLogError,\n graphQLResultHasError,\n} from 'apollo-utilities';\nimport { MutationQueryReducer } from '../core/types';\n\nexport type QueryWithUpdater = {\n updater: MutationQueryReducer;\n query: QueryStoreValue;\n};\n\nexport interface DataWrite {\n rootId: string;\n result: any;\n document: DocumentNode;\n operationName: string | null;\n variables: Object;\n}\n\nexport class DataStore {\n private cache: ApolloCache;\n\n constructor(initialCache: ApolloCache) {\n this.cache = initialCache;\n }\n\n public getCache(): ApolloCache {\n return this.cache;\n }\n\n public markQueryResult(\n result: ExecutionResult,\n document: DocumentNode,\n variables: any,\n fetchMoreForQueryId: string | undefined,\n ignoreErrors: boolean = false,\n ) {\n let writeWithErrors = !graphQLResultHasError(result);\n if (ignoreErrors && graphQLResultHasError(result) && result.data) {\n writeWithErrors = true;\n }\n if (!fetchMoreForQueryId && writeWithErrors) {\n this.cache.write({\n result: result.data,\n dataId: 'ROOT_QUERY',\n query: document,\n variables: variables,\n });\n }\n }\n\n public markSubscriptionResult(\n result: ExecutionResult,\n document: DocumentNode,\n variables: any,\n ) {\n // the subscription interface should handle not sending us results we no longer subscribe to.\n // XXX I don't think we ever send in an object with errors, but we might in the future...\n if (!graphQLResultHasError(result)) {\n this.cache.write({\n result: result.data,\n dataId: 'ROOT_SUBSCRIPTION',\n query: document,\n variables: variables,\n });\n }\n }\n\n public markMutationInit(mutation: {\n mutationId: string;\n document: DocumentNode;\n variables: any;\n updateQueries: { [queryId: string]: QueryWithUpdater };\n update: ((proxy: DataProxy, mutationResult: Object) => void) | undefined;\n optimisticResponse: Object | Function | undefined;\n }) {\n if (mutation.optimisticResponse) {\n let optimistic: Object;\n if (typeof mutation.optimisticResponse === 'function') {\n optimistic = mutation.optimisticResponse(mutation.variables);\n } else {\n optimistic = mutation.optimisticResponse;\n }\n\n this.cache.recordOptimisticTransaction(c => {\n const orig = this.cache;\n this.cache = c;\n\n try {\n this.markMutationResult({\n mutationId: mutation.mutationId,\n result: { data: optimistic },\n document: mutation.document,\n variables: mutation.variables,\n updateQueries: mutation.updateQueries,\n update: mutation.update,\n });\n } finally {\n this.cache = orig;\n }\n }, mutation.mutationId);\n }\n }\n\n public markMutationResult(mutation: {\n mutationId: string;\n result: ExecutionResult;\n document: DocumentNode;\n variables: any;\n updateQueries: { [queryId: string]: QueryWithUpdater };\n update: ((proxy: DataProxy, mutationResult: Object) => void) | undefined;\n }) {\n // Incorporate the result from this mutation into the store\n if (!graphQLResultHasError(mutation.result)) {\n const cacheWrites: Cache.WriteOptions[] = [{\n result: mutation.result.data,\n dataId: 'ROOT_MUTATION',\n query: mutation.document,\n variables: mutation.variables,\n }];\n\n const { updateQueries } = mutation;\n if (updateQueries) {\n Object.keys(updateQueries).forEach(id => {\n const { query, updater } = updateQueries[id];\n\n // Read the current query result from the store.\n const { result: currentQueryResult, complete } = this.cache.diff({\n query: query.document,\n variables: query.variables,\n returnPartialData: true,\n optimistic: false,\n });\n\n if (complete) {\n // Run our reducer using the current query result and the mutation result.\n const nextQueryResult = tryFunctionOrLogError(() =>\n updater(currentQueryResult, {\n mutationResult: mutation.result,\n queryName: getOperationName(query.document) || undefined,\n queryVariables: query.variables,\n }),\n );\n\n // Write the modified result back into the store if we got a new result.\n if (nextQueryResult) {\n cacheWrites.push({\n result: nextQueryResult,\n dataId: 'ROOT_QUERY',\n query: query.document,\n variables: query.variables,\n });\n }\n }\n });\n }\n\n this.cache.performTransaction(c => {\n cacheWrites.forEach(write => c.write(write));\n\n // If the mutation has some writes associated with it then we need to\n // apply those writes to the store by running this reducer again with a\n // write action.\n const { update } = mutation;\n if (update) {\n tryFunctionOrLogError(() => update(c, mutation.result));\n }\n });\n }\n }\n\n public markMutationComplete({\n mutationId,\n optimisticResponse,\n }: {\n mutationId: string;\n optimisticResponse?: any;\n }) {\n if (optimisticResponse) {\n this.cache.removeOptimistic(mutationId);\n }\n }\n\n public markUpdateQueryResult(\n document: DocumentNode,\n variables: any,\n newResult: any,\n ) {\n this.cache.write({\n result: newResult,\n dataId: 'ROOT_QUERY',\n variables,\n query: document,\n });\n }\n\n public reset(): Promise {\n return this.cache.reset();\n }\n}\n","import {\n ApolloLink,\n FetchResult,\n GraphQLRequest,\n execute,\n} from 'apollo-link';\nimport { ExecutionResult, DocumentNode } from 'graphql';\nimport { ApolloCache, DataProxy } from 'apollo-cache';\n\nimport { invariant, InvariantError } from 'ts-invariant';\n\nimport { QueryManager } from './core/QueryManager';\nimport {\n ApolloQueryResult,\n OperationVariables,\n Resolvers,\n} from './core/types';\nimport { ObservableQuery } from './core/ObservableQuery';\nimport { LocalState, FragmentMatcher } from './core/LocalState';\nimport { Observable } from './util/Observable';\n\nimport {\n QueryOptions,\n WatchQueryOptions,\n SubscriptionOptions,\n MutationOptions,\n WatchQueryFetchPolicy,\n} from './core/watchQueryOptions';\n\nimport { DataStore } from './data/store';\n\nimport { version } from './version';\n\nexport interface DefaultOptions {\n watchQuery?: Partial;\n query?: Partial;\n mutate?: Partial;\n}\n\nlet hasSuggestedDevtools = false;\n\nexport type ApolloClientOptions = {\n link?: ApolloLink;\n cache: ApolloCache;\n ssrForceFetchDelay?: number;\n ssrMode?: boolean;\n connectToDevTools?: boolean;\n queryDeduplication?: boolean;\n defaultOptions?: DefaultOptions;\n assumeImmutableResults?: boolean;\n resolvers?: Resolvers | Resolvers[];\n typeDefs?: string | string[] | DocumentNode | DocumentNode[];\n fragmentMatcher?: FragmentMatcher;\n name?: string;\n version?: string;\n};\n\n/**\n * This is the primary Apollo Client class. It is used to send GraphQL documents (i.e. queries\n * and mutations) to a GraphQL spec-compliant server over a {@link NetworkInterface} instance,\n * receive results from the server and cache the results in a store. It also delivers updates\n * to GraphQL queries through {@link Observable} instances.\n */\nexport default class ApolloClient implements DataProxy {\n public link: ApolloLink;\n public store: DataStore;\n public cache: ApolloCache;\n public readonly queryManager: QueryManager;\n public disableNetworkFetches: boolean;\n public version: string;\n public queryDeduplication: boolean;\n public defaultOptions: DefaultOptions = {};\n public readonly typeDefs: ApolloClientOptions['typeDefs'];\n\n private devToolsHookCb: Function;\n private resetStoreCallbacks: Array<() => Promise> = [];\n private clearStoreCallbacks: Array<() => Promise> = [];\n private localState: LocalState;\n\n /**\n * Constructs an instance of {@link ApolloClient}.\n *\n * @param link The {@link ApolloLink} over which GraphQL documents will be resolved into a response.\n *\n * @param cache The initial cache to use in the data store.\n *\n * @param ssrMode Determines whether this is being run in Server Side Rendering (SSR) mode.\n *\n * @param ssrForceFetchDelay Determines the time interval before we force fetch queries for a\n * server side render.\n *\n * @param queryDeduplication If set to false, a query will still be sent to the server even if a query\n * with identical parameters (query, variables, operationName) is already in flight.\n *\n * @param defaultOptions Used to set application wide defaults for the\n * options supplied to `watchQuery`, `query`, or\n * `mutate`.\n *\n * @param assumeImmutableResults When this option is true, the client will assume results\n * read from the cache are never mutated by application code,\n * which enables substantial performance optimizations. Passing\n * `{ freezeResults: true }` to the `InMemoryCache` constructor\n * can help enforce this immutability.\n *\n * @param name A custom name that can be used to identify this client, when\n * using Apollo client awareness features. E.g. \"iOS\".\n *\n * @param version A custom version that can be used to identify this client,\n * when using Apollo client awareness features. This is the\n * version of your client, which you may want to increment on\n * new builds. This is NOT the version of Apollo Client that\n * you are using.\n */\n constructor(options: ApolloClientOptions) {\n const {\n cache,\n ssrMode = false,\n ssrForceFetchDelay = 0,\n connectToDevTools,\n queryDeduplication = true,\n defaultOptions,\n assumeImmutableResults = false,\n resolvers,\n typeDefs,\n fragmentMatcher,\n name: clientAwarenessName,\n version: clientAwarenessVersion,\n } = options;\n\n let { link } = options;\n\n // If a link hasn't been defined, but local state resolvers have been set,\n // setup a default empty link.\n if (!link && resolvers) {\n link = ApolloLink.empty();\n }\n\n if (!link || !cache) {\n throw new InvariantError(\n \"In order to initialize Apollo Client, you must specify 'link' and 'cache' properties in the options object.\\n\" +\n \"These options are part of the upgrade requirements when migrating from Apollo Client 1.x to Apollo Client 2.x.\\n\" +\n \"For more information, please visit: https://www.apollographql.com/docs/tutorial/client.html#apollo-client-setup\"\n );\n }\n\n // remove apollo-client supported directives\n this.link = link;\n this.cache = cache;\n this.store = new DataStore(cache);\n this.disableNetworkFetches = ssrMode || ssrForceFetchDelay > 0;\n this.queryDeduplication = queryDeduplication;\n this.defaultOptions = defaultOptions || {};\n this.typeDefs = typeDefs;\n\n if (ssrForceFetchDelay) {\n setTimeout(\n () => (this.disableNetworkFetches = false),\n ssrForceFetchDelay,\n );\n }\n\n this.watchQuery = this.watchQuery.bind(this);\n this.query = this.query.bind(this);\n this.mutate = this.mutate.bind(this);\n this.resetStore = this.resetStore.bind(this);\n this.reFetchObservableQueries = this.reFetchObservableQueries.bind(this);\n\n // Attach the client instance to window to let us be found by chrome devtools, but only in\n // development mode\n const defaultConnectToDevTools =\n process.env.NODE_ENV !== 'production' &&\n typeof window !== 'undefined' &&\n !(window as any).__APOLLO_CLIENT__;\n\n if (\n typeof connectToDevTools === 'undefined'\n ? defaultConnectToDevTools\n : connectToDevTools && typeof window !== 'undefined'\n ) {\n (window as any).__APOLLO_CLIENT__ = this;\n }\n\n /**\n * Suggest installing the devtools for developers who don't have them\n */\n if (!hasSuggestedDevtools && process.env.NODE_ENV !== 'production') {\n hasSuggestedDevtools = true;\n if (\n typeof window !== 'undefined' &&\n window.document &&\n window.top === window.self\n ) {\n // First check if devtools is not installed\n if (\n typeof (window as any).__APOLLO_DEVTOOLS_GLOBAL_HOOK__ === 'undefined'\n ) {\n // Only for Chrome\n if (\n window.navigator &&\n window.navigator.userAgent &&\n window.navigator.userAgent.indexOf('Chrome') > -1\n ) {\n // tslint:disable-next-line\n console.debug(\n 'Download the Apollo DevTools ' +\n 'for a better development experience: ' +\n 'https://chrome.google.com/webstore/detail/apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm',\n );\n }\n }\n }\n }\n\n this.version = version;\n\n this.localState = new LocalState({\n cache,\n client: this,\n resolvers,\n fragmentMatcher,\n });\n\n this.queryManager = new QueryManager({\n link: this.link,\n store: this.store,\n queryDeduplication,\n ssrMode,\n clientAwareness: {\n name: clientAwarenessName!,\n version: clientAwarenessVersion!,\n },\n localState: this.localState,\n assumeImmutableResults,\n onBroadcast: () => {\n if (this.devToolsHookCb) {\n this.devToolsHookCb({\n action: {},\n state: {\n queries: this.queryManager.queryStore.getStore(),\n mutations: this.queryManager.mutationStore.getStore(),\n },\n dataWithOptimisticResults: this.cache.extract(true),\n });\n }\n },\n });\n }\n\n /**\n * Call this method to terminate any active client processes, making it safe\n * to dispose of this `ApolloClient` instance.\n */\n public stop() {\n this.queryManager.stop();\n }\n\n /**\n * This watches the cache store of the query according to the options specified and\n * returns an {@link ObservableQuery}. We can subscribe to this {@link ObservableQuery} and\n * receive updated results through a GraphQL observer when the cache store changes.\n *

\n * Note that this method is not an implementation of GraphQL subscriptions. Rather,\n * it uses Apollo's store in order to reactively deliver updates to your query results.\n *

\n * For example, suppose you call watchQuery on a GraphQL query that fetches a person's\n * first and last name and this person has a particular object identifer, provided by\n * dataIdFromObject. Later, a different query fetches that same person's\n * first and last name and the first name has now changed. Then, any observers associated\n * with the results of the first query will be updated with a new result object.\n *

\n * Note that if the cache does not change, the subscriber will *not* be notified.\n *

\n * See [here](https://medium.com/apollo-stack/the-concepts-of-graphql-bc68bd819be3#.3mb0cbcmc) for\n * a description of store reactivity.\n */\n public watchQuery(\n options: WatchQueryOptions,\n ): ObservableQuery {\n if (this.defaultOptions.watchQuery) {\n options = {\n ...this.defaultOptions.watchQuery,\n ...options,\n } as WatchQueryOptions;\n }\n\n // XXX Overwriting options is probably not the best way to do this long term...\n if (\n this.disableNetworkFetches &&\n (options.fetchPolicy === 'network-only' ||\n options.fetchPolicy === 'cache-and-network')\n ) {\n options = { ...options, fetchPolicy: 'cache-first' };\n }\n\n return this.queryManager.watchQuery(options);\n }\n\n /**\n * This resolves a single query according to the options specified and\n * returns a {@link Promise} which is either resolved with the resulting data\n * or rejected with an error.\n *\n * @param options An object of type {@link QueryOptions} that allows us to\n * describe how this query should be treated e.g. whether it should hit the\n * server at all or just resolve from the cache, etc.\n */\n public query(\n options: QueryOptions,\n ): Promise> {\n if (this.defaultOptions.query) {\n options = { ...this.defaultOptions.query, ...options } as QueryOptions<\n TVariables\n >;\n }\n\n invariant(\n (options.fetchPolicy as WatchQueryFetchPolicy) !== 'cache-and-network',\n 'The cache-and-network fetchPolicy does not work with client.query, because ' +\n 'client.query can only return a single result. Please use client.watchQuery ' +\n 'to receive multiple results from the cache and the network, or consider ' +\n 'using a different fetchPolicy, such as cache-first or network-only.'\n );\n\n if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {\n options = { ...options, fetchPolicy: 'cache-first' };\n }\n\n return this.queryManager.query(options);\n }\n\n /**\n * This resolves a single mutation according to the options specified and returns a\n * {@link Promise} which is either resolved with the resulting data or rejected with an\n * error.\n *\n * It takes options as an object with the following keys and values:\n */\n public mutate(\n options: MutationOptions,\n ): Promise> {\n if (this.defaultOptions.mutate) {\n options = {\n ...this.defaultOptions.mutate,\n ...options,\n } as MutationOptions;\n }\n\n return this.queryManager.mutate(options);\n }\n\n /**\n * This subscribes to a graphql subscription according to the options specified and returns an\n * {@link Observable} which either emits received data or an error.\n */\n public subscribe(\n options: SubscriptionOptions,\n ): Observable> {\n return this.queryManager.startGraphQLSubscription(options);\n }\n\n /**\n * Tries to read some data from the store in the shape of the provided\n * GraphQL query without making a network request. This method will start at\n * the root query. To start at a specific id returned by `dataIdFromObject`\n * use `readFragment`.\n *\n * @param optimistic Set to `true` to allow `readQuery` to return\n * optimistic results. Is `false` by default.\n */\n public readQuery(\n options: DataProxy.Query,\n optimistic: boolean = false,\n ): T | null {\n return this.cache.readQuery(options, optimistic);\n }\n\n /**\n * Tries to read some data from the store in the shape of the provided\n * GraphQL fragment without making a network request. This method will read a\n * GraphQL fragment from any arbitrary id that is currently cached, unlike\n * `readQuery` which will only read from the root query.\n *\n * You must pass in a GraphQL document with a single fragment or a document\n * with multiple fragments that represent what you are reading. If you pass\n * in a document with multiple fragments then you must also specify a\n * `fragmentName`.\n *\n * @param optimistic Set to `true` to allow `readFragment` to return\n * optimistic results. Is `false` by default.\n */\n public readFragment(\n options: DataProxy.Fragment,\n optimistic: boolean = false,\n ): T | null {\n return this.cache.readFragment(options, optimistic);\n }\n\n /**\n * Writes some data in the shape of the provided GraphQL query directly to\n * the store. This method will start at the root query. To start at a\n * specific id returned by `dataIdFromObject` then use `writeFragment`.\n */\n public writeQuery(\n options: DataProxy.WriteQueryOptions,\n ): void {\n const result = this.cache.writeQuery(options);\n this.queryManager.broadcastQueries();\n return result;\n }\n\n /**\n * Writes some data in the shape of the provided GraphQL fragment directly to\n * the store. This method will write to a GraphQL fragment from any arbitrary\n * id that is currently cached, unlike `writeQuery` which will only write\n * from the root query.\n *\n * You must pass in a GraphQL document with a single fragment or a document\n * with multiple fragments that represent what you are writing. If you pass\n * in a document with multiple fragments then you must also specify a\n * `fragmentName`.\n */\n public writeFragment(\n options: DataProxy.WriteFragmentOptions,\n ): void {\n const result = this.cache.writeFragment(options);\n this.queryManager.broadcastQueries();\n return result;\n }\n\n /**\n * Sugar for writeQuery & writeFragment\n * This method will construct a query from the data object passed in.\n * If no id is supplied, writeData will write the data to the root.\n * If an id is supplied, writeData will write a fragment to the object\n * specified by the id in the store.\n *\n * Since you aren't passing in a query to check the shape of the data,\n * you must pass in an object that conforms to the shape of valid GraphQL data.\n */\n public writeData(\n options: DataProxy.WriteDataOptions,\n ): void {\n const result = this.cache.writeData(options);\n this.queryManager.broadcastQueries();\n return result;\n }\n\n public __actionHookForDevTools(cb: () => any) {\n this.devToolsHookCb = cb;\n }\n\n public __requestRaw(payload: GraphQLRequest): Observable {\n return execute(this.link, payload);\n }\n\n /**\n * This initializes the query manager that tracks queries and the cache\n */\n public initQueryManager(): QueryManager {\n invariant.warn(\n 'Calling the initQueryManager method is no longer necessary, ' +\n 'and it will be removed from ApolloClient in version 3.0.',\n );\n return this.queryManager;\n }\n\n /**\n * Resets your entire store by clearing out your cache and then re-executing\n * all of your active queries. This makes it so that you may guarantee that\n * there is no data left in your store from a time before you called this\n * method.\n *\n * `resetStore()` is useful when your user just logged out. You’ve removed the\n * user session, and you now want to make sure that any references to data you\n * might have fetched while the user session was active is gone.\n *\n * It is important to remember that `resetStore()` *will* refetch any active\n * queries. This means that any components that might be mounted will execute\n * their queries again using your network interface. If you do not want to\n * re-execute any queries then you should make sure to stop watching any\n * active queries.\n */\n public resetStore(): Promise[] | null> {\n return Promise.resolve()\n .then(() => this.queryManager.clearStore())\n .then(() => Promise.all(this.resetStoreCallbacks.map(fn => fn())))\n .then(() => this.reFetchObservableQueries());\n }\n\n /**\n * Remove all data from the store. Unlike `resetStore`, `clearStore` will\n * not refetch any active queries.\n */\n public clearStore(): Promise {\n return Promise.resolve()\n .then(() => this.queryManager.clearStore())\n .then(() => Promise.all(this.clearStoreCallbacks.map(fn => fn())));\n }\n\n /**\n * Allows callbacks to be registered that are executed when the store is\n * reset. `onResetStore` returns an unsubscribe function that can be used\n * to remove registered callbacks.\n */\n public onResetStore(cb: () => Promise): () => void {\n this.resetStoreCallbacks.push(cb);\n return () => {\n this.resetStoreCallbacks = this.resetStoreCallbacks.filter(c => c !== cb);\n };\n }\n\n /**\n * Allows callbacks to be registered that are executed when the store is\n * cleared. `onClearStore` returns an unsubscribe function that can be used\n * to remove registered callbacks.\n */\n public onClearStore(cb: () => Promise): () => void {\n this.clearStoreCallbacks.push(cb);\n return () => {\n this.clearStoreCallbacks = this.clearStoreCallbacks.filter(c => c !== cb);\n };\n }\n\n /**\n * Refetches all of your active queries.\n *\n * `reFetchObservableQueries()` is useful if you want to bring the client back to proper state in case of a network outage\n *\n * It is important to remember that `reFetchObservableQueries()` *will* refetch any active\n * queries. This means that any components that might be mounted will execute\n * their queries again using your network interface. If you do not want to\n * re-execute any queries then you should make sure to stop watching any\n * active queries.\n * Takes optional parameter `includeStandby` which will include queries in standby-mode when refetching.\n */\n public reFetchObservableQueries(\n includeStandby?: boolean,\n ): Promise[]> {\n return this.queryManager.reFetchObservableQueries(includeStandby);\n }\n\n /**\n * Exposes the cache's complete state, in a serializable format for later restoration.\n */\n public extract(optimistic?: boolean): TCacheShape {\n return this.cache.extract(optimistic);\n }\n\n /**\n * Replaces existing state in the cache (if any) with the values expressed by\n * `serializedState`.\n *\n * Called when hydrating a cache (server side rendering, or offline storage),\n * and also (potentially) during hot reloads.\n */\n public restore(serializedState: TCacheShape): ApolloCache {\n return this.cache.restore(serializedState);\n }\n\n /**\n * Add additional local resolvers.\n */\n public addResolvers(resolvers: Resolvers | Resolvers[]) {\n this.localState.addResolvers(resolvers);\n }\n\n /**\n * Set (override existing) local resolvers.\n */\n public setResolvers(resolvers: Resolvers | Resolvers[]) {\n this.localState.setResolvers(resolvers);\n }\n\n /**\n * Get all registered local resolvers.\n */\n public getResolvers() {\n return this.localState.getResolvers();\n }\n\n /**\n * Set a custom local state fragment matcher.\n */\n public setLocalStateFragmentMatcher(fragmentMatcher: FragmentMatcher) {\n this.localState.setFragmentMatcher(fragmentMatcher);\n }\n}\n","export const version = \"2.6.4\"","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports', './GoogleApiComponent', './components/Marker', './components/InfoWindow', './components/HeatMap', './components/Polygon', './components/Polyline', 'react', 'prop-types', 'react-dom', './lib/String', './lib/cancelablePromise'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports, require('./GoogleApiComponent'), require('./components/Marker'), require('./components/InfoWindow'), require('./components/HeatMap'), require('./components/Polygon'), require('./components/Polyline'), require('react'), require('prop-types'), require('react-dom'), require('./lib/String'), require('./lib/cancelablePromise'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, global.GoogleApiComponent, global.Marker, global.InfoWindow, global.HeatMap, global.Polygon, global.Polyline, global.react, global.propTypes, global.reactDom, global.String, global.cancelablePromise);\n global.index = mod.exports;\n }\n})(this, function (exports, _GoogleApiComponent, _Marker, _InfoWindow, _HeatMap, _Polygon, _Polyline, _react, _propTypes, _reactDom, _String, _cancelablePromise) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Map = exports.Polyline = exports.Polygon = exports.HeatMap = exports.InfoWindow = exports.Marker = exports.GoogleApiWrapper = undefined;\n Object.defineProperty(exports, 'GoogleApiWrapper', {\n enumerable: true,\n get: function () {\n return _GoogleApiComponent.wrapper;\n }\n });\n Object.defineProperty(exports, 'Marker', {\n enumerable: true,\n get: function () {\n return _Marker.Marker;\n }\n });\n Object.defineProperty(exports, 'InfoWindow', {\n enumerable: true,\n get: function () {\n return _InfoWindow.InfoWindow;\n }\n });\n Object.defineProperty(exports, 'HeatMap', {\n enumerable: true,\n get: function () {\n return _HeatMap.HeatMap;\n }\n });\n Object.defineProperty(exports, 'Polygon', {\n enumerable: true,\n get: function () {\n return _Polygon.Polygon;\n }\n });\n Object.defineProperty(exports, 'Polyline', {\n enumerable: true,\n get: function () {\n return _Polyline.Polyline;\n }\n });\n\n var _react2 = _interopRequireDefault(_react);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n var _reactDom2 = _interopRequireDefault(_reactDom);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var mapStyles = {\n container: {\n position: 'absolute',\n width: '100%',\n height: '100%'\n },\n map: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0\n }\n };\n\n var evtNames = ['ready', 'click', 'dragend', 'recenter', 'bounds_changed', 'center_changed', 'dblclick', 'dragstart', 'heading_change', 'idle', 'maptypeid_changed', 'mousemove', 'mouseout', 'mouseover', 'projection_changed', 'resize', 'rightclick', 'tilesloaded', 'tilt_changed', 'zoom_changed'];\n\n var Map = exports.Map = function (_React$Component) {\n _inherits(Map, _React$Component);\n\n function Map(props) {\n _classCallCheck(this, Map);\n\n var _this = _possibleConstructorReturn(this, (Map.__proto__ || Object.getPrototypeOf(Map)).call(this, props));\n\n if (!props.hasOwnProperty('google')) {\n throw new Error('You must include a `google` prop');\n }\n\n _this.listeners = {};\n _this.state = {\n currentLocation: {\n lat: _this.props.initialCenter.lat,\n lng: _this.props.initialCenter.lng\n }\n };\n return _this;\n }\n\n _createClass(Map, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n if (this.props.centerAroundCurrentLocation) {\n if (navigator && navigator.geolocation) {\n this.geoPromise = (0, _cancelablePromise.makeCancelable)(new Promise(function (resolve, reject) {\n navigator.geolocation.getCurrentPosition(resolve, reject);\n }));\n\n this.geoPromise.promise.then(function (pos) {\n var coords = pos.coords;\n _this2.setState({\n currentLocation: {\n lat: coords.latitude,\n lng: coords.longitude\n }\n });\n }).catch(function (e) {\n return e;\n });\n }\n }\n this.loadMap();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n if (prevProps.google !== this.props.google) {\n this.loadMap();\n }\n if (this.props.visible !== prevProps.visible) {\n this.restyleMap();\n }\n if (this.props.zoom !== prevProps.zoom) {\n this.map.setZoom(this.props.zoom);\n }\n if (this.props.center !== prevProps.center) {\n this.setState({\n currentLocation: this.props.center\n });\n }\n if (prevState.currentLocation !== this.state.currentLocation) {\n this.recenterMap();\n }\n if (this.props.bounds !== prevProps.bounds) {\n this.map.fitBounds(this.props.bounds);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var _this3 = this;\n\n var google = this.props.google;\n\n if (this.geoPromise) {\n this.geoPromise.cancel();\n }\n Object.keys(this.listeners).forEach(function (e) {\n google.maps.event.removeListener(_this3.listeners[e]);\n });\n }\n }, {\n key: 'loadMap',\n value: function loadMap() {\n var _this4 = this;\n\n if (this.props && this.props.google) {\n var google = this.props.google;\n\n var maps = google.maps;\n\n var mapRef = this.refs.map;\n var node = _reactDom2.default.findDOMNode(mapRef);\n var curr = this.state.currentLocation;\n var center = new maps.LatLng(curr.lat, curr.lng);\n\n var mapTypeIds = this.props.google.maps.MapTypeId || {};\n var mapTypeFromProps = String(this.props.mapType).toUpperCase();\n\n var mapConfig = Object.assign({}, {\n mapTypeId: mapTypeIds[mapTypeFromProps],\n center: center,\n zoom: this.props.zoom,\n maxZoom: this.props.maxZoom,\n minZoom: this.props.minZoom,\n clickableIcons: !!this.props.clickableIcons,\n disableDefaultUI: this.props.disableDefaultUI,\n zoomControl: this.props.zoomControl,\n mapTypeControl: this.props.mapTypeControl,\n scaleControl: this.props.scaleControl,\n streetViewControl: this.props.streetViewControl,\n panControl: this.props.panControl,\n rotateControl: this.props.rotateControl,\n fullscreenControl: this.props.fullscreenControl,\n scrollwheel: this.props.scrollwheel,\n draggable: this.props.draggable,\n keyboardShortcuts: this.props.keyboardShortcuts,\n disableDoubleClickZoom: this.props.disableDoubleClickZoom,\n noClear: this.props.noClear,\n styles: this.props.styles,\n gestureHandling: this.props.gestureHandling\n });\n\n Object.keys(mapConfig).forEach(function (key) {\n // Allow to configure mapConfig with 'false'\n if (mapConfig[key] === null) {\n delete mapConfig[key];\n }\n });\n\n this.map = new maps.Map(node, mapConfig);\n\n evtNames.forEach(function (e) {\n _this4.listeners[e] = _this4.map.addListener(e, _this4.handleEvent(e));\n });\n maps.event.trigger(this.map, 'ready');\n this.forceUpdate();\n }\n }\n }, {\n key: 'handleEvent',\n value: function handleEvent(evtName) {\n var _this5 = this;\n\n var timeout = void 0;\n var handlerName = 'on' + (0, _String.camelize)(evtName);\n\n return function (e) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n timeout = setTimeout(function () {\n if (_this5.props[handlerName]) {\n _this5.props[handlerName](_this5.props, _this5.map, e);\n }\n }, 0);\n };\n }\n }, {\n key: 'recenterMap',\n value: function recenterMap() {\n var map = this.map;\n\n var google = this.props.google;\n\n\n if (!google) return;\n var maps = google.maps;\n\n if (map) {\n var center = this.state.currentLocation;\n if (!(center instanceof google.maps.LatLng)) {\n center = new google.maps.LatLng(center.lat, center.lng);\n }\n // map.panTo(center)\n map.setCenter(center);\n maps.event.trigger(map, 'recenter');\n }\n }\n }, {\n key: 'restyleMap',\n value: function restyleMap() {\n if (this.map) {\n var google = this.props.google;\n\n google.maps.event.trigger(this.map, 'resize');\n }\n }\n }, {\n key: 'renderChildren',\n value: function renderChildren() {\n var _this6 = this;\n\n var children = this.props.children;\n\n\n if (!children) return;\n\n return _react2.default.Children.map(children, function (c) {\n if (!c) return;\n return _react2.default.cloneElement(c, {\n map: _this6.map,\n google: _this6.props.google,\n mapCenter: _this6.state.currentLocation\n });\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var style = Object.assign({}, mapStyles.map, this.props.style, {\n display: this.props.visible ? 'inherit' : 'none'\n });\n\n var containerStyles = Object.assign({}, mapStyles.container, this.props.containerStyle);\n\n return _react2.default.createElement(\n 'div',\n { style: containerStyles, className: this.props.className },\n _react2.default.createElement(\n 'div',\n { style: style, ref: 'map' },\n 'Loading map...'\n ),\n this.renderChildren()\n );\n }\n }]);\n\n return Map;\n }(_react2.default.Component);\n\n Map.propTypes = {\n google: _propTypes2.default.object,\n zoom: _propTypes2.default.number,\n centerAroundCurrentLocation: _propTypes2.default.bool,\n center: _propTypes2.default.object,\n initialCenter: _propTypes2.default.object,\n className: _propTypes2.default.string,\n style: _propTypes2.default.object,\n containerStyle: _propTypes2.default.object,\n visible: _propTypes2.default.bool,\n mapType: _propTypes2.default.string,\n maxZoom: _propTypes2.default.number,\n minZoom: _propTypes2.default.number,\n clickableIcons: _propTypes2.default.bool,\n disableDefaultUI: _propTypes2.default.bool,\n zoomControl: _propTypes2.default.bool,\n mapTypeControl: _propTypes2.default.bool,\n scaleControl: _propTypes2.default.bool,\n streetViewControl: _propTypes2.default.bool,\n panControl: _propTypes2.default.bool,\n rotateControl: _propTypes2.default.bool,\n fullscreenControl: _propTypes2.default.bool,\n scrollwheel: _propTypes2.default.bool,\n draggable: _propTypes2.default.bool,\n keyboardShortcuts: _propTypes2.default.bool,\n disableDoubleClickZoom: _propTypes2.default.bool,\n noClear: _propTypes2.default.bool,\n styles: _propTypes2.default.array,\n gestureHandling: _propTypes2.default.string,\n bounds: _propTypes2.default.object\n };\n\n evtNames.forEach(function (e) {\n return Map.propTypes[(0, _String.camelize)(e)] = _propTypes2.default.func;\n });\n\n Map.defaultProps = {\n zoom: 14,\n initialCenter: {\n lat: 37.774929,\n lng: -122.419416\n },\n center: {},\n centerAroundCurrentLocation: false,\n style: {},\n containerStyle: {},\n visible: true\n };\n\n exports.default = Map;\n});","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { Constants } from \"../../constants\";\nimport { PopupComponent } from \"../../widgets/popupComponent\";\nimport { _ } from '../../utils';\nvar TextCellEditor = /** @class */ (function (_super) {\n __extends(TextCellEditor, _super);\n function TextCellEditor() {\n var _this = _super.call(this, TextCellEditor.TEMPLATE) || this;\n _this.eInput = _this.getGui().querySelector('input');\n return _this;\n }\n TextCellEditor.prototype.init = function (params) {\n this.params = params;\n var eInput = this.eInput;\n var startValue;\n // cellStartedEdit is only false if we are doing fullRow editing\n if (params.cellStartedEdit) {\n this.focusAfterAttached = true;\n var keyPressBackspaceOrDelete = params.keyPress === Constants.KEY_BACKSPACE\n || params.keyPress === Constants.KEY_DELETE;\n if (keyPressBackspaceOrDelete) {\n startValue = '';\n }\n else if (params.charPress) {\n startValue = params.charPress;\n }\n else {\n startValue = this.getStartValue(params);\n if (params.keyPress !== Constants.KEY_F2) {\n this.highlightAllOnFocus = true;\n }\n }\n }\n else {\n this.focusAfterAttached = false;\n startValue = this.getStartValue(params);\n }\n if (_.exists(startValue)) {\n eInput.value = startValue;\n }\n this.addDestroyableEventListener(eInput, 'keydown', function (event) {\n var pageUp = event.keyCode === Constants.KEY_PAGE_UP;\n var pageDown = event.keyCode === Constants.KEY_PAGE_DOWN;\n if (pageUp || pageDown) {\n event.preventDefault();\n }\n });\n };\n TextCellEditor.prototype.afterGuiAttached = function () {\n if (!this.focusAfterAttached) {\n return;\n }\n var eInput = this.eInput;\n // Added for AG-3238. We can't remove this explicit focus() because Chrome requires an input\n // to be focussed before setSelectionRange will work. But it triggers a bug in Safari where\n // explicitly focussing then blurring an empty field will cause the parent container to scroll.\n if (!_.isBrowserSafari()) {\n eInput.focus();\n }\n if (this.highlightAllOnFocus) {\n eInput.select();\n }\n else {\n // when we started editing, we want the caret at the end, not the start.\n // this comes into play in two scenarios: a) when user hits F2 and b)\n // when user hits a printable character, then on IE (and only IE) the caret\n // was placed after the first character, thus 'apply' would end up as 'pplea'\n var length_1 = eInput.value ? eInput.value.length : 0;\n if (length_1 > 0) {\n eInput.setSelectionRange(length_1, length_1);\n }\n }\n };\n // gets called when tabbing trough cells and in full row edit mode\n TextCellEditor.prototype.focusIn = function () {\n var eInput = this.eInput;\n eInput.focus();\n eInput.select();\n };\n TextCellEditor.prototype.getValue = function () {\n var eInput = this.eInput;\n return this.params.parseValue(eInput.value);\n };\n TextCellEditor.prototype.getStartValue = function (params) {\n var formatValue = params.useFormatter || params.column.getColDef().refData;\n return formatValue ? params.formatValue(params.value) : params.value;\n };\n TextCellEditor.prototype.isPopup = function () {\n return false;\n };\n TextCellEditor.TEMPLATE = '

';\n return TextCellEditor;\n}(PopupComponent));\nexport { TextCellEditor };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Constants } from \"../../constants\";\nimport { Autowired } from \"../../context/context\";\nimport { Component } from \"../../widgets/component\";\nimport { RowNode } from \"../../entities/rowNode\";\nimport { CheckboxSelectionComponent } from \"../checkboxSelectionComponent\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { ComponentSource } from \"../../components/framework/userComponentFactory\";\nimport { _ } from \"../../utils\";\nvar GroupCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCellRenderer, _super);\n function GroupCellRenderer() {\n return _super.call(this, GroupCellRenderer.TEMPLATE) || this;\n }\n GroupCellRenderer.prototype.init = function (params) {\n this.params = params;\n if (this.gridOptionsWrapper.isGroupIncludeTotalFooter()) {\n this.assignBlankValueToGroupFooterCell(params);\n }\n var embeddedRowMismatch = this.isEmbeddedRowMismatch();\n // This allows for empty strings to appear as groups since\n // it will only return for null or undefined.\n var cellIsEmpty = params.value == null;\n this.cellIsBlank = embeddedRowMismatch || cellIsEmpty;\n if (this.cellIsBlank) {\n return;\n }\n this.setupDragOpenParents();\n this.addExpandAndContract();\n this.addCheckboxIfNeeded();\n this.addValueElement();\n this.setupIndent();\n };\n GroupCellRenderer.prototype.assignBlankValueToGroupFooterCell = function (params) {\n // this is not ideal, but it was the only way we could get footer working for the root node\n if (!params.value && params.node.level == -1) {\n params.value = '';\n }\n };\n // if we are doing embedded full width rows, we only show the renderer when\n // in the body, or if pinning in the pinned section, or if pinning and RTL,\n // in the right section. otherwise we would have the cell repeated in each section.\n GroupCellRenderer.prototype.isEmbeddedRowMismatch = function () {\n if (this.params.fullWidth && this.gridOptionsWrapper.isEmbedFullWidthRows()) {\n var pinnedLeftCell = this.params.pinned === Constants.PINNED_LEFT;\n var pinnedRightCell = this.params.pinned === Constants.PINNED_RIGHT;\n var bodyCell = !pinnedLeftCell && !pinnedRightCell;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n if (this.columnController.isPinningLeft()) {\n return !pinnedRightCell;\n }\n else {\n return !bodyCell;\n }\n }\n else {\n if (this.columnController.isPinningLeft()) {\n return !pinnedLeftCell;\n }\n else {\n return !bodyCell;\n }\n }\n }\n else {\n return false;\n }\n };\n GroupCellRenderer.prototype.setIndent = function () {\n if (this.gridOptionsWrapper.isGroupHideOpenParents()) {\n return;\n }\n var params = this.params;\n var rowNode = params.node;\n var paddingCount = rowNode.uiLevel;\n var userProvidedPaddingPixelsTheDeprecatedWay = params.padding >= 0;\n if (userProvidedPaddingPixelsTheDeprecatedWay) {\n this.setPaddingDeprecatedWay(paddingCount, params.padding);\n return;\n }\n if (this.indentClass) {\n this.removeCssClass(this.indentClass);\n }\n this.indentClass = 'ag-row-group-indent-' + paddingCount;\n this.addCssClass(this.indentClass);\n };\n GroupCellRenderer.prototype.setPaddingDeprecatedWay = function (paddingCount, padding) {\n _.doOnce(function () { return console.warn('ag-Grid: since v14.2, configuring padding for groupCellRenderer should be done with Sass variables and themes. Please see the ag-Grid documentation page for Themes, in particular the property $row-group-indent-size.'); }, 'groupCellRenderer->doDeprecatedWay');\n var paddingPx = paddingCount * padding;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // if doing rtl, padding is on the right\n this.getGui().style.paddingRight = paddingPx + 'px';\n }\n else {\n // otherwise it is on the left\n this.getGui().style.paddingLeft = paddingPx + 'px';\n }\n };\n GroupCellRenderer.prototype.setupIndent = function () {\n // only do this if an indent - as this overwrites the padding that\n // the theme set, which will make things look 'not aligned' for the\n // first group level.\n var node = this.params.node;\n var suppressPadding = this.params.suppressPadding;\n if (!suppressPadding) {\n this.addDestroyableEventListener(node, RowNode.EVENT_UI_LEVEL_CHANGED, this.setIndent.bind(this));\n this.setIndent();\n }\n };\n GroupCellRenderer.prototype.addValueElement = function () {\n var params = this.params;\n var rowNode = this.displayedGroup;\n if (rowNode.footer) {\n this.createFooterCell();\n }\n else if (rowNode.hasChildren() ||\n _.get(params.colDef, 'cellRendererParams.innerRenderer', null) ||\n _.get(params.colDef, 'cellRendererParams.innerRendererFramework', null)) {\n this.createGroupCell();\n if (rowNode.hasChildren()) {\n this.addChildCount();\n }\n }\n else {\n this.createLeafCell();\n }\n };\n GroupCellRenderer.prototype.createFooterCell = function () {\n var footerValue;\n var footerValueGetter = this.params.footerValueGetter;\n if (footerValueGetter) {\n // params is same as we were given, except we set the value as the item to display\n var paramsClone = _.cloneObject(this.params);\n paramsClone.value = this.params.value;\n if (typeof footerValueGetter === 'function') {\n footerValue = footerValueGetter(paramsClone);\n }\n else if (typeof footerValueGetter === 'string') {\n footerValue = this.expressionService.evaluate(footerValueGetter, paramsClone);\n }\n else {\n console.warn('ag-Grid: footerValueGetter should be either a function or a string (expression)');\n }\n }\n else {\n footerValue = 'Total ' + this.params.value;\n }\n this.eValue.innerHTML = footerValue;\n };\n GroupCellRenderer.prototype.createGroupCell = function () {\n var _this = this;\n var params = this.params;\n var rowGroupColumn = this.displayedGroup.rowGroupColumn;\n // we try and use the cellRenderer of the column used for the grouping if we can\n var columnToUse = rowGroupColumn ? rowGroupColumn : params.column;\n var groupName = this.params.value;\n var valueFormatted = columnToUse ?\n this.valueFormatterService.formatValue(columnToUse, params.node, params.scope, groupName) : null;\n params.valueFormatted = valueFormatted;\n var rendererPromise;\n if (params.fullWidth == true) {\n rendererPromise = this.useFullWidth(params);\n }\n else {\n rendererPromise = this.useInnerRenderer(this.params.colDef.cellRendererParams, columnToUse.getColDef(), params);\n }\n // retain a reference to the created renderer - we'll use this later for cleanup (in destroy)\n if (rendererPromise) {\n rendererPromise.then(function (value) {\n _this.innerCellRenderer = value;\n });\n }\n };\n GroupCellRenderer.prototype.useInnerRenderer = function (groupCellRendererParams, groupedColumnDef, // the column this group row is for, eg 'Country'\n params) {\n // when grouping, the normal case is we use the cell renderer of the grouped column. eg if grouping by country\n // and then rating, we will use the country cell renderer for each country group row and likewise the rating\n // cell renderer for each rating group row.\n //\n // however if the user has innerCellRenderer defined, this gets preference and we don't use cell renderers\n // of the grouped columns.\n //\n // so we check and use in the following order:\n //\n // 1) thisColDef.cellRendererParams.innerRenderer of the column showing the groups (eg auto group column)\n // 2) groupedColDef.cellRenderer of the grouped column\n // 3) groupedColDef.cellRendererParams.innerRenderer\n var _this = this;\n var cellRendererPromise = null;\n // we check if cell renderer provided for the group cell renderer, eg colDef.cellRendererParams.innerRenderer\n var groupInnerRendererClass = this.userComponentFactory\n .lookupComponentClassDef(groupCellRendererParams, \"innerRenderer\");\n if (groupInnerRendererClass && groupInnerRendererClass.component != null\n && groupInnerRendererClass.source != ComponentSource.DEFAULT) {\n // use the renderer defined in cellRendererParams.innerRenderer\n cellRendererPromise = this.userComponentFactory.newInnerCellRenderer(groupCellRendererParams, params);\n }\n else {\n // otherwise see if we can use the cellRenderer of the column we are grouping by\n var groupColumnRendererClass = this.userComponentFactory\n .lookupComponentClassDef(groupedColumnDef, \"cellRenderer\");\n if (groupColumnRendererClass && groupColumnRendererClass.source != ComponentSource.DEFAULT) {\n // Only if the original column is using a specific renderer, it it is a using a DEFAULT one ignore it\n cellRendererPromise = this.userComponentFactory.newCellRenderer(groupedColumnDef, params);\n }\n else if (groupColumnRendererClass && groupColumnRendererClass.source == ComponentSource.DEFAULT\n && (_.get(groupedColumnDef, 'cellRendererParams.innerRenderer', null))) {\n // EDGE CASE - THIS COMES FROM A COLUMN WHICH HAS BEEN GROUPED DYNAMICALLY, THAT HAS AS RENDERER 'group'\n // AND HAS A INNER CELL RENDERER\n cellRendererPromise = this.userComponentFactory.newInnerCellRenderer(groupedColumnDef.cellRendererParams, params);\n }\n else {\n // This forces the retrieval of the default plain cellRenderer that just renders the values.\n cellRendererPromise = this.userComponentFactory.newCellRenderer({}, params);\n }\n }\n if (cellRendererPromise != null) {\n cellRendererPromise.then(function (rendererToUse) {\n if (rendererToUse == null) {\n _this.eValue.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n return;\n }\n _.bindCellRendererToHtmlElement(cellRendererPromise, _this.eValue);\n });\n }\n else {\n this.eValue.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n return cellRendererPromise;\n };\n GroupCellRenderer.prototype.useFullWidth = function (params) {\n var cellRendererPromise = this.userComponentFactory.newFullWidthGroupRowInnerCellRenderer(params);\n if (cellRendererPromise != null) {\n _.bindCellRendererToHtmlElement(cellRendererPromise, this.eValue);\n }\n else {\n this.eValue.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n return cellRendererPromise;\n };\n GroupCellRenderer.prototype.addChildCount = function () {\n // only include the child count if it's included, eg if user doing custom aggregation,\n // then this could be left out, or set to -1, ie no child count\n if (this.params.suppressCount) {\n return;\n }\n this.addDestroyableEventListener(this.displayedGroup, RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, this.updateChildCount.bind(this));\n // filtering changes the child count, so need to cater for it\n this.updateChildCount();\n };\n GroupCellRenderer.prototype.updateChildCount = function () {\n var allChildrenCount = this.displayedGroup.allChildrenCount;\n this.eChildCount.innerHTML = allChildrenCount >= 0 ? \"(\" + allChildrenCount + \")\" : \"\";\n };\n GroupCellRenderer.prototype.createLeafCell = function () {\n if (_.exists(this.params.value)) {\n this.eValue.innerText = this.params.valueFormatted ? this.params.valueFormatted : this.params.value;\n }\n };\n GroupCellRenderer.prototype.isUserWantsSelected = function () {\n var paramsCheckbox = this.params.checkbox;\n if (typeof paramsCheckbox === 'function') {\n return paramsCheckbox(this.params);\n }\n else {\n return paramsCheckbox === true;\n }\n };\n GroupCellRenderer.prototype.addCheckboxIfNeeded = function () {\n var rowNode = this.displayedGroup;\n var checkboxNeeded = this.isUserWantsSelected()\n // footers cannot be selected\n && !rowNode.footer\n // pinned rows cannot be selected\n && !rowNode.rowPinned\n // details cannot be selected\n && !rowNode.detail;\n if (checkboxNeeded) {\n var cbSelectionComponent_1 = new CheckboxSelectionComponent();\n this.getContext().wireBean(cbSelectionComponent_1);\n cbSelectionComponent_1.init({ rowNode: rowNode, column: this.params.column });\n this.eCheckbox.appendChild(cbSelectionComponent_1.getGui());\n this.addDestroyFunc(function () { return cbSelectionComponent_1.destroy(); });\n }\n _.addOrRemoveCssClass(this.eCheckbox, 'ag-invisible', !checkboxNeeded);\n };\n GroupCellRenderer.prototype.addExpandAndContract = function () {\n var params = this.params;\n var eGroupCell = params.eGridCell;\n var eExpandedIcon = _.createIconNoSpan('groupExpanded', this.gridOptionsWrapper, null);\n var eContractedIcon = _.createIconNoSpan('groupContracted', this.gridOptionsWrapper, null);\n this.eExpanded.appendChild(eExpandedIcon);\n this.eContracted.appendChild(eContractedIcon);\n this.addDestroyableEventListener(this.eExpanded, 'click', this.onExpandClicked.bind(this));\n this.addDestroyableEventListener(this.eContracted, 'click', this.onExpandClicked.bind(this));\n // expand / contract as the user hits enter\n this.addDestroyableEventListener(eGroupCell, 'keydown', this.onKeyDown.bind(this));\n this.addDestroyableEventListener(params.node, RowNode.EVENT_EXPANDED_CHANGED, this.showExpandAndContractIcons.bind(this));\n this.showExpandAndContractIcons();\n // because we don't show the expand / contract when there are no children, we need to check every time\n // the number of children change.\n this.addDestroyableEventListener(this.displayedGroup, RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, this.onAllChildrenCountChanged.bind(this));\n // if editing groups, then double click is to start editing\n if (!this.gridOptionsWrapper.isEnableGroupEdit() && this.isExpandable() && !params.suppressDoubleClickExpand) {\n this.addDestroyableEventListener(eGroupCell, 'dblclick', this.onCellDblClicked.bind(this));\n }\n };\n GroupCellRenderer.prototype.onAllChildrenCountChanged = function () {\n // maybe if no children now, we should hide the expand / contract icons\n this.showExpandAndContractIcons();\n // if we have no children, this impacts the indent\n this.setIndent();\n };\n GroupCellRenderer.prototype.onKeyDown = function (event) {\n var enterKeyPressed = _.isKeyPressed(event, Constants.KEY_ENTER);\n if (enterKeyPressed) {\n if (this.params.suppressEnterExpand) {\n return;\n }\n var cellEditable = this.params.column && this.params.column.isCellEditable(this.params.node);\n if (cellEditable) {\n return;\n }\n event.preventDefault();\n this.onExpandOrContract();\n }\n };\n GroupCellRenderer.prototype.setupDragOpenParents = function () {\n var column = this.params.column;\n var rowNode = this.params.node;\n if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n this.draggedFromHideOpenParents = false;\n }\n else if (!rowNode.hasChildren()) {\n // if we are here, and we are not a group, then we must of been dragged down,\n // as otherwise the cell would be blank, and if cell is blank, this method is never called.\n this.draggedFromHideOpenParents = true;\n }\n else {\n var rowGroupColumn = rowNode.rowGroupColumn;\n if (rowGroupColumn) {\n // if the displayGroup column for this col matches the rowGroupColumn we grouped by for this node,\n // then nothing was dragged down\n this.draggedFromHideOpenParents = !column.isRowGroupDisplayed(rowGroupColumn.getId());\n }\n else {\n // the only way we can end up here (no column, but a group) is if we are at the root node,\n // which only happens when 'groupIncludeTotalFooter' is true. here, we are never dragging\n this.draggedFromHideOpenParents = false;\n }\n }\n if (this.draggedFromHideOpenParents) {\n var pointer = rowNode.parent;\n while (true) {\n if (_.missing(pointer)) {\n break;\n }\n if (pointer.rowGroupColumn && column.isRowGroupDisplayed(pointer.rowGroupColumn.getId())) {\n this.displayedGroup = pointer;\n break;\n }\n pointer = pointer.parent;\n }\n }\n // if we didn't find a displayed group, set it to the row node\n if (_.missing(this.displayedGroup)) {\n this.displayedGroup = rowNode;\n }\n };\n GroupCellRenderer.prototype.onExpandClicked = function (mouseEvent) {\n if (_.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n // so if we expand a node, it does not also get selected.\n _.stopPropagationForAgGrid(mouseEvent);\n this.onExpandOrContract();\n };\n GroupCellRenderer.prototype.onCellDblClicked = function (mouseEvent) {\n if (_.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n // we want to avoid acting on double click events on the expand / contract icon,\n // as that icons already has expand / collapse functionality on it. otherwise if\n // the icon was double clicked, we would get 'click', 'click', 'dblclick' which\n // is open->close->open, however double click should be open->close only.\n var targetIsExpandIcon = _.isElementInEventPath(this.eExpanded, mouseEvent)\n || _.isElementInEventPath(this.eContracted, mouseEvent);\n if (!targetIsExpandIcon) {\n this.onExpandOrContract();\n }\n };\n GroupCellRenderer.prototype.onExpandOrContract = function () {\n // must use the displayedGroup, so if data was dragged down, we expand the parent, not this row\n var rowNode = this.displayedGroup;\n rowNode.setExpanded(!rowNode.expanded);\n };\n GroupCellRenderer.prototype.isExpandable = function () {\n var rowNode = this.params.node;\n var reducedLeafNode = this.columnController.isPivotMode() && rowNode.leafGroup;\n return this.draggedFromHideOpenParents ||\n (rowNode.isExpandable() && !rowNode.footer && !reducedLeafNode);\n };\n GroupCellRenderer.prototype.showExpandAndContractIcons = function () {\n var rowNode = this.params.node;\n if (this.isExpandable()) {\n // if expandable, show one based on expand state.\n // if we were dragged down, means our parent is always expanded\n var expanded = this.draggedFromHideOpenParents ? true : rowNode.expanded;\n _.setDisplayed(this.eContracted, !expanded);\n _.setDisplayed(this.eExpanded, expanded);\n }\n else {\n // it not expandable, show neither\n _.setDisplayed(this.eExpanded, false);\n _.setDisplayed(this.eContracted, false);\n }\n var displayedGroup = this.displayedGroup;\n // compensation padding for leaf nodes, so there is blank space instead of the expand icon\n var pivotModeAndLeafGroup = this.columnController.isPivotMode() && displayedGroup.leafGroup;\n var notExpandable = !displayedGroup.isExpandable();\n var addLeafIndentClass = displayedGroup.footer || notExpandable || pivotModeAndLeafGroup;\n this.addOrRemoveCssClass('ag-row-group', !addLeafIndentClass);\n this.addOrRemoveCssClass('ag-row-group-leaf-indent', addLeafIndentClass);\n };\n GroupCellRenderer.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.innerCellRenderer && this.innerCellRenderer.destroy) {\n this.innerCellRenderer.destroy();\n }\n };\n GroupCellRenderer.prototype.refresh = function () {\n return false;\n };\n GroupCellRenderer.TEMPLATE = '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], GroupCellRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('expressionService')\n ], GroupCellRenderer.prototype, \"expressionService\", void 0);\n __decorate([\n Autowired('eventService')\n ], GroupCellRenderer.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('valueFormatterService')\n ], GroupCellRenderer.prototype, \"valueFormatterService\", void 0);\n __decorate([\n Autowired('columnController')\n ], GroupCellRenderer.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('mouseEventService')\n ], GroupCellRenderer.prototype, \"mouseEventService\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], GroupCellRenderer.prototype, \"userComponentFactory\", void 0);\n __decorate([\n RefSelector('eExpanded')\n ], GroupCellRenderer.prototype, \"eExpanded\", void 0);\n __decorate([\n RefSelector('eContracted')\n ], GroupCellRenderer.prototype, \"eContracted\", void 0);\n __decorate([\n RefSelector('eCheckbox')\n ], GroupCellRenderer.prototype, \"eCheckbox\", void 0);\n __decorate([\n RefSelector('eValue')\n ], GroupCellRenderer.prototype, \"eValue\", void 0);\n __decorate([\n RefSelector('eChildCount')\n ], GroupCellRenderer.prototype, \"eChildCount\", void 0);\n return GroupCellRenderer;\n}(Component));\nexport { GroupCellRenderer };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { CellComp } from \"./cellComp\";\nimport { RowNode } from \"../entities/rowNode\";\nimport { Events } from \"../events\";\nimport { Component } from \"../widgets/component\";\nimport { _ } from \"../utils\";\nimport { Constants } from \"../constants\";\nimport { ModuleNames } from \"../modules/moduleNames\";\nimport { ModuleRegistry } from \"../modules/moduleRegistry\";\nvar RowComp = /** @class */ (function (_super) {\n __extends(RowComp, _super);\n function RowComp(parentScope, bodyContainerComp, pinnedLeftContainerComp, pinnedRightContainerComp, fullWidthContainerComp, rowNode, beans, animateIn, useAnimationFrameForCreate, printLayout, embedFullWidth) {\n var _this = _super.call(this) || this;\n _this.eAllRowContainers = [];\n _this.active = true;\n _this.rowContainerReadyCount = 0;\n _this.refreshNeeded = false;\n _this.columnRefreshPending = false;\n _this.cellComps = {};\n // for animations, there are bits we want done in the next VM turn, to all DOM to update first.\n // instead of each row doing a setTimeout(func,0), we put the functions here and the rowRenderer\n // executes them all in one timeout\n _this.createSecondPassFuncs = [];\n // these get called before the row is destroyed - they set up the DOM for the remove animation (ie they\n // set the DOM up for the animation), then the delayedDestroyFunctions get called when the animation is\n // complete (ie removes from the dom).\n _this.removeFirstPassFuncs = [];\n // for animations, these functions get called 400ms after the row is cleared, called by the rowRenderer\n // so each row isn't setting up it's own timeout\n _this.removeSecondPassFuncs = [];\n _this.initialised = false;\n _this.elementOrderChanged = false;\n _this.parentScope = parentScope;\n _this.beans = beans;\n _this.bodyContainerComp = bodyContainerComp;\n _this.pinnedLeftContainerComp = pinnedLeftContainerComp;\n _this.pinnedRightContainerComp = pinnedRightContainerComp;\n _this.fullWidthContainerComp = fullWidthContainerComp;\n _this.rowNode = rowNode;\n _this.rowIsEven = _this.rowNode.rowIndex % 2 === 0;\n _this.paginationPage = _this.beans.paginationProxy.getCurrentPage();\n _this.useAnimationFrameForCreate = useAnimationFrameForCreate;\n _this.printLayout = printLayout;\n _this.embedFullWidth = embedFullWidth;\n _this.setAnimateFlags(animateIn);\n return _this;\n }\n RowComp.prototype.init = function () {\n var _this = this;\n this.rowFocused = this.beans.focusedCellController.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n this.scope = this.createChildScopeOrNull(this.rowNode.data);\n this.setupRowContainers();\n this.addListeners();\n if (this.slideRowIn) {\n this.createSecondPassFuncs.push(function () {\n _this.onTopChanged();\n });\n }\n if (this.fadeRowIn) {\n this.createSecondPassFuncs.push(function () {\n _this.eAllRowContainers.forEach(function (eRow) { return _.removeCssClass(eRow, 'ag-opacity-zero'); });\n });\n }\n };\n RowComp.prototype.createTemplate = function (contents, extraCssClass) {\n if (extraCssClass === void 0) { extraCssClass = null; }\n var templateParts = [];\n var rowHeight = this.rowNode.rowHeight;\n var rowClasses = this.getInitialRowClasses(extraCssClass).join(' ');\n var rowIdSanitised = _.escape(this.rowNode.id);\n var userRowStyles = this.preProcessStylesFromGridOptions();\n var businessKey = this.getRowBusinessKey();\n var businessKeySanitised = _.escape(businessKey);\n var rowTopStyle = this.getInitialRowTopStyle();\n var rowIdx = this.rowNode.getRowIndexString();\n var headerRowCount = this.beans.gridPanel.headerRootComp.getHeaderRowCount();\n templateParts.push(\"\");\n // add in the template for the cells\n templateParts.push(contents);\n templateParts.push(\"\");\n return templateParts.join('');\n };\n RowComp.prototype.getCellForCol = function (column) {\n var cellComp = this.cellComps[column.getColId()];\n return cellComp ? cellComp.getGui() : null;\n };\n RowComp.prototype.afterFlush = function () {\n if (this.initialised) {\n return;\n }\n this.initialised = true;\n this.executeProcessRowPostCreateFunc();\n };\n RowComp.prototype.executeProcessRowPostCreateFunc = function () {\n var func = this.beans.gridOptionsWrapper.getProcessRowPostCreateFunc();\n if (!func) {\n return;\n }\n var params = {\n eRow: this.eBodyRow,\n ePinnedLeftRow: this.ePinnedLeftRow,\n ePinnedRightRow: this.ePinnedRightRow,\n node: this.rowNode,\n api: this.beans.gridOptionsWrapper.getApi(),\n rowIndex: this.rowNode.rowIndex,\n addRenderedRowListener: this.addEventListener.bind(this),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n };\n func(params);\n };\n RowComp.prototype.getInitialRowTopStyle = function () {\n // print layout uses normal flow layout for row positioning\n if (this.printLayout) {\n return '';\n }\n // if sliding in, we take the old row top. otherwise we just set the current row top.\n var pixels = this.slideRowIn ? this.roundRowTopToBounds(this.rowNode.oldRowTop) : this.rowNode.rowTop;\n var afterPaginationPixels = this.applyPaginationOffset(pixels);\n var afterScalingPixels = this.beans.maxDivHeightScaler.getRealPixelPosition(afterPaginationPixels);\n var isSuppressRowTransform = this.beans.gridOptionsWrapper.isSuppressRowTransform();\n return isSuppressRowTransform ? \"top: \" + afterScalingPixels + \"px; \" : \"transform: translateY(\" + afterScalingPixels + \"px);\";\n };\n RowComp.prototype.getRowBusinessKey = function () {\n var businessKeyForNodeFunc = this.beans.gridOptionsWrapper.getBusinessKeyForNodeFunc();\n if (typeof businessKeyForNodeFunc !== 'function') {\n return;\n }\n return businessKeyForNodeFunc(this.rowNode);\n };\n RowComp.prototype.areAllContainersReady = function () {\n return this.rowContainerReadyCount === 3;\n };\n RowComp.prototype.lazyCreateCells = function (cols, eRow) {\n if (!this.active) {\n return;\n }\n var cellTemplatesAndComps = this.createCells(cols);\n eRow.innerHTML = cellTemplatesAndComps.template;\n this.callAfterRowAttachedOnCells(cellTemplatesAndComps.cellComps, eRow);\n this.rowContainerReadyCount++;\n if (this.areAllContainersReady() && this.refreshNeeded) {\n this.refreshCells();\n }\n };\n RowComp.prototype.createRowContainer = function (rowContainerComp, cols, callback) {\n var _this = this;\n var useAnimationsFrameForCreate = this.useAnimationFrameForCreate;\n var cellTemplatesAndComps = useAnimationsFrameForCreate ? { cellComps: [], template: '' } : this.createCells(cols);\n var rowTemplate = this.createTemplate(cellTemplatesAndComps.template);\n // the RowRenderer is probably inserting many rows. rather than inserting each template one\n // at a time, the grid inserts all rows together - so the callback here is called by the\n // rowRenderer when all RowComps are created, then all the HTML is inserted in one go,\n // and then all the callbacks are called. this is NOT done in an animation frame.\n rowContainerComp.appendRowTemplate(rowTemplate, function () {\n var eRow = rowContainerComp.getRowElement(_this.getCompId());\n _this.afterRowAttached(rowContainerComp, eRow);\n callback(eRow);\n if (useAnimationsFrameForCreate) {\n _this.beans.taskQueue.createTask(_this.lazyCreateCells.bind(_this, cols, eRow), _this.rowNode.rowIndex, 'createTasksP1');\n }\n else {\n _this.callAfterRowAttachedOnCells(cellTemplatesAndComps.cellComps, eRow);\n _this.rowContainerReadyCount = 3;\n }\n });\n };\n RowComp.prototype.createChildScopeOrNull = function (data) {\n var isAngularCompileRows = this.beans.gridOptionsWrapper.isAngularCompileRows();\n if (!isAngularCompileRows) {\n return null;\n }\n var newChildScope = this.parentScope.$new();\n newChildScope.data = __assign({}, data);\n newChildScope.rowNode = this.rowNode;\n newChildScope.context = this.beans.gridOptionsWrapper.getContext();\n this.addDestroyFunc(function () {\n newChildScope.$destroy();\n newChildScope.data = null;\n newChildScope.rowNode = null;\n newChildScope.context = null;\n });\n return newChildScope;\n };\n RowComp.prototype.setupRowContainers = function () {\n var isFullWidthCell = this.rowNode.isFullWidthCell();\n var isDetailCell = this.beans.doingMasterDetail && this.rowNode.detail;\n var pivotMode = this.beans.columnController.isPivotMode();\n // we only use full width for groups, not footers. it wouldn't make sense to include footers if not looking\n // for totals. if users complain about this, then we should introduce a new property 'footerUseEntireRow'\n // so each can be set independently (as a customer complained about footers getting full width, hence\n // introducing this logic)\n var isGroupRow = this.rowNode.group && !this.rowNode.footer;\n var isFullWidthGroup = isGroupRow && this.beans.gridOptionsWrapper.isGroupUseEntireRow(pivotMode);\n if (this.rowNode.stub) {\n this.createFullWidthRows(RowComp.LOADING_CELL_RENDERER, RowComp.LOADING_CELL_RENDERER_COMP_NAME);\n }\n else if (isDetailCell) {\n this.createFullWidthRows(RowComp.DETAIL_CELL_RENDERER, RowComp.DETAIL_CELL_RENDERER_COMP_NAME);\n }\n else if (isFullWidthCell) {\n this.createFullWidthRows(RowComp.FULL_WIDTH_CELL_RENDERER, null);\n }\n else if (isFullWidthGroup) {\n this.createFullWidthRows(RowComp.GROUP_ROW_RENDERER, RowComp.GROUP_ROW_RENDERER_COMP_NAME);\n }\n else {\n this.setupNormalRowContainers();\n }\n };\n RowComp.prototype.setupNormalRowContainers = function () {\n var _this = this;\n var centerCols;\n var leftCols;\n var rightCols;\n if (this.printLayout) {\n centerCols = this.beans.columnController.getAllDisplayedColumns();\n leftCols = [];\n rightCols = [];\n }\n else {\n centerCols = this.beans.columnController.getAllDisplayedCenterVirtualColumnsForRow(this.rowNode);\n leftCols = this.beans.columnController.getDisplayedLeftColumnsForRow(this.rowNode);\n rightCols = this.beans.columnController.getDisplayedRightColumnsForRow(this.rowNode);\n }\n this.createRowContainer(this.bodyContainerComp, centerCols, function (eRow) { return _this.eBodyRow = eRow; });\n this.createRowContainer(this.pinnedRightContainerComp, rightCols, function (eRow) { return _this.ePinnedRightRow = eRow; });\n this.createRowContainer(this.pinnedLeftContainerComp, leftCols, function (eRow) { return _this.ePinnedLeftRow = eRow; });\n };\n RowComp.prototype.createFullWidthRows = function (type, name) {\n var _this = this;\n this.fullWidthRow = true;\n if (this.embedFullWidth) {\n this.createFullWidthRowContainer(this.bodyContainerComp, null, null, type, name, function (eRow) {\n _this.eFullWidthRowBody = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponentBody = cellRenderer;\n });\n // printLayout doesn't put components into the pinned sections\n if (!this.printLayout) {\n this.createFullWidthRowContainer(this.pinnedLeftContainerComp, Constants.PINNED_LEFT, 'ag-cell-last-left-pinned', type, name, function (eRow) {\n _this.eFullWidthRowLeft = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponentLeft = cellRenderer;\n });\n this.createFullWidthRowContainer(this.pinnedRightContainerComp, Constants.PINNED_RIGHT, 'ag-cell-first-right-pinned', type, name, function (eRow) {\n _this.eFullWidthRowRight = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponentRight = cellRenderer;\n });\n }\n }\n else {\n // otherwise we add to the fullWidth container as normal\n // let previousFullWidth = ensureDomOrder ? this.lastPlacedElements.eFullWidth : null;\n this.createFullWidthRowContainer(this.fullWidthContainerComp, null, null, type, name, function (eRow) {\n _this.eFullWidthRow = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponent = cellRenderer;\n });\n }\n };\n RowComp.prototype.setAnimateFlags = function (animateIn) {\n if (animateIn) {\n var oldRowTopExists = _.exists(this.rowNode.oldRowTop);\n // if the row had a previous position, we slide it in (animate row top)\n this.slideRowIn = oldRowTopExists;\n // if the row had no previous position, we fade it in (animate\n this.fadeRowIn = !oldRowTopExists;\n }\n else {\n this.slideRowIn = false;\n this.fadeRowIn = false;\n }\n };\n RowComp.prototype.isEditing = function () {\n return this.editingRow;\n };\n RowComp.prototype.stopRowEditing = function (cancel) {\n this.stopEditing(cancel);\n };\n RowComp.prototype.isFullWidth = function () {\n return this.fullWidthRow;\n };\n RowComp.prototype.refreshFullWidth = function () {\n var _this = this;\n // returns 'true' if refresh succeeded\n var tryRefresh = function (eRow, eCellComp, pinned) {\n if (!eRow || !eCellComp) {\n // no refresh needed\n return true;\n }\n if (!eCellComp.refresh) {\n // no refresh method present, so can't refresh, hard refresh needed\n return false;\n }\n var params = _this.createFullWidthParams(eRow, pinned);\n var refreshSucceeded = eCellComp.refresh(params);\n return refreshSucceeded;\n };\n var normalSuccess = tryRefresh(this.eFullWidthRow, this.fullWidthRowComponent, null);\n var bodySuccess = tryRefresh(this.eFullWidthRowBody, this.fullWidthRowComponentBody, null);\n var leftSuccess = tryRefresh(this.eFullWidthRowLeft, this.fullWidthRowComponentLeft, Constants.PINNED_LEFT);\n var rightSuccess = tryRefresh(this.eFullWidthRowRight, this.fullWidthRowComponentRight, Constants.PINNED_RIGHT);\n var allFullWidthRowsRefreshed = normalSuccess && bodySuccess && leftSuccess && rightSuccess;\n return allFullWidthRowsRefreshed;\n };\n RowComp.prototype.addListeners = function () {\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_HEIGHT_CHANGED, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_ROW_INDEX_CHANGED, this.onRowIndexChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_TOP_CHANGED, this.onTopChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_EXPANDED_CHANGED, this.onExpandedChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.onRowNodeDataChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.onRowNodeCellChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_DRAGGING_CHANGED, this.onRowNodeDraggingChanged.bind(this));\n var eventService = this.beans.eventService;\n this.addDestroyableEventListener(eventService, Events.EVENT_HEIGHT_SCALE_CHANGED, this.onTopChanged.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_CELL_FOCUSED, this.onCellFocusChanged.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_COLUMN_MOVED, this.onColumnMoved.bind(this));\n this.addListenersForCellComps();\n };\n RowComp.prototype.addListenersForCellComps = function () {\n var _this = this;\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_ROW_INDEX_CHANGED, function () {\n _this.forEachCellComp(function (cellComp) { return cellComp.onRowIndexChanged(); });\n });\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, function (event) {\n _this.forEachCellComp(function (cellComp) { return cellComp.onCellChanged(event); });\n });\n };\n // when grid columns change, then all cells should be cleaned out,\n // as the new columns could have same id as the previous columns and may conflict\n RowComp.prototype.onGridColumnsChanged = function () {\n this.removeRenderedCells(Object.keys(this.cellComps));\n };\n RowComp.prototype.onRowNodeDataChanged = function (event) {\n // if this is an update, we want to refresh, as this will allow the user to put in a transition\n // into the cellRenderer refresh method. otherwise this might be completely new data, in which case\n // we will want to completely replace the cells\n this.forEachCellComp(function (cellComp) {\n return cellComp.refreshCell({\n suppressFlash: !event.update,\n newData: !event.update\n });\n });\n // check for selected also, as this could be after lazy loading of the row data, in which case\n // the id might of just gotten set inside the row and the row selected state may of changed\n // as a result. this is what happens when selected rows are loaded in virtual pagination.\n // - niall note - since moving to the stub component, this may no longer be true, as replacing\n // the stub component now replaces the entire row\n this.onRowSelected();\n // as data has changed, then the style and class needs to be recomputed\n this.postProcessCss();\n };\n RowComp.prototype.onRowNodeCellChanged = function (event) {\n // as data has changed, then the style and class needs to be recomputed\n this.postProcessCss();\n };\n RowComp.prototype.postProcessCss = function () {\n this.postProcessStylesFromGridOptions();\n this.postProcessClassesFromGridOptions();\n this.postProcessRowClassRules();\n this.postProcessRowDragging();\n };\n RowComp.prototype.onRowNodeDraggingChanged = function () {\n this.postProcessRowDragging();\n };\n RowComp.prototype.postProcessRowDragging = function () {\n var dragging = this.rowNode.dragging;\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-dragging', dragging); });\n };\n RowComp.prototype.onExpandedChanged = function () {\n var rowNode = this.rowNode;\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-group-expanded', rowNode.expanded); });\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-group-contracted', !rowNode.expanded); });\n };\n RowComp.prototype.onDisplayedColumnsChanged = function () {\n if (this.fullWidthRow) {\n return;\n }\n this.refreshCells();\n };\n RowComp.prototype.destroyFullWidthComponents = function () {\n if (this.fullWidthRowComponent) {\n this.beans.detailRowCompCache.addOrDestroy(this.rowNode, null, this.fullWidthRowComponent);\n this.fullWidthRowComponent = null;\n }\n if (this.fullWidthRowComponentBody) {\n this.beans.detailRowCompCache.addOrDestroy(this.rowNode, null, this.fullWidthRowComponentBody);\n this.fullWidthRowComponent = null;\n }\n if (this.fullWidthRowComponentLeft) {\n this.beans.detailRowCompCache.addOrDestroy(this.rowNode, Constants.PINNED_LEFT, this.fullWidthRowComponentLeft);\n this.fullWidthRowComponentLeft = null;\n }\n if (this.fullWidthRowComponentRight) {\n this.beans.detailRowCompCache.addOrDestroy(this.rowNode, Constants.PINNED_RIGHT, this.fullWidthRowComponentRight);\n this.fullWidthRowComponent = null;\n }\n };\n RowComp.prototype.getContainerForCell = function (pinnedType) {\n switch (pinnedType) {\n case Constants.PINNED_LEFT: return this.ePinnedLeftRow;\n case Constants.PINNED_RIGHT: return this.ePinnedRightRow;\n default: return this.eBodyRow;\n }\n };\n RowComp.prototype.onVirtualColumnsChanged = function () {\n if (this.fullWidthRow) {\n return;\n }\n this.refreshCells();\n };\n RowComp.prototype.onColumnResized = function () {\n if (this.fullWidthRow) {\n return;\n }\n this.refreshCells();\n };\n RowComp.prototype.refreshCells = function () {\n if (!this.areAllContainersReady()) {\n this.refreshNeeded = true;\n return;\n }\n var suppressAnimationFrame = this.beans.gridOptionsWrapper.isSuppressAnimationFrame();\n var skipAnimationFrame = suppressAnimationFrame || this.printLayout;\n if (skipAnimationFrame) {\n this.refreshCellsInAnimationFrame();\n }\n else {\n if (this.columnRefreshPending) {\n return;\n }\n this.beans.taskQueue.createTask(this.refreshCellsInAnimationFrame.bind(this), this.rowNode.rowIndex, 'createTasksP1');\n }\n };\n RowComp.prototype.refreshCellsInAnimationFrame = function () {\n if (!this.active) {\n return;\n }\n this.columnRefreshPending = false;\n var centerCols;\n var leftCols;\n var rightCols;\n if (this.printLayout) {\n centerCols = this.beans.columnController.getAllDisplayedColumns();\n leftCols = [];\n rightCols = [];\n }\n else {\n centerCols = this.beans.columnController.getAllDisplayedCenterVirtualColumnsForRow(this.rowNode);\n leftCols = this.beans.columnController.getDisplayedLeftColumnsForRow(this.rowNode);\n rightCols = this.beans.columnController.getDisplayedRightColumnsForRow(this.rowNode);\n }\n this.insertCellsIntoContainer(this.eBodyRow, centerCols);\n this.insertCellsIntoContainer(this.ePinnedLeftRow, leftCols);\n this.insertCellsIntoContainer(this.ePinnedRightRow, rightCols);\n this.elementOrderChanged = false;\n var colIdsToRemove = Object.keys(this.cellComps);\n centerCols.forEach(function (col) { return _.removeFromArray(colIdsToRemove, col.getId()); });\n leftCols.forEach(function (col) { return _.removeFromArray(colIdsToRemove, col.getId()); });\n rightCols.forEach(function (col) { return _.removeFromArray(colIdsToRemove, col.getId()); });\n // we never remove editing cells, as this would cause the cells to loose their values while editing\n // as the grid is scrolling horizontally.\n var eligibleToBeRemoved = colIdsToRemove.filter(this.isCellEligibleToBeRemoved.bind(this));\n // remove old cells from gui, but we don't destroy them, we might use them again\n this.removeRenderedCells(eligibleToBeRemoved);\n };\n RowComp.prototype.onColumnMoved = function () {\n this.elementOrderChanged = true;\n };\n RowComp.prototype.removeRenderedCells = function (colIds) {\n var _this = this;\n colIds.forEach(function (key) {\n var cellComp = _this.cellComps[key];\n // could be old reference, ie removed cell\n if (_.missing(cellComp)) {\n return;\n }\n cellComp.detach();\n cellComp.destroy();\n _this.cellComps[key] = null;\n });\n };\n RowComp.prototype.isCellEligibleToBeRemoved = function (indexStr) {\n var displayedColumns = this.beans.columnController.getAllDisplayedColumns();\n var REMOVE_CELL = true;\n var KEEP_CELL = false;\n var renderedCell = this.cellComps[indexStr];\n if (!renderedCell) {\n return REMOVE_CELL;\n }\n // always remove the cell if it's in the wrong pinned location\n if (this.isCellInWrongRow(renderedCell)) {\n return REMOVE_CELL;\n }\n // we want to try and keep editing and focused cells\n var editing = renderedCell.isEditing();\n var focused = this.beans.focusedCellController.isCellFocused(renderedCell.getCellPosition());\n var mightWantToKeepCell = editing || focused;\n if (mightWantToKeepCell) {\n var column = renderedCell.getColumn();\n var cellStillDisplayed = displayedColumns.indexOf(column) >= 0;\n return cellStillDisplayed ? KEEP_CELL : REMOVE_CELL;\n }\n return REMOVE_CELL;\n };\n RowComp.prototype.ensureCellInCorrectContainer = function (cellComp) {\n // for print layout, we always put cells into centre, otherwise we put in correct pinned section\n if (this.printLayout) {\n return;\n }\n var element = cellComp.getGui();\n var column = cellComp.getColumn();\n var pinnedType = column.getPinned();\n var eContainer = this.getContainerForCell(pinnedType);\n // if in wrong container, remove it\n var eOldContainer = cellComp.getParentRow();\n var inWrongRow = eOldContainer !== eContainer;\n if (inWrongRow) {\n // take out from old row\n if (eOldContainer) {\n eOldContainer.removeChild(element);\n }\n eContainer.appendChild(element);\n cellComp.setParentRow(eContainer);\n this.elementOrderChanged = true;\n }\n };\n RowComp.prototype.isCellInWrongRow = function (cellComp) {\n var column = cellComp.getColumn();\n var rowWeWant = this.getContainerForCell(column.getPinned());\n // if in wrong container, remove it\n var oldRow = cellComp.getParentRow();\n return oldRow !== rowWeWant;\n };\n RowComp.prototype.insertCellsIntoContainer = function (eRow, cols) {\n var _this = this;\n if (!eRow) {\n return;\n }\n var cellTemplates = [];\n var newCellComps = [];\n cols.forEach(function (col) {\n var colId = col.getId();\n var existingCell = _this.cellComps[colId];\n if (existingCell) {\n _this.ensureCellInCorrectContainer(existingCell);\n }\n else {\n _this.createNewCell(col, eRow, cellTemplates, newCellComps);\n }\n });\n if (cellTemplates.length > 0) {\n _.appendHtml(eRow, cellTemplates.join(''));\n this.callAfterRowAttachedOnCells(newCellComps, eRow);\n }\n if (this.elementOrderChanged && this.beans.gridOptionsWrapper.isEnsureDomOrder()) {\n var correctChildOrder = cols.map(function (col) { return _this.getCellForCol(col); });\n _.setDomChildOrder(eRow, correctChildOrder);\n }\n };\n RowComp.prototype.addDomData = function (eRowContainer) {\n var gow = this.beans.gridOptionsWrapper;\n gow.setDomData(eRowContainer, RowComp.DOM_DATA_KEY_RENDERED_ROW, this);\n this.addDestroyFunc(function () {\n gow.setDomData(eRowContainer, RowComp.DOM_DATA_KEY_RENDERED_ROW, null);\n });\n };\n RowComp.prototype.createNewCell = function (col, eContainer, cellTemplates, newCellComps) {\n var newCellComp = new CellComp(this.scope, this.beans, col, this.rowNode, this, false, this.printLayout);\n var cellTemplate = newCellComp.getCreateTemplate();\n cellTemplates.push(cellTemplate);\n newCellComps.push(newCellComp);\n this.cellComps[col.getId()] = newCellComp;\n newCellComp.setParentRow(eContainer);\n this.elementOrderChanged = true;\n };\n RowComp.prototype.onMouseEvent = function (eventName, mouseEvent) {\n switch (eventName) {\n case 'dblclick':\n this.onRowDblClick(mouseEvent);\n break;\n case 'click':\n this.onRowClick(mouseEvent);\n break;\n }\n };\n RowComp.prototype.createRowEvent = function (type, domEvent) {\n return {\n type: type,\n node: this.rowNode,\n data: this.rowNode.data,\n rowIndex: this.rowNode.rowIndex,\n rowPinned: this.rowNode.rowPinned,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n event: domEvent\n };\n };\n RowComp.prototype.createRowEventWithSource = function (type, domEvent) {\n var event = this.createRowEvent(type, domEvent);\n // when first developing this, we included the rowComp in the event.\n // this seems very weird. so when introducing the event types, i left the 'source'\n // out of the type, and just include the source in the two places where this event\n // was fired (rowClicked and rowDoubleClicked). it doesn't make sense for any\n // users to be using this, as the rowComp isn't an object we expose, so would be\n // very surprising if a user was using it.\n event.source = this;\n return event;\n };\n RowComp.prototype.onRowDblClick = function (mouseEvent) {\n if (_.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n var agEvent = this.createRowEventWithSource(Events.EVENT_ROW_DOUBLE_CLICKED, mouseEvent);\n this.beans.eventService.dispatchEvent(agEvent);\n };\n RowComp.prototype.onRowClick = function (mouseEvent) {\n var stop = _.isStopPropagationForAgGrid(mouseEvent);\n if (stop) {\n return;\n }\n var agEvent = this.createRowEventWithSource(Events.EVENT_ROW_CLICKED, mouseEvent);\n this.beans.eventService.dispatchEvent(agEvent);\n // ctrlKey for windows, metaKey for Apple\n var multiSelectKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;\n var shiftKeyPressed = mouseEvent.shiftKey;\n if (\n // we do not allow selecting groups by clicking (as the click here expands the group), or if it's a detail row,\n // so return if it's a group row\n this.rowNode.group ||\n // this is needed so we don't unselect other rows when we click this row, eg if this row is not selectable,\n // and we click it, the selection should not change (ie any currently selected row should stay selected)\n !this.rowNode.selectable ||\n // we also don't allow selection of pinned rows\n this.rowNode.rowPinned ||\n // if no selection method enabled, do nothing\n !this.beans.gridOptionsWrapper.isRowSelection() ||\n // if click selection suppressed, do nothing\n this.beans.gridOptionsWrapper.isSuppressRowClickSelection()) {\n return;\n }\n var multiSelectOnClick = this.beans.gridOptionsWrapper.isRowMultiSelectWithClick();\n var rowDeselectionWithCtrl = this.beans.gridOptionsWrapper.isRowDeselection();\n if (this.rowNode.isSelected()) {\n if (multiSelectOnClick) {\n this.rowNode.setSelectedParams({ newValue: false });\n }\n else if (multiSelectKeyPressed) {\n if (rowDeselectionWithCtrl) {\n this.rowNode.setSelectedParams({ newValue: false });\n }\n }\n else {\n // selected with no multi key, must make sure anything else is unselected\n this.rowNode.setSelectedParams({ newValue: true, clearSelection: true });\n }\n }\n else {\n var clearSelection = multiSelectOnClick ? false : !multiSelectKeyPressed;\n this.rowNode.setSelectedParams({ newValue: true, clearSelection: clearSelection, rangeSelect: shiftKeyPressed });\n }\n };\n RowComp.prototype.createFullWidthRowContainer = function (rowContainerComp, pinned, extraCssClass, cellRendererType, cellRendererName, eRowCallback, cellRendererCallback) {\n var _this = this;\n var rowTemplate = this.createTemplate('', extraCssClass);\n rowContainerComp.appendRowTemplate(rowTemplate, function () {\n var eRow = rowContainerComp.getRowElement(_this.getCompId());\n var params = _this.createFullWidthParams(eRow, pinned);\n var callback = function (cellRenderer) {\n if (_this.isAlive()) {\n var gui = cellRenderer.getGui();\n eRow.appendChild(gui);\n cellRendererCallback(cellRenderer);\n }\n else {\n if (cellRenderer.destroy) {\n cellRenderer.destroy();\n }\n }\n };\n // if doing master detail, it's possible we have a cached row comp from last time detail was displayed\n var cachedRowComp = _this.beans.detailRowCompCache.get(_this.rowNode, pinned);\n if (cachedRowComp) {\n callback(cachedRowComp);\n }\n else {\n var res = _this.beans.userComponentFactory.newFullWidthCellRenderer(params, cellRendererType, cellRendererName);\n if (!res) {\n var masterDetailModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.MasterDetailModule);\n if (cellRendererName === 'agDetailCellRenderer' && !masterDetailModuleLoaded) {\n console.warn(\"ag-Grid: cell renderer agDetailCellRenderer (for master detail) not found. Did you forget to include the master detail module?\");\n }\n else {\n console.error(\"ag-Grid: fullWidthCellRenderer \" + cellRendererName + \" not found\");\n }\n return;\n }\n res.then(callback);\n }\n _this.afterRowAttached(rowContainerComp, eRow);\n eRowCallback(eRow);\n _this.angular1Compile(eRow);\n });\n };\n RowComp.prototype.angular1Compile = function (element) {\n if (!this.scope) {\n return;\n }\n this.beans.$compile(element)(this.scope);\n };\n RowComp.prototype.createFullWidthParams = function (eRow, pinned) {\n var params = {\n fullWidth: true,\n data: this.rowNode.data,\n node: this.rowNode,\n value: this.rowNode.key,\n $scope: this.scope ? this.scope : this.parentScope,\n $compile: this.beans.$compile,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n // these need to be taken out, as part of 'afterAttached' now\n eGridCell: eRow,\n eParentOfValue: eRow,\n pinned: pinned,\n addRenderedRowListener: this.addEventListener.bind(this)\n };\n return params;\n };\n RowComp.prototype.getInitialRowClasses = function (extraCssClass) {\n var classes = [];\n var isTreeData = this.beans.gridOptionsWrapper.isTreeData();\n var rowNode = this.rowNode;\n if (_.exists(extraCssClass)) {\n classes.push(extraCssClass);\n }\n classes.push('ag-row');\n classes.push(this.rowFocused ? 'ag-row-focus' : 'ag-row-no-focus');\n if (this.fadeRowIn) {\n classes.push('ag-opacity-zero');\n }\n classes.push(this.rowIsEven ? 'ag-row-even' : 'ag-row-odd');\n if (rowNode.isSelected()) {\n classes.push('ag-row-selected');\n }\n if (rowNode.group) {\n classes.push('ag-row-group');\n // if a group, put the level of the group in\n classes.push('ag-row-level-' + rowNode.level);\n if (rowNode.footer) {\n classes.push('ag-row-footer');\n }\n }\n else {\n // if a leaf, and a parent exists, put a level of the parent, else put level of 0 for top level item\n classes.push('ag-row-level-' + (rowNode.parent ? (rowNode.parent.level + 1) : '0'));\n }\n if (rowNode.stub) {\n classes.push('ag-row-stub');\n }\n if (this.fullWidthRow) {\n classes.push('ag-full-width-row');\n }\n var addExpandedClass = isTreeData ?\n // if doing tree data, we add the expanded classes if any children, as any node can be a parent\n rowNode.allChildrenCount :\n // if normal row grouping, we add expanded classes to groups only\n rowNode.group && !rowNode.footer;\n if (addExpandedClass) {\n classes.push(rowNode.expanded ? 'ag-row-group-expanded' : 'ag-row-group-contracted');\n }\n if (rowNode.dragging) {\n classes.push('ag-row-dragging');\n }\n _.pushAll(classes, this.processClassesFromGridOptions());\n _.pushAll(classes, this.preProcessRowClassRules());\n // we use absolute position unless we are doing print layout\n classes.push(this.printLayout ? 'ag-row-position-relative' : 'ag-row-position-absolute');\n this.firstRowOnPage = this.isFirstRowOnPage();\n this.lastRowOnPage = this.isLastRowOnPage();\n if (this.firstRowOnPage) {\n classes.push('ag-row-first');\n }\n if (this.lastRowOnPage) {\n classes.push('ag-row-last');\n }\n return classes;\n };\n RowComp.prototype.isFirstRowOnPage = function () {\n return this.rowNode.rowIndex === this.beans.paginationProxy.getPageFirstRow();\n };\n RowComp.prototype.isLastRowOnPage = function () {\n return this.rowNode.rowIndex === this.beans.paginationProxy.getPageLastRow();\n };\n RowComp.prototype.onModelUpdated = function () {\n var newFirst = this.isFirstRowOnPage();\n var newLast = this.isLastRowOnPage();\n if (this.firstRowOnPage !== newFirst) {\n this.firstRowOnPage = newFirst;\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-first', newFirst); });\n }\n if (this.lastRowOnPage !== newLast) {\n this.lastRowOnPage = newLast;\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-last', newLast); });\n }\n };\n RowComp.prototype.preProcessRowClassRules = function () {\n var res = [];\n this.processRowClassRules(function (className) {\n res.push(className);\n }, function (className) {\n // not catered for, if creating, no need\n // to remove class as it was never there\n });\n return res;\n };\n RowComp.prototype.processRowClassRules = function (onApplicableClass, onNotApplicableClass) {\n this.beans.stylingService.processClassRules(this.beans.gridOptionsWrapper.rowClassRules(), {\n value: undefined,\n colDef: undefined,\n data: this.rowNode.data,\n node: this.rowNode,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n $scope: this.scope,\n context: this.beans.gridOptionsWrapper.getContext()\n }, onApplicableClass, onNotApplicableClass);\n };\n RowComp.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.forEachCellComp(function (renderedCell) {\n renderedCell.stopEditing(cancel);\n });\n if (!this.editingRow) {\n return;\n }\n if (!cancel) {\n var event_1 = this.createRowEvent(Events.EVENT_ROW_VALUE_CHANGED);\n this.beans.eventService.dispatchEvent(event_1);\n }\n this.setEditingRow(false);\n };\n RowComp.prototype.setEditingRow = function (value) {\n this.editingRow = value;\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-editing', value); });\n var event = value ?\n this.createRowEvent(Events.EVENT_ROW_EDITING_STARTED)\n : this.createRowEvent(Events.EVENT_ROW_EDITING_STOPPED);\n this.beans.eventService.dispatchEvent(event);\n };\n RowComp.prototype.startRowEditing = function (keyPress, charPress, sourceRenderedCell) {\n if (keyPress === void 0) { keyPress = null; }\n if (charPress === void 0) { charPress = null; }\n if (sourceRenderedCell === void 0) { sourceRenderedCell = null; }\n // don't do it if already editing\n if (this.editingRow) {\n return;\n }\n this.forEachCellComp(function (renderedCell) {\n var cellStartedEdit = renderedCell === sourceRenderedCell;\n if (cellStartedEdit) {\n renderedCell.startEditingIfEnabled(keyPress, charPress, cellStartedEdit);\n }\n else {\n renderedCell.startEditingIfEnabled(null, null, cellStartedEdit);\n }\n });\n this.setEditingRow(true);\n };\n RowComp.prototype.forEachCellComp = function (callback) {\n _.iterateObject(this.cellComps, function (key, cellComp) {\n if (!cellComp) {\n return;\n }\n callback(cellComp);\n });\n };\n RowComp.prototype.postProcessClassesFromGridOptions = function () {\n var _this = this;\n var cssClasses = this.processClassesFromGridOptions();\n if (!cssClasses || !cssClasses.length) {\n return;\n }\n cssClasses.forEach(function (classStr) {\n _this.eAllRowContainers.forEach(function (row) { return _.addCssClass(row, classStr); });\n });\n };\n RowComp.prototype.postProcessRowClassRules = function () {\n var _this = this;\n this.processRowClassRules(function (className) {\n _this.eAllRowContainers.forEach(function (row) { return _.addCssClass(row, className); });\n }, function (className) {\n _this.eAllRowContainers.forEach(function (row) { return _.removeCssClass(row, className); });\n });\n };\n RowComp.prototype.processClassesFromGridOptions = function () {\n var res = [];\n var process = function (rowCls) {\n if (typeof rowCls === 'string') {\n res.push(rowCls);\n }\n else if (Array.isArray(rowCls)) {\n rowCls.forEach(function (e) { return res.push(e); });\n }\n };\n // part 1 - rowClass\n var rowClass = this.beans.gridOptionsWrapper.getRowClass();\n if (rowClass) {\n if (typeof rowClass === 'function') {\n console.warn('ag-Grid: rowClass should not be a function, please use getRowClass instead');\n return;\n }\n process(rowClass);\n }\n // part 2 - rowClassFunc\n var rowClassFunc = this.beans.gridOptionsWrapper.getRowClassFunc();\n if (rowClassFunc) {\n var params = {\n node: this.rowNode,\n data: this.rowNode.data,\n rowIndex: this.rowNode.rowIndex,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi()\n };\n var rowClassFuncResult = rowClassFunc(params);\n process(rowClassFuncResult);\n }\n return res;\n };\n RowComp.prototype.preProcessStylesFromGridOptions = function () {\n var rowStyles = this.processStylesFromGridOptions();\n return _.cssStyleObjectToMarkup(rowStyles);\n };\n RowComp.prototype.postProcessStylesFromGridOptions = function () {\n var rowStyles = this.processStylesFromGridOptions();\n this.eAllRowContainers.forEach(function (row) { return _.addStylesToElement(row, rowStyles); });\n };\n RowComp.prototype.processStylesFromGridOptions = function () {\n // part 1 - rowStyle\n var rowStyle = this.beans.gridOptionsWrapper.getRowStyle();\n if (rowStyle && typeof rowStyle === 'function') {\n console.warn('ag-Grid: rowStyle should be an object of key/value styles, not be a function, use getRowStyle() instead');\n return;\n }\n // part 1 - rowStyleFunc\n var rowStyleFunc = this.beans.gridOptionsWrapper.getRowStyleFunc();\n var rowStyleFuncResult;\n if (rowStyleFunc) {\n var params = {\n data: this.rowNode.data,\n node: this.rowNode,\n api: this.beans.gridOptionsWrapper.getApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n $scope: this.scope\n };\n rowStyleFuncResult = rowStyleFunc(params);\n }\n return _.assign({}, rowStyle, rowStyleFuncResult);\n };\n RowComp.prototype.createCells = function (cols) {\n var _this = this;\n var templateParts = [];\n var newCellComps = [];\n cols.forEach(function (col) {\n var newCellComp = new CellComp(_this.scope, _this.beans, col, _this.rowNode, _this, false, _this.printLayout);\n var cellTemplate = newCellComp.getCreateTemplate();\n templateParts.push(cellTemplate);\n newCellComps.push(newCellComp);\n _this.cellComps[col.getId()] = newCellComp;\n });\n var templateAndComps = {\n template: templateParts.join(''),\n cellComps: newCellComps\n };\n return templateAndComps;\n };\n RowComp.prototype.onRowSelected = function () {\n var selected = this.rowNode.isSelected();\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-selected', selected); });\n };\n // called:\n // + after row created for first time\n // + after horizontal scroll, so new cells due to column virtualisation\n RowComp.prototype.callAfterRowAttachedOnCells = function (newCellComps, eRow) {\n var _this = this;\n newCellComps.forEach(function (cellComp) {\n cellComp.setParentRow(eRow);\n cellComp.afterAttached();\n // if we are editing the row, then the cell needs to turn\n // into edit mode\n if (_this.editingRow) {\n cellComp.startEditingIfEnabled();\n }\n });\n };\n RowComp.prototype.afterRowAttached = function (rowContainerComp, eRow) {\n var _this = this;\n this.addDomData(eRow);\n this.removeSecondPassFuncs.push(function () {\n rowContainerComp.removeRowElement(eRow);\n });\n this.removeFirstPassFuncs.push(function () {\n if (_.exists(_this.rowNode.rowTop)) {\n // the row top is updated anyway, however we set it here again\n // to something more reasonable for the animation - ie if the\n // row top is 10000px away, the row will flash out, so this\n // gives it a rounded value, so row animates out more slowly\n var rowTop = _this.roundRowTopToBounds(_this.rowNode.rowTop);\n _this.setRowTop(rowTop);\n }\n else {\n _.addCssClass(eRow, 'ag-opacity-zero');\n }\n });\n this.eAllRowContainers.push(eRow);\n // adding hover functionality adds listener to this row, so we\n // do it lazily in an animation frame\n if (this.useAnimationFrameForCreate) {\n this.beans.taskQueue.createTask(this.addHoverFunctionality.bind(this, eRow), this.rowNode.rowIndex, 'createTasksP2');\n }\n else {\n this.addHoverFunctionality(eRow);\n }\n };\n RowComp.prototype.addHoverFunctionality = function (eRow) {\n var _this = this;\n // because we use animation frames to do this, it's possible the row no longer exists\n // by the time we get to add it\n if (!this.active) {\n return;\n }\n // because mouseenter and mouseleave do not propagate, we cannot listen on the gridPanel\n // like we do for all the other mouse events.\n // because of the pinning, we cannot simply add / remove the class based on the eRow. we\n // have to check all eRow's (body & pinned). so the trick is if any of the rows gets a\n // mouse hover, it sets such in the rowNode, and then all three reflect the change as\n // all are listening for event on the row node.\n // step 1 - add listener, to set flag on row node\n this.addDestroyableEventListener(eRow, 'mouseenter', function () { return _this.rowNode.onMouseEnter(); });\n this.addDestroyableEventListener(eRow, 'mouseleave', function () { return _this.rowNode.onMouseLeave(); });\n // step 2 - listen for changes on row node (which any eRow can trigger)\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_MOUSE_ENTER, function () {\n // if hover turned off, we don't add the class. we do this here so that if the application\n // toggles this property mid way, we remove the hover form the last row, but we stop\n // adding hovers from that point onwards.\n if (!_this.beans.gridOptionsWrapper.isSuppressRowHoverHighlight()) {\n _.addCssClass(eRow, 'ag-row-hover');\n }\n });\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_MOUSE_LEAVE, function () {\n _.removeCssClass(eRow, 'ag-row-hover');\n });\n };\n // for animation, we don't want to animate entry or exit to a very far away pixel,\n // otherwise the row would move so fast, it would appear to disappear. so this method\n // moves the row closer to the viewport if it is far away, so the row slide in / out\n // at a speed the user can see.\n RowComp.prototype.roundRowTopToBounds = function (rowTop) {\n var range = this.beans.gridPanel.getVScrollPosition();\n var minPixel = this.applyPaginationOffset(range.top, true) - 100;\n var maxPixel = this.applyPaginationOffset(range.bottom, true) + 100;\n return Math.min(Math.max(minPixel, rowTop), maxPixel);\n };\n RowComp.prototype.getFrameworkOverrides = function () {\n return this.beans.frameworkOverrides;\n };\n RowComp.prototype.onRowHeightChanged = function () {\n // check for exists first - if the user is resetting the row height, then\n // it will be null (or undefined) momentarily until the next time the flatten\n // stage is called where the row will then update again with a new height\n if (_.exists(this.rowNode.rowHeight)) {\n var heightPx_1 = this.rowNode.rowHeight + \"px\";\n this.eAllRowContainers.forEach(function (row) { return row.style.height = heightPx_1; });\n }\n };\n RowComp.prototype.addEventListener = function (eventType, listener) {\n if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {\n eventType = Events.EVENT_VIRTUAL_ROW_REMOVED;\n console.warn('ag-Grid: Since version 11, event renderedRowRemoved is now called ' + Events.EVENT_VIRTUAL_ROW_REMOVED);\n }\n _super.prototype.addEventListener.call(this, eventType, listener);\n };\n RowComp.prototype.removeEventListener = function (eventType, listener) {\n if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {\n eventType = Events.EVENT_VIRTUAL_ROW_REMOVED;\n console.warn('ag-Grid: Since version 11, event renderedRowRemoved and rowRemoved is now called ' + Events.EVENT_VIRTUAL_ROW_REMOVED);\n }\n _super.prototype.removeEventListener.call(this, eventType, listener);\n };\n RowComp.prototype.destroy = function (animate) {\n if (animate === void 0) { animate = false; }\n _super.prototype.destroy.call(this);\n this.active = false;\n // why do we have this method? shouldn't everything below be added as a destroy func beside\n // the corresponding create logic?\n this.destroyFullWidthComponents();\n if (animate) {\n this.removeFirstPassFuncs.forEach(function (func) { return func(); });\n this.removeSecondPassFuncs.push(this.destroyContainingCells.bind(this));\n }\n else {\n this.destroyContainingCells();\n // we are not animating, so execute the second stage of removal now.\n // we call getAndClear, so that they are only called once\n var delayedDestroyFunctions = this.getAndClearDelayedDestroyFunctions();\n delayedDestroyFunctions.forEach(function (func) { return func(); });\n }\n var event = this.createRowEvent(Events.EVENT_VIRTUAL_ROW_REMOVED);\n this.dispatchEvent(event);\n this.beans.eventService.dispatchEvent(event);\n };\n RowComp.prototype.destroyContainingCells = function () {\n this.forEachCellComp(function (renderedCell) { return renderedCell.destroy(); });\n this.destroyFullWidthComponents();\n };\n // we clear so that the functions are never executed twice\n RowComp.prototype.getAndClearDelayedDestroyFunctions = function () {\n var result = this.removeSecondPassFuncs;\n this.removeSecondPassFuncs = [];\n return result;\n };\n RowComp.prototype.onCellFocusChanged = function () {\n var rowFocused = this.beans.focusedCellController.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n if (rowFocused !== this.rowFocused) {\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-focus', rowFocused); });\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-no-focus', !rowFocused); });\n this.rowFocused = rowFocused;\n }\n // if we are editing, then moving the focus out of a row will stop editing\n if (!rowFocused && this.editingRow) {\n this.stopEditing(false);\n }\n };\n RowComp.prototype.onPaginationChanged = function () {\n var currentPage = this.beans.paginationProxy.getCurrentPage();\n // it is possible this row is in the new page, but the page number has changed, which means\n // it needs to reposition itself relative to the new page\n if (this.paginationPage !== currentPage) {\n this.paginationPage = currentPage;\n this.onTopChanged();\n }\n };\n RowComp.prototype.onTopChanged = function () {\n this.setRowTop(this.rowNode.rowTop);\n };\n // applies pagination offset, eg if on second page, and page height is 500px, then removes\n // 500px from the top position, so a row with rowTop 600px is displayed at location 100px.\n // reverse will take the offset away rather than add.\n RowComp.prototype.applyPaginationOffset = function (topPx, reverse) {\n if (reverse === void 0) { reverse = false; }\n if (this.rowNode.isRowPinned()) {\n return topPx;\n }\n var pixelOffset = this.beans.paginationProxy.getPixelOffset();\n var multiplier = reverse ? 1 : -1;\n return topPx + (pixelOffset * multiplier);\n };\n RowComp.prototype.setRowTop = function (pixels) {\n // print layout uses normal flow layout for row positioning\n if (this.printLayout) {\n return;\n }\n // need to make sure rowTop is not null, as this can happen if the node was once\n // visible (ie parent group was expanded) but is now not visible\n if (_.exists(pixels)) {\n var afterPaginationPixels = this.applyPaginationOffset(pixels);\n var afterScalingPixels = this.beans.maxDivHeightScaler.getRealPixelPosition(afterPaginationPixels);\n var topPx_1 = afterScalingPixels + \"px\";\n if (this.beans.gridOptionsWrapper.isSuppressRowTransform()) {\n this.eAllRowContainers.forEach(function (row) { return row.style.top = topPx_1; });\n }\n else {\n this.eAllRowContainers.forEach(function (row) { return row.style.transform = \"translateY(\" + topPx_1 + \")\"; });\n }\n }\n };\n // we clear so that the functions are never executed twice\n RowComp.prototype.getAndClearNextVMTurnFunctions = function () {\n var result = this.createSecondPassFuncs;\n this.createSecondPassFuncs = [];\n return result;\n };\n RowComp.prototype.getRowNode = function () {\n return this.rowNode;\n };\n RowComp.prototype.getRenderedCellForColumn = function (column) {\n var _this = this;\n var cellComp = this.cellComps[column.getColId()];\n if (cellComp) {\n return cellComp;\n }\n var spanList = Object.keys(this.cellComps)\n .map(function (name) { return _this.cellComps[name]; })\n .filter(function (cmp) { return cmp && cmp.getColSpanningList().indexOf(column) !== -1; });\n return spanList.length ? spanList[0] : undefined;\n };\n RowComp.prototype.onRowIndexChanged = function () {\n this.onCellFocusChanged();\n this.updateRowIndexes();\n };\n RowComp.prototype.updateRowIndexes = function () {\n var _this = this;\n var rowIndexStr = this.rowNode.getRowIndexString();\n var rowIsEven = this.rowNode.rowIndex % 2 === 0;\n var rowIsEvenChanged = this.rowIsEven !== rowIsEven;\n var headerRowCount = this.beans.gridPanel.headerRootComp.getHeaderRowCount();\n if (rowIsEvenChanged) {\n this.rowIsEven = rowIsEven;\n }\n this.eAllRowContainers.forEach(function (eRow) {\n eRow.setAttribute('row-index', rowIndexStr);\n eRow.setAttribute('aria-rowindex', (headerRowCount + _this.rowNode.rowIndex + 1).toString());\n if (!rowIsEvenChanged) {\n return;\n }\n _.addOrRemoveCssClass(eRow, 'ag-row-even', rowIsEven);\n _.addOrRemoveCssClass(eRow, 'ag-row-odd', !rowIsEven);\n });\n };\n RowComp.prototype.ensureDomOrder = function () {\n var sides = [\n {\n el: this.getBodyRowElement(),\n ct: this.bodyContainerComp\n },\n {\n el: this.getPinnedLeftRowElement(),\n ct: this.pinnedLeftContainerComp\n }, {\n el: this.getPinnedRightRowElement(),\n ct: this.pinnedRightContainerComp\n }, {\n el: this.getFullWidthRowElement(),\n ct: this.fullWidthContainerComp\n }\n ];\n sides.forEach(function (side) {\n if (!side.el) {\n return;\n }\n side.ct.ensureDomOrder(side.el);\n });\n };\n // returns the pinned left container, either the normal one, or the embedded full with one if exists\n RowComp.prototype.getPinnedLeftRowElement = function () {\n return this.ePinnedLeftRow ? this.ePinnedLeftRow : this.eFullWidthRowLeft;\n };\n // returns the pinned right container, either the normal one, or the embedded full with one if exists\n RowComp.prototype.getPinnedRightRowElement = function () {\n return this.ePinnedRightRow ? this.ePinnedRightRow : this.eFullWidthRowRight;\n };\n // returns the body container, either the normal one, or the embedded full with one if exists\n RowComp.prototype.getBodyRowElement = function () {\n return this.eBodyRow ? this.eBodyRow : this.eFullWidthRowBody;\n };\n // returns the full width container\n RowComp.prototype.getFullWidthRowElement = function () {\n return this.eFullWidthRow;\n };\n RowComp.DOM_DATA_KEY_RENDERED_ROW = 'renderedRow';\n RowComp.FULL_WIDTH_CELL_RENDERER = 'fullWidthCellRenderer';\n RowComp.GROUP_ROW_RENDERER = 'groupRowRenderer';\n RowComp.GROUP_ROW_RENDERER_COMP_NAME = 'agGroupRowRenderer';\n RowComp.LOADING_CELL_RENDERER = 'loadingCellRenderer';\n RowComp.LOADING_CELL_RENDERER_COMP_NAME = 'agLoadingCellRenderer';\n RowComp.DETAIL_CELL_RENDERER = 'detailCellRenderer';\n RowComp.DETAIL_CELL_RENDERER_COMP_NAME = 'agDetailCellRenderer';\n return RowComp;\n}(Component));\nexport { RowComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { _ } from \"../../utils\";\nimport { RowNode } from \"../../entities/rowNode\";\nimport { BeanStub } from \"../../context/beanStub\";\nvar RowNodeBlock = /** @class */ (function (_super) {\n __extends(RowNodeBlock, _super);\n function RowNodeBlock(blockNumber, rowNodeCacheParams) {\n var _this = _super.call(this) || this;\n _this.version = 0;\n _this.state = RowNodeBlock.STATE_DIRTY;\n _this.rowNodeCacheParams = rowNodeCacheParams;\n _this.blockNumber = blockNumber;\n // we don't need to calculate these now, as the inputs don't change,\n // however it makes the code easier to read if we work them out up front\n _this.startRow = blockNumber * rowNodeCacheParams.blockSize;\n _this.endRow = _this.startRow + rowNodeCacheParams.blockSize;\n return _this;\n }\n RowNodeBlock.prototype.isAnyNodeOpen = function (rowCount) {\n var result = false;\n this.forEachNodeCallback(function (rowNode) {\n if (rowNode.expanded) {\n result = true;\n }\n }, rowCount);\n return result;\n };\n RowNodeBlock.prototype.forEachNodeCallback = function (callback, rowCount) {\n for (var rowIndex = this.startRow; rowIndex < this.endRow; rowIndex++) {\n // we check against rowCount as this page may be the last one, and if it is, then\n // the last rows are not part of the set\n if (rowIndex < rowCount) {\n var rowNode = this.getRowUsingLocalIndex(rowIndex);\n callback(rowNode, rowIndex);\n }\n }\n };\n RowNodeBlock.prototype.forEachNode = function (callback, sequence, rowCount, deep) {\n this.forEachNodeCallback(function (rowNode) {\n callback(rowNode, sequence.next());\n // this will only every happen for server side row model, as infinite\n // row model doesn't have groups\n if (deep && rowNode.childrenCache) {\n rowNode.childrenCache.forEachNodeDeep(callback, sequence);\n }\n }, rowCount);\n };\n RowNodeBlock.prototype.forEachNodeDeep = function (callback, sequence, rowCount) {\n this.forEachNode(callback, sequence, rowCount, true);\n };\n RowNodeBlock.prototype.forEachNodeShallow = function (callback, sequence, rowCount) {\n this.forEachNode(callback, sequence, rowCount, false);\n };\n RowNodeBlock.prototype.getVersion = function () {\n return this.version;\n };\n RowNodeBlock.prototype.getLastAccessed = function () {\n return this.lastAccessed;\n };\n RowNodeBlock.prototype.getRowUsingLocalIndex = function (rowIndex, dontTouchLastAccessed) {\n if (dontTouchLastAccessed === void 0) { dontTouchLastAccessed = false; }\n if (!dontTouchLastAccessed) {\n this.lastAccessed = this.rowNodeCacheParams.lastAccessedSequence.next();\n }\n var localIndex = rowIndex - this.startRow;\n return this.rowNodes[localIndex];\n };\n RowNodeBlock.prototype.init = function (beans) {\n this.beans = beans;\n this.createRowNodes();\n };\n RowNodeBlock.prototype.getStartRow = function () {\n return this.startRow;\n };\n RowNodeBlock.prototype.getEndRow = function () {\n return this.endRow;\n };\n RowNodeBlock.prototype.getBlockNumber = function () {\n return this.blockNumber;\n };\n RowNodeBlock.prototype.setDirty = function () {\n // in case any current loads in progress, this will have their results ignored\n this.version++;\n this.state = RowNodeBlock.STATE_DIRTY;\n };\n RowNodeBlock.prototype.setDirtyAndPurge = function () {\n this.setDirty();\n this.rowNodes.forEach(function (rowNode) {\n rowNode.setData(null);\n });\n };\n RowNodeBlock.prototype.getState = function () {\n return this.state;\n };\n RowNodeBlock.prototype.setRowNode = function (rowIndex, rowNode) {\n var localIndex = rowIndex - this.startRow;\n this.rowNodes[localIndex] = rowNode;\n };\n RowNodeBlock.prototype.setBlankRowNode = function (rowIndex) {\n var localIndex = rowIndex - this.startRow;\n var newRowNode = this.createBlankRowNode(rowIndex);\n this.rowNodes[localIndex] = newRowNode;\n return newRowNode;\n };\n RowNodeBlock.prototype.setNewData = function (rowIndex, dataItem) {\n var newRowNode = this.setBlankRowNode(rowIndex);\n this.setDataAndId(newRowNode, dataItem, this.startRow + rowIndex);\n return newRowNode;\n };\n RowNodeBlock.prototype.createBlankRowNode = function (rowIndex) {\n var rowNode = new RowNode();\n this.beans.context.wireBean(rowNode);\n rowNode.setRowHeight(this.rowNodeCacheParams.rowHeight);\n return rowNode;\n };\n // creates empty row nodes, data is missing as not loaded yet\n RowNodeBlock.prototype.createRowNodes = function () {\n this.rowNodes = [];\n for (var i = 0; i < this.rowNodeCacheParams.blockSize; i++) {\n var rowIndex = this.startRow + i;\n var rowNode = this.createBlankRowNode(rowIndex);\n this.rowNodes.push(rowNode);\n }\n };\n RowNodeBlock.prototype.load = function () {\n this.state = RowNodeBlock.STATE_LOADING;\n this.loadFromDatasource();\n };\n RowNodeBlock.prototype.pageLoadFailed = function () {\n this.state = RowNodeBlock.STATE_FAILED;\n var event = {\n type: RowNodeBlock.EVENT_LOAD_COMPLETE,\n success: false,\n page: this,\n lastRow: null\n };\n this.dispatchEvent(event);\n };\n RowNodeBlock.prototype.populateWithRowData = function (rows) {\n var _this = this;\n var rowNodesToRefresh = [];\n this.rowNodes.forEach(function (rowNode, index) {\n var data = rows[index];\n if (rowNode.stub) {\n rowNodesToRefresh.push(rowNode);\n }\n _this.setDataAndId(rowNode, data, _this.startRow + index);\n });\n if (rowNodesToRefresh.length > 0) {\n this.beans.rowRenderer.redrawRows(rowNodesToRefresh);\n }\n };\n RowNodeBlock.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.rowNodes.forEach(function (rowNode) {\n if (rowNode.childrenCache) {\n rowNode.childrenCache.destroy();\n rowNode.childrenCache = null;\n }\n // this is needed, so row render knows to fade out the row, otherwise it\n // sees row top is present, and thinks the row should be shown. maybe\n // rowNode should have a flag on whether it is visible???\n rowNode.clearRowTop();\n });\n };\n RowNodeBlock.prototype.pageLoaded = function (version, rows, lastRow) {\n // we need to check the version, in case there was an old request\n // from the server that was sent before we refreshed the cache,\n // if the load was done as a result of a cache refresh\n if (version === this.version) {\n this.state = RowNodeBlock.STATE_LOADED;\n this.populateWithRowData(rows);\n }\n lastRow = _.cleanNumber(lastRow);\n // check here if lastRow should be set\n var event = {\n type: RowNodeBlock.EVENT_LOAD_COMPLETE,\n success: true,\n page: this,\n lastRow: lastRow\n };\n this.dispatchEvent(event);\n };\n RowNodeBlock.EVENT_LOAD_COMPLETE = 'loadComplete';\n RowNodeBlock.STATE_DIRTY = 'dirty';\n RowNodeBlock.STATE_LOADING = 'loading';\n RowNodeBlock.STATE_LOADED = 'loaded';\n RowNodeBlock.STATE_FAILED = 'failed';\n return RowNodeBlock;\n}(BeanStub));\nexport { RowNodeBlock };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { TextCellEditor } from \"../../rendering/cellEditors/textCellEditor\";\nimport { Autowired, Bean, PostConstruct } from \"../../context/context\";\nimport { DateFilter } from \"../../filter/provided/date/dateFilter\";\nimport { HeaderComp } from \"../../headerRendering/header/headerComp\";\nimport { HeaderGroupComp } from \"../../headerRendering/headerGroup/headerGroupComp\";\nimport { GroupCellRenderer } from \"../../rendering/cellRenderers/groupCellRenderer\";\nimport { AnimateShowChangeCellRenderer } from \"../../rendering/cellRenderers/animateShowChangeCellRenderer\";\nimport { AnimateSlideCellRenderer } from \"../../rendering/cellRenderers/animateSlideCellRenderer\";\nimport { LoadingCellRenderer } from \"../../rendering/cellRenderers/loadingCellRenderer\";\nimport { SelectCellEditor } from \"../../rendering/cellEditors/selectCellEditor\";\nimport { PopupTextCellEditor } from \"../../rendering/cellEditors/popupTextCellEditor\";\nimport { PopupSelectCellEditor } from \"../../rendering/cellEditors/popupSelectCellEditor\";\nimport { LargeTextCellEditor } from \"../../rendering/cellEditors/largeTextCellEditor\";\nimport { NumberFilter } from \"../../filter/provided/number/numberFilter\";\nimport { LoadingOverlayComponent } from \"../../rendering/overlays/loadingOverlayComponent\";\nimport { NoRowsOverlayComponent } from \"../../rendering/overlays/noRowsOverlayComponent\";\nimport { TooltipComponent } from \"../../rendering/tooltipComponent\";\nimport { _ } from \"../../utils\";\nimport { DefaultDateComponent } from \"../../filter/provided/date/defaultDateComponent\";\nimport { DateFloatingFilter } from \"../../filter/provided/date/dateFloatingFilter\";\nimport { TextFilter } from \"../../filter/provided/text/textFilter\";\nimport { NumberFloatingFilter } from \"../../filter/provided/number/numberFloatingFilter\";\nimport { TextFloatingFilter } from \"../../filter/provided/text/textFloatingFilter\";\nexport var RegisteredComponentSource;\n(function (RegisteredComponentSource) {\n RegisteredComponentSource[RegisteredComponentSource[\"DEFAULT\"] = 0] = \"DEFAULT\";\n RegisteredComponentSource[RegisteredComponentSource[\"REGISTERED\"] = 1] = \"REGISTERED\";\n})(RegisteredComponentSource || (RegisteredComponentSource = {}));\nvar UserComponentRegistry = /** @class */ (function () {\n function UserComponentRegistry() {\n this.agGridDefaults = {\n //date\n agDateInput: DefaultDateComponent,\n //header\n agColumnHeader: HeaderComp,\n agColumnGroupHeader: HeaderGroupComp,\n //floating filters\n agTextColumnFloatingFilter: TextFloatingFilter,\n agNumberColumnFloatingFilter: NumberFloatingFilter,\n agDateColumnFloatingFilter: DateFloatingFilter,\n // renderers\n agAnimateShowChangeCellRenderer: AnimateShowChangeCellRenderer,\n agAnimateSlideCellRenderer: AnimateSlideCellRenderer,\n agGroupCellRenderer: GroupCellRenderer,\n agGroupRowRenderer: GroupCellRenderer,\n agLoadingCellRenderer: LoadingCellRenderer,\n //editors\n agCellEditor: TextCellEditor,\n agTextCellEditor: TextCellEditor,\n agSelectCellEditor: SelectCellEditor,\n agPopupTextCellEditor: PopupTextCellEditor,\n agPopupSelectCellEditor: PopupSelectCellEditor,\n agLargeTextCellEditor: LargeTextCellEditor,\n //filter\n agTextColumnFilter: TextFilter,\n agNumberColumnFilter: NumberFilter,\n agDateColumnFilter: DateFilter,\n //overlays\n agLoadingOverlay: LoadingOverlayComponent,\n agNoRowsOverlay: NoRowsOverlayComponent,\n // tooltips\n agTooltipComponent: TooltipComponent\n };\n this.agDeprecatedNames = {\n set: {\n newComponentName: 'agSetColumnFilter',\n propertyHolder: 'filter'\n },\n text: {\n newComponentName: 'agTextColumnFilter',\n propertyHolder: 'filter'\n },\n number: {\n newComponentName: 'agNumberColumnFilter',\n propertyHolder: 'filter'\n },\n date: {\n newComponentName: 'agDateColumnFilter',\n propertyHolder: 'filter'\n },\n group: {\n newComponentName: 'agGroupCellRenderer',\n propertyHolder: 'cellRenderer'\n },\n animateShowChange: {\n newComponentName: 'agAnimateShowChangeCellRenderer',\n propertyHolder: 'cellRenderer'\n },\n animateSlide: {\n newComponentName: 'agAnimateSlideCellRenderer',\n propertyHolder: 'cellRenderer'\n },\n select: {\n newComponentName: 'agSelectCellEditor',\n propertyHolder: 'cellEditor'\n },\n largeText: {\n newComponentName: 'agLargeTextCellEditor',\n propertyHolder: 'cellEditor'\n },\n popupSelect: {\n newComponentName: 'agPopupSelectCellEditor',\n propertyHolder: 'cellEditor'\n },\n popupText: {\n newComponentName: 'agPopupTextCellEditor',\n propertyHolder: 'cellEditor'\n },\n richSelect: {\n newComponentName: 'agRichSelectCellEditor',\n propertyHolder: 'cellEditor'\n },\n headerComponent: {\n newComponentName: 'agColumnHeader',\n propertyHolder: 'headerComponent'\n }\n };\n this.jsComponents = {};\n this.frameworkComponents = {};\n }\n UserComponentRegistry.prototype.init = function () {\n var _this = this;\n if (this.gridOptions.components != null) {\n Object.keys(this.gridOptions.components).forEach(function (it) {\n _this.registerComponent(it, _this.gridOptions.components[it]);\n });\n }\n if (this.gridOptions.frameworkComponents != null) {\n Object.keys(this.gridOptions.frameworkComponents).forEach(function (it) {\n _this.registerFwComponent(it, _this.gridOptions.frameworkComponents[it]);\n });\n }\n };\n UserComponentRegistry.prototype.registerDefaultComponent = function (rawName, component) {\n var name = this.translateIfDeprecated(rawName);\n if (this.agGridDefaults[name]) {\n console.error(\"Trying to overwrite a default component. You should call registerComponent\");\n return;\n }\n this.agGridDefaults[name] = component;\n };\n UserComponentRegistry.prototype.registerComponent = function (rawName, component) {\n var name = this.translateIfDeprecated(rawName);\n if (this.frameworkComponents[name]) {\n console.error(\"Trying to register a component that you have already registered for frameworks: \" + name);\n return;\n }\n this.jsComponents[name] = component;\n };\n /**\n * B the business interface (ie IHeader)\n * A the agGridComponent interface (ie IHeaderComp). The final object acceptable by ag-grid\n */\n UserComponentRegistry.prototype.registerFwComponent = function (rawName, component) {\n var name = this.translateIfDeprecated(rawName);\n if (this.jsComponents[name]) {\n console.error(\"Trying to register a component that you have already registered for plain javascript: \" + name);\n return;\n }\n this.frameworkComponents[name] = component;\n };\n /**\n * B the business interface (ie IHeader)\n * A the agGridComponent interface (ie IHeaderComp). The final object acceptable by ag-grid\n */\n UserComponentRegistry.prototype.retrieve = function (rawName) {\n var name = this.translateIfDeprecated(rawName);\n if (this.frameworkComponents[name]) {\n return {\n componentFromFramework: true,\n component: this.frameworkComponents[name],\n source: RegisteredComponentSource.REGISTERED\n };\n }\n if (this.jsComponents[name]) {\n return {\n componentFromFramework: false,\n component: this.jsComponents[name],\n source: RegisteredComponentSource.REGISTERED\n };\n }\n if (this.agGridDefaults[name]) {\n return this.agGridDefaults[name] ?\n {\n componentFromFramework: false,\n component: this.agGridDefaults[name],\n source: RegisteredComponentSource.DEFAULT\n } :\n null;\n }\n if (Object.keys(this.agGridDefaults).indexOf(name) < 0) {\n console.warn(\"ag-Grid: Looking for component [\" + name + \"] but it wasn't found.\");\n }\n return null;\n };\n UserComponentRegistry.prototype.translateIfDeprecated = function (raw) {\n var deprecatedInfo = this.agDeprecatedNames[raw];\n if (deprecatedInfo != null) {\n _.doOnce(function () {\n console.warn(\"ag-grid. Since v15.0 component names have been renamed to be namespaced. You should rename \" + deprecatedInfo.propertyHolder + \":\" + raw + \" to \" + deprecatedInfo.propertyHolder + \":\" + deprecatedInfo.newComponentName);\n }, 'DEPRECATE_COMPONENT_' + raw);\n return deprecatedInfo.newComponentName;\n }\n return raw;\n };\n __decorate([\n Autowired('gridOptions')\n ], UserComponentRegistry.prototype, \"gridOptions\", void 0);\n __decorate([\n Autowired('context')\n ], UserComponentRegistry.prototype, \"context\", void 0);\n __decorate([\n PostConstruct\n ], UserComponentRegistry.prototype, \"init\", null);\n UserComponentRegistry = __decorate([\n Bean('userComponentRegistry')\n ], UserComponentRegistry);\n return UserComponentRegistry;\n}());\nexport { UserComponentRegistry };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"../../widgets/component\";\nimport { Column } from \"../../entities/column\";\nimport { Autowired } from \"../../context/context\";\nimport { TouchListener } from \"../../widgets/touchListener\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { Events } from \"../../events\";\nimport { _ } from \"../../utils\";\nvar HeaderComp = /** @class */ (function (_super) {\n __extends(HeaderComp, _super);\n function HeaderComp() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastMovingChanged = 0;\n return _this;\n }\n HeaderComp.prototype.init = function (params) {\n var template = _.firstExistingValue(params.template, HeaderComp.TEMPLATE);\n // take account of any newlines & whitespace before/after the actual template\n template = template && template.trim ? template.trim() : template;\n this.setTemplate(template);\n this.params = params;\n this.setupTap();\n this.setupIcons(params.column);\n this.setupMenu();\n this.setupSort();\n this.setupFilterIcon();\n this.setupText(params.displayName);\n };\n HeaderComp.prototype.setupText = function (displayName) {\n var displayNameSanitised = _.escape(displayName);\n if (this.eText) {\n this.eText.innerHTML = displayNameSanitised;\n }\n };\n HeaderComp.prototype.setupIcons = function (column) {\n this.addInIcon('sortAscending', this.eSortAsc, column);\n this.addInIcon('sortDescending', this.eSortDesc, column);\n this.addInIcon('sortUnSort', this.eSortNone, column);\n this.addInIcon('menu', this.eMenu, column);\n this.addInIcon('filter', this.eFilter, column);\n };\n HeaderComp.prototype.addInIcon = function (iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n var eIcon = _.createIconNoSpan(iconName, this.gridOptionsWrapper, column);\n eParent.appendChild(eIcon);\n };\n HeaderComp.prototype.setupTap = function () {\n var _this = this;\n var options = this.gridOptionsWrapper;\n if (options.isSuppressTouch()) {\n return;\n }\n var touchListener = new TouchListener(this.getGui(), true);\n var suppressMenuHide = options.isSuppressMenuHide();\n var tapMenuButton = suppressMenuHide && _.exists(this.eMenu);\n var menuTouchListener = tapMenuButton ? new TouchListener(this.eMenu, true) : touchListener;\n if (this.params.enableMenu) {\n var eventType = tapMenuButton ? 'EVENT_TAP' : 'EVENT_LONG_TAP';\n var showMenuFn = function (event) {\n options.getApi().showColumnMenuAfterMouseClick(_this.params.column, event.touchStart);\n };\n this.addDestroyableEventListener(menuTouchListener, TouchListener[eventType], showMenuFn);\n }\n if (this.params.enableSorting) {\n var tapListener = function (event) {\n var target = event.touchStart.target;\n // When suppressMenuHide is true, a tap on the menu icon will bubble up\n // to the header container, in that case we should not sort\n if (suppressMenuHide && _this.eMenu.contains(target)) {\n return;\n }\n _this.sortController.progressSort(_this.params.column, false, \"uiColumnSorted\");\n };\n this.addDestroyableEventListener(touchListener, TouchListener.EVENT_TAP, tapListener);\n }\n // if tapMenuButton is true `touchListener` and `menuTouchListener` are different\n // so we need to make sure to destroy both listeners here\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n if (tapMenuButton) {\n this.addDestroyFunc(function () { return menuTouchListener.destroy(); });\n }\n };\n HeaderComp.prototype.setupMenu = function () {\n var _this = this;\n // if no menu provided in template, do nothing\n if (!this.eMenu) {\n return;\n }\n // we don't show the menu if on an iPad/iPhone, as the user cannot have a pointer device\n // Note: If suppressMenuHide is set to true the menu will be displayed, and if suppressMenuHide\n // is false (default) user will need to use longpress to display the menu.\n var suppressMenuHide = this.gridOptionsWrapper.isSuppressMenuHide();\n var hideShowMenu = !this.params.enableMenu || (_.isIOSUserAgent() && !suppressMenuHide);\n if (hideShowMenu) {\n _.removeFromParent(this.eMenu);\n return;\n }\n this.addDestroyableEventListener(this.eMenu, 'click', function () { return _this.showMenu(_this.eMenu); });\n if (!suppressMenuHide) {\n this.eMenu.style.opacity = '0';\n this.addGuiEventListener('mouseover', function () {\n _this.eMenu.style.opacity = '1';\n });\n this.addGuiEventListener('mouseout', function () {\n _this.eMenu.style.opacity = '0';\n });\n }\n var style = this.eMenu.style;\n style.transition = 'opacity 0.2s, border 0.2s';\n style['-webkit-transition'] = 'opacity 0.2s, border 0.2s';\n };\n HeaderComp.prototype.showMenu = function (eventSource) {\n this.menuFactory.showMenuAfterButtonClick(this.params.column, eventSource);\n };\n HeaderComp.prototype.removeSortIcons = function () {\n _.removeFromParent(this.eSortAsc);\n _.removeFromParent(this.eSortDesc);\n _.removeFromParent(this.eSortNone);\n _.removeFromParent(this.eSortOrder);\n };\n HeaderComp.prototype.setupSort = function () {\n var _this = this;\n var enableSorting = this.params.enableSorting;\n if (!enableSorting) {\n this.removeSortIcons();\n return;\n }\n var sortUsingCtrl = this.gridOptionsWrapper.isMultiSortKeyCtrl();\n // keep track of last time the moving changed flag was set\n this.addDestroyableEventListener(this.params.column, Column.EVENT_MOVING_CHANGED, function () {\n _this.lastMovingChanged = new Date().getTime();\n });\n // add the event on the header, so when clicked, we do sorting\n if (this.eLabel) {\n this.addDestroyableEventListener(this.eLabel, 'click', function (event) {\n // sometimes when moving a column via dragging, this was also firing a clicked event.\n // here is issue raised by user: https://ag-grid.zendesk.com/agent/tickets/1076\n // this check stops sort if a) column is moving or b) column moved less than 200ms ago (so caters for race condition)\n var moving = _this.params.column.isMoving();\n var nowTime = new Date().getTime();\n // typically there is <2ms if moving flag was set recently, as it would be done in same VM turn\n var movedRecently = (nowTime - _this.lastMovingChanged) < 50;\n var columnMoving = moving || movedRecently;\n if (!columnMoving) {\n var multiSort = sortUsingCtrl ? (event.ctrlKey || event.metaKey) : event.shiftKey;\n _this.params.progressSort(multiSort);\n }\n });\n }\n this.addDestroyableEventListener(this.params.column, Column.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.onSortChanged();\n this.addDestroyableEventListener(this.eventService, Events.EVENT_SORT_CHANGED, this.setMultiSortOrder.bind(this));\n this.setMultiSortOrder();\n };\n HeaderComp.prototype.onSortChanged = function () {\n _.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-asc', this.params.column.isSortAscending());\n _.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-desc', this.params.column.isSortDescending());\n _.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-none', this.params.column.isSortNone());\n if (this.eSortAsc) {\n _.addOrRemoveCssClass(this.eSortAsc, 'ag-hidden', !this.params.column.isSortAscending());\n }\n if (this.eSortDesc) {\n _.addOrRemoveCssClass(this.eSortDesc, 'ag-hidden', !this.params.column.isSortDescending());\n }\n if (this.eSortNone) {\n var alwaysHideNoSort = !this.params.column.getColDef().unSortIcon && !this.gridOptionsWrapper.isUnSortIcon();\n _.addOrRemoveCssClass(this.eSortNone, 'ag-hidden', alwaysHideNoSort || !this.params.column.isSortNone());\n }\n };\n // we listen here for global sort events, NOT column sort events, as we want to do this\n // when sorting has been set on all column (if we listened just for our col (where we\n // set the asc / desc icons) then it's possible other cols are yet to get their sorting state.\n HeaderComp.prototype.setMultiSortOrder = function () {\n if (!this.eSortOrder) {\n return;\n }\n var col = this.params.column;\n var allColumnsWithSorting = this.sortController.getColumnsWithSortingOrdered();\n var indexThisCol = allColumnsWithSorting.indexOf(col);\n var moreThanOneColSorting = allColumnsWithSorting.length > 1;\n var showIndex = col.isSorting() && moreThanOneColSorting;\n _.setDisplayed(this.eSortOrder, showIndex);\n if (indexThisCol >= 0) {\n this.eSortOrder.innerHTML = (indexThisCol + 1).toString();\n }\n else {\n _.clearElement(this.eSortOrder);\n }\n };\n HeaderComp.prototype.setupFilterIcon = function () {\n if (!this.eFilter) {\n return;\n }\n this.addDestroyableEventListener(this.params.column, Column.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.onFilterChanged();\n };\n HeaderComp.prototype.onFilterChanged = function () {\n var filterPresent = this.params.column.isFilterActive();\n _.addOrRemoveCssClass(this.eFilter, 'ag-hidden', !filterPresent);\n };\n HeaderComp.TEMPLATE = '
' +\n ' ' +\n '
' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
' +\n '
';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], HeaderComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('sortController')\n ], HeaderComp.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('menuFactory')\n ], HeaderComp.prototype, \"menuFactory\", void 0);\n __decorate([\n Autowired('eventService')\n ], HeaderComp.prototype, \"eventService\", void 0);\n __decorate([\n RefSelector('eFilter')\n ], HeaderComp.prototype, \"eFilter\", void 0);\n __decorate([\n RefSelector('eSortAsc')\n ], HeaderComp.prototype, \"eSortAsc\", void 0);\n __decorate([\n RefSelector('eSortDesc')\n ], HeaderComp.prototype, \"eSortDesc\", void 0);\n __decorate([\n RefSelector('eSortNone')\n ], HeaderComp.prototype, \"eSortNone\", void 0);\n __decorate([\n RefSelector('eSortOrder')\n ], HeaderComp.prototype, \"eSortOrder\", void 0);\n __decorate([\n RefSelector('eMenu')\n ], HeaderComp.prototype, \"eMenu\", void 0);\n __decorate([\n RefSelector('eLabel')\n ], HeaderComp.prototype, \"eLabel\", void 0);\n __decorate([\n RefSelector('eText')\n ], HeaderComp.prototype, \"eText\", void 0);\n return HeaderComp;\n}(Component));\nexport { HeaderComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"../../widgets/component\";\nimport { Autowired } from \"../../context/context\";\nimport { TouchListener } from \"../../widgets/touchListener\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { OriginalColumnGroup } from \"../../entities/originalColumnGroup\";\nimport { _ } from \"../../utils\";\nvar HeaderGroupComp = /** @class */ (function (_super) {\n __extends(HeaderGroupComp, _super);\n function HeaderGroupComp() {\n return _super.call(this, HeaderGroupComp.TEMPLATE) || this;\n }\n HeaderGroupComp.prototype.init = function (params) {\n this.params = params;\n this.setupLabel();\n this.addGroupExpandIcon();\n this.setupExpandIcons();\n };\n HeaderGroupComp.prototype.setupExpandIcons = function () {\n var _this = this;\n this.addInIcon(\"columnGroupOpened\", \"agOpened\");\n this.addInIcon(\"columnGroupClosed\", \"agClosed\");\n var expandAction = function (event) {\n if (_.isStopPropagationForAgGrid(event)) {\n return;\n }\n var newExpandedValue = !_this.params.columnGroup.isExpanded();\n _this.columnController.setColumnGroupOpened(_this.params.columnGroup.getOriginalColumnGroup(), newExpandedValue, \"uiColumnExpanded\");\n };\n this.addTouchAndClickListeners(this.eCloseIcon, expandAction);\n this.addTouchAndClickListeners(this.eOpenIcon, expandAction);\n var stopPropagationAction = function (event) {\n _.stopPropagationForAgGrid(event);\n };\n // adding stopPropagation to the double click for the icons prevents double click action happening\n // when the icons are clicked. if the icons are double clicked, then the groups should open and\n // then close again straight away. if we also listened to double click, then the group would open,\n // close, then open, which is not what we want. double click should only action if the user double\n // clicks outside of the icons.\n this.addDestroyableEventListener(this.eCloseIcon, \"dblclick\", stopPropagationAction);\n this.addDestroyableEventListener(this.eOpenIcon, \"dblclick\", stopPropagationAction);\n this.addDestroyableEventListener(this.getGui(), \"dblclick\", expandAction);\n this.updateIconVisibility();\n var originalColumnGroup = this.params.columnGroup.getOriginalColumnGroup();\n this.addDestroyableEventListener(originalColumnGroup, OriginalColumnGroup.EVENT_EXPANDED_CHANGED, this.updateIconVisibility.bind(this));\n this.addDestroyableEventListener(originalColumnGroup, OriginalColumnGroup.EVENT_EXPANDABLE_CHANGED, this.updateIconVisibility.bind(this));\n };\n HeaderGroupComp.prototype.addTouchAndClickListeners = function (eElement, action) {\n var touchListener = new TouchListener(eElement);\n this.addDestroyableEventListener(touchListener, TouchListener.EVENT_TAP, action);\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n this.addDestroyableEventListener(eElement, \"click\", action);\n };\n HeaderGroupComp.prototype.updateIconVisibility = function () {\n var columnGroup = this.params.columnGroup;\n if (columnGroup.isExpandable()) {\n var expanded = this.params.columnGroup.isExpanded();\n _.setDisplayed(this.eOpenIcon, expanded);\n _.setDisplayed(this.eCloseIcon, !expanded);\n }\n else {\n _.setDisplayed(this.eOpenIcon, false);\n _.setDisplayed(this.eCloseIcon, false);\n }\n };\n HeaderGroupComp.prototype.addInIcon = function (iconName, refName) {\n var eIcon = _.createIconNoSpan(iconName, this.gridOptionsWrapper, null);\n this.getRefElement(refName).appendChild(eIcon);\n };\n HeaderGroupComp.prototype.addGroupExpandIcon = function () {\n if (!this.params.columnGroup.isExpandable()) {\n _.setDisplayed(this.eOpenIcon, false);\n _.setDisplayed(this.eCloseIcon, false);\n return;\n }\n };\n HeaderGroupComp.prototype.setupLabel = function () {\n // no renderer, default text render\n if (this.params.displayName && this.params.displayName !== \"\") {\n var eInnerText = this.getRefElement(\"agLabel\");\n eInnerText.innerHTML = this.params.displayName;\n }\n };\n HeaderGroupComp.TEMPLATE = \"
\" +\n \"\" +\n \"\" +\n \"\" +\n \"
\";\n __decorate([\n Autowired(\"columnController\")\n ], HeaderGroupComp.prototype, \"columnController\", void 0);\n __decorate([\n Autowired(\"gridOptionsWrapper\")\n ], HeaderGroupComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n RefSelector(\"agOpened\")\n ], HeaderGroupComp.prototype, \"eOpenIcon\", void 0);\n __decorate([\n RefSelector(\"agClosed\")\n ], HeaderGroupComp.prototype, \"eCloseIcon\", void 0);\n return HeaderGroupComp;\n}(Component));\nexport { HeaderGroupComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Autowired } from \"../../context/context\";\nimport { Component } from \"../../widgets/component\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { _ } from \"../../utils\";\nvar LoadingCellRenderer = /** @class */ (function (_super) {\n __extends(LoadingCellRenderer, _super);\n function LoadingCellRenderer() {\n return _super.call(this, LoadingCellRenderer.TEMPLATE) || this;\n }\n LoadingCellRenderer.prototype.init = function (params) {\n var eLoadingIcon = _.createIconNoSpan('groupLoading', this.gridOptionsWrapper, null);\n this.eLoadingIcon.appendChild(eLoadingIcon);\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eLoadingText.innerText = localeTextFunc('loadingOoo', 'Loading');\n };\n LoadingCellRenderer.prototype.refresh = function (params) {\n return false;\n };\n LoadingCellRenderer.TEMPLATE = \"
\\n \\n \\n
\";\n __decorate([\n Autowired('gridOptionsWrapper')\n ], LoadingCellRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n RefSelector('eLoadingIcon')\n ], LoadingCellRenderer.prototype, \"eLoadingIcon\", void 0);\n __decorate([\n RefSelector('eLoadingText')\n ], LoadingCellRenderer.prototype, \"eLoadingText\", void 0);\n return LoadingCellRenderer;\n}(Component));\nexport { LoadingCellRenderer };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Autowired } from \"../../context/context\";\nimport { Component } from \"../../widgets/component\";\nvar LoadingOverlayComponent = /** @class */ (function (_super) {\n __extends(LoadingOverlayComponent, _super);\n function LoadingOverlayComponent() {\n return _super.call(this) || this;\n }\n LoadingOverlayComponent.prototype.init = function (params) {\n var template = this.gridOptionsWrapper.getOverlayLoadingTemplate() ?\n this.gridOptionsWrapper.getOverlayLoadingTemplate() : LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var localisedTemplate = template.replace('[LOADING...]', localeTextFunc('loadingOoo', 'Loading...'));\n this.setTemplate(localisedTemplate);\n };\n LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE = '[LOADING...]';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], LoadingOverlayComponent.prototype, \"gridOptionsWrapper\", void 0);\n return LoadingOverlayComponent;\n}(Component));\nexport { LoadingOverlayComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Autowired } from \"../../context/context\";\nimport { Component } from \"../../widgets/component\";\nvar NoRowsOverlayComponent = /** @class */ (function (_super) {\n __extends(NoRowsOverlayComponent, _super);\n function NoRowsOverlayComponent() {\n return _super.call(this) || this;\n }\n NoRowsOverlayComponent.prototype.init = function (params) {\n var template = this.gridOptionsWrapper.getOverlayNoRowsTemplate() ?\n this.gridOptionsWrapper.getOverlayNoRowsTemplate() : NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var localisedTemplate = template.replace('[NO_ROWS_TO_SHOW]', localeTextFunc('noRowsToShow', 'No Rows To Show'));\n this.setTemplate(localisedTemplate);\n };\n NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE = '[NO_ROWS_TO_SHOW]';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], NoRowsOverlayComponent.prototype, \"gridOptionsWrapper\", void 0);\n return NoRowsOverlayComponent;\n}(Component));\nexport { NoRowsOverlayComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { PopupComponent } from \"../widgets/popupComponent\";\nvar TooltipComponent = /** @class */ (function (_super) {\n __extends(TooltipComponent, _super);\n function TooltipComponent() {\n return _super.call(this, \"
\") || this;\n }\n // will need to type params\n TooltipComponent.prototype.init = function (params) {\n var value = params.value;\n this.getGui().innerHTML = value;\n };\n return TooltipComponent;\n}(PopupComponent));\nexport { TooltipComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { Component } from \"../../../widgets/component\";\nimport { _ } from \"../../../utils\";\nvar DefaultDateComponent = /** @class */ (function (_super) {\n __extends(DefaultDateComponent, _super);\n function DefaultDateComponent() {\n return _super.call(this, \"
\") || this;\n }\n DefaultDateComponent.prototype.init = function (params) {\n this.eDateInput = this.getGui().querySelector('input');\n if (_.isBrowserChrome() || params.filterParams.browserDatePicker) {\n if (_.isBrowserIE()) {\n console.warn('ag-grid: browserDatePicker is specified to true, but it is not supported in IE 11, reverting to plain text date picker');\n }\n else {\n this.eDateInput.type = 'date';\n }\n }\n this.listener = params.onDateChanged;\n this.addGuiEventListener('input', this.listener);\n };\n DefaultDateComponent.prototype.getDate = function () {\n return _.parseYyyyMmDdToDate(this.eDateInput.value, \"-\");\n };\n DefaultDateComponent.prototype.setDate = function (date) {\n this.eDateInput.value = _.serializeDateToYyyyMmDd(date, \"-\");\n };\n return DefaultDateComponent;\n}(Component));\nexport { DefaultDateComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { Component } from \"../../../widgets/component\";\nimport { SimpleFilter } from \"../../provided/simpleFilter\";\nimport { OptionsFactory } from \"../../provided/optionsFactory\";\nvar SimpleFloatingFilter = /** @class */ (function (_super) {\n __extends(SimpleFloatingFilter, _super);\n function SimpleFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SimpleFloatingFilter.prototype.getDefaultDebounceMs = function () {\n return 0;\n };\n // used by:\n // 1) NumberFloatingFilter & TextFloatingFilter: Always, for both when editable and read only.\n // 2) DateFloatingFilter: Only when read only (as we show text rather than a date picker when read only)\n SimpleFloatingFilter.prototype.getTextFromModel = function (model) {\n if (!model) {\n return null;\n }\n var isCombined = model.operator;\n if (isCombined) {\n var combinedModel = model;\n var con1Str = this.conditionToString(combinedModel.condition1);\n var con2Str = this.conditionToString(combinedModel.condition2);\n return con1Str + \" \" + combinedModel.operator + \" \" + con2Str;\n }\n else {\n var condition = model;\n return this.conditionToString(condition);\n }\n };\n SimpleFloatingFilter.prototype.isEventFromFloatingFilter = function (event) {\n return (event && event.afterFloatingFilter);\n };\n SimpleFloatingFilter.prototype.getLastType = function () {\n return this.lastType;\n };\n SimpleFloatingFilter.prototype.setLastTypeFromModel = function (model) {\n // if no model provided by the parent filter, we continue to use the last type used\n if (!model) {\n return;\n }\n var isCombined = model.operator;\n var condition;\n if (isCombined) {\n var combinedModel = model;\n condition = combinedModel.condition1;\n }\n else {\n condition = model;\n }\n this.lastType = condition.type;\n };\n SimpleFloatingFilter.prototype.canWeEditAfterModelFromParentFilter = function (model) {\n if (!model) {\n // if no model, then we can edit as long as the lastType is something we can edit, as this\n // is the type we will provide to the parent filter if the user decides to use the floating filter.\n return this.isTypeEditable(this.lastType);\n }\n // never allow editing if the filter is combined (ie has two parts)\n var isCombined = model.operator;\n if (isCombined) {\n return false;\n }\n var simpleModel = model;\n var typeIsEditable = this.isTypeEditable(simpleModel.type);\n return typeIsEditable;\n };\n SimpleFloatingFilter.prototype.init = function (params) {\n this.optionsFactory = new OptionsFactory();\n this.optionsFactory.init(params.filterParams, this.getDefaultFilterOptions());\n this.lastType = this.optionsFactory.getDefaultOption();\n // we are editable if:\n // 1) there is a type (user has configured filter wrong if not type)\n // AND\n // 2) the default type is not 'in range'\n var editable = this.isTypeEditable(this.lastType);\n this.setEditable(editable);\n };\n SimpleFloatingFilter.prototype.doesFilterHaveHiddenInput = function (filterType) {\n var customFilterOption = this.optionsFactory.getCustomOption(filterType);\n return customFilterOption && customFilterOption.hideFilterInput;\n };\n SimpleFloatingFilter.prototype.isTypeEditable = function (type) {\n if (this.doesFilterHaveHiddenInput(type)) {\n return false;\n }\n return type\n && (type != SimpleFilter.IN_RANGE)\n && (type != SimpleFilter.EMPTY);\n };\n return SimpleFloatingFilter;\n}(Component));\nexport { SimpleFloatingFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { DateFilter } from \"./dateFilter\";\nimport { Autowired } from \"../../../context/context\";\nimport { _ } from \"../../../utils\";\nimport { DateCompWrapper } from \"./dateCompWrapper\";\nimport { RefSelector } from \"../../../widgets/componentAnnotations\";\nimport { SimpleFilter } from \"../simpleFilter\";\nimport { SimpleFloatingFilter } from \"../../floating/provided/simpleFloatingFilter\";\nimport { ProvidedFilter } from \"../providedFilter\";\nvar DateFloatingFilter = /** @class */ (function (_super) {\n __extends(DateFloatingFilter, _super);\n function DateFloatingFilter() {\n return _super.call(this, \"
\\n \\n
\\n
\") || this;\n }\n DateFloatingFilter.prototype.getDefaultFilterOptions = function () {\n return DateFilter.DEFAULT_FILTER_OPTIONS;\n };\n DateFloatingFilter.prototype.conditionToString = function (condition) {\n var isRange = condition.type == SimpleFilter.IN_RANGE;\n if (isRange) {\n return condition.dateFrom + \"-\" + condition.dateTo;\n }\n else {\n // cater for when the type doesn't need a value\n if (condition.dateFrom != null) {\n return \"\" + condition.dateFrom;\n }\n else {\n return \"\" + condition.type;\n }\n }\n };\n DateFloatingFilter.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.params = params;\n this.createDateComponent();\n };\n DateFloatingFilter.prototype.setEditable = function (editable) {\n _.setDisplayed(this.eDateWrapper, editable);\n _.setDisplayed(this.eReadOnlyText, !editable);\n };\n DateFloatingFilter.prototype.onParentModelChanged = function (model, event) {\n // we don't want to update the floating filter if the floating filter caused the change.\n // as if it caused the change, the ui is already in sycn. if we didn't do this, the UI\n // would behave strange as it would be updating as the user is typing\n if (this.isEventFromFloatingFilter(event)) {\n return;\n }\n _super.prototype.setLastTypeFromModel.call(this, model);\n var allowEditing = this.canWeEditAfterModelFromParentFilter(model);\n this.setEditable(allowEditing);\n if (allowEditing) {\n if (model) {\n var dateModel = model;\n this.dateComp.setDate(_.parseYyyyMmDdToDate(dateModel.dateFrom, '-'));\n }\n else {\n this.dateComp.setDate(null);\n }\n this.eReadOnlyText.value = '';\n }\n else {\n this.eReadOnlyText.value = this.getTextFromModel(model);\n this.dateComp.setDate(null);\n }\n };\n DateFloatingFilter.prototype.onDateChanged = function () {\n var _this = this;\n var filterValueDate = this.dateComp.getDate();\n var filterValueText = _.serializeDateToYyyyMmDd(filterValueDate, \"-\");\n this.params.parentFilterInstance(function (filterInstance) {\n if (filterInstance) {\n var simpleFilter = filterInstance;\n simpleFilter.onFloatingFilterChanged(_this.getLastType(), filterValueText);\n }\n });\n };\n DateFloatingFilter.prototype.createDateComponent = function () {\n var _this = this;\n var debounceMs = ProvidedFilter.getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());\n var toDebounce = _.debounce(this.onDateChanged.bind(this), debounceMs);\n var dateComponentParams = {\n onDateChanged: toDebounce,\n filterParams: this.params.column.getColDef().filterParams\n };\n this.dateComp = new DateCompWrapper(this.userComponentFactory, dateComponentParams, this.eDateWrapper);\n this.addDestroyFunc(function () {\n _this.dateComp.destroy();\n });\n };\n __decorate([\n Autowired('userComponentFactory')\n ], DateFloatingFilter.prototype, \"userComponentFactory\", void 0);\n __decorate([\n RefSelector('eReadOnlyText')\n ], DateFloatingFilter.prototype, \"eReadOnlyText\", void 0);\n __decorate([\n RefSelector('eDateWrapper')\n ], DateFloatingFilter.prototype, \"eDateWrapper\", void 0);\n return DateFloatingFilter;\n}(SimpleFloatingFilter));\nexport { DateFloatingFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { RefSelector } from \"../../../widgets/componentAnnotations\";\nimport { _ } from \"../../../utils\";\nimport { Constants } from \"../../../constants\";\nimport { ProvidedFilter } from \"../../provided/providedFilter\";\nimport { PostConstruct } from \"../../../context/context\";\nimport { SimpleFloatingFilter } from \"./simpleFloatingFilter\";\nvar TextInputFloatingFilter = /** @class */ (function (_super) {\n __extends(TextInputFloatingFilter, _super);\n function TextInputFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextInputFloatingFilter.prototype.postConstruct = function () {\n this.setTemplate(\"
\\n \\n
\");\n };\n TextInputFloatingFilter.prototype.getDefaultDebounceMs = function () {\n return 500;\n };\n TextInputFloatingFilter.prototype.onParentModelChanged = function (model, event) {\n // we don't want to update the floating filter if the floating filter caused the change.\n // as if it caused the change, the ui is already in sycn. if we didn't do this, the UI\n // would behave strange as it would be updating as the user is typing\n if (this.isEventFromFloatingFilter(event)) {\n return;\n }\n this.setLastTypeFromModel(model);\n var modelString = this.getTextFromModel(model);\n this.eFloatingFilterText.value = modelString;\n var editable = this.canWeEditAfterModelFromParentFilter(model);\n this.setEditable(editable);\n };\n TextInputFloatingFilter.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.params = params;\n this.applyActive = ProvidedFilter.isUseApplyButton(this.params.filterParams);\n var debounceMs = ProvidedFilter.getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());\n var toDebounce = _.debounce(this.syncUpWithParentFilter.bind(this), debounceMs);\n this.addDestroyableEventListener(this.eFloatingFilterText, 'input', toDebounce);\n this.addDestroyableEventListener(this.eFloatingFilterText, 'keypress', toDebounce);\n this.addDestroyableEventListener(this.eFloatingFilterText, 'keydown', toDebounce);\n var columnDef = params.column.getDefinition();\n if (columnDef.filterParams && columnDef.filterParams.filterOptions && columnDef.filterParams.filterOptions.length === 1 && columnDef.filterParams.filterOptions[0] === 'inRange') {\n this.eFloatingFilterText.disabled = true;\n }\n };\n TextInputFloatingFilter.prototype.syncUpWithParentFilter = function (e) {\n var _this = this;\n var value = this.eFloatingFilterText.value;\n var enterKeyPressed = _.isKeyPressed(e, Constants.KEY_ENTER);\n if (this.applyActive && !enterKeyPressed) {\n return;\n }\n this.params.parentFilterInstance(function (filterInstance) {\n if (filterInstance) {\n var simpleFilter = filterInstance;\n simpleFilter.onFloatingFilterChanged(_this.getLastType(), value);\n }\n });\n };\n TextInputFloatingFilter.prototype.setEditable = function (editable) {\n this.eFloatingFilterText.disabled = !editable;\n };\n __decorate([\n RefSelector('eFloatingFilterText')\n ], TextInputFloatingFilter.prototype, \"eFloatingFilterText\", void 0);\n __decorate([\n PostConstruct\n ], TextInputFloatingFilter.prototype, \"postConstruct\", null);\n return TextInputFloatingFilter;\n}(SimpleFloatingFilter));\nexport { TextInputFloatingFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { NumberFilter } from \"./numberFilter\";\nimport { SimpleFilter } from \"../simpleFilter\";\nimport { TextInputFloatingFilter } from \"../../floating/provided/textInputFloatingFilter\";\nvar NumberFloatingFilter = /** @class */ (function (_super) {\n __extends(NumberFloatingFilter, _super);\n function NumberFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NumberFloatingFilter.prototype.getDefaultFilterOptions = function () {\n return NumberFilter.DEFAULT_FILTER_OPTIONS;\n };\n NumberFloatingFilter.prototype.conditionToString = function (condition) {\n var isRange = condition.type == SimpleFilter.IN_RANGE;\n if (isRange) {\n return condition.filter + \"-\" + condition.filterTo;\n }\n else {\n // cater for when the type doesn't need a value\n if (condition.filter != null) {\n return \"\" + condition.filter;\n }\n else {\n return \"\" + condition.type;\n }\n }\n };\n return NumberFloatingFilter;\n}(TextInputFloatingFilter));\nexport { NumberFloatingFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { TextFilter } from \"./textFilter\";\nimport { TextInputFloatingFilter } from \"../../floating/provided/textInputFloatingFilter\";\nvar TextFloatingFilter = /** @class */ (function (_super) {\n __extends(TextFloatingFilter, _super);\n function TextFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextFloatingFilter.prototype.conditionToString = function (condition) {\n // it's not possible to have 'in range' for string, so no need to check for it.\n // also cater for when the type doesn't need a value\n if (condition.filter != null) {\n return \"\" + condition.filter;\n }\n else {\n return \"\" + condition.type;\n }\n };\n TextFloatingFilter.prototype.getDefaultFilterOptions = function () {\n return TextFilter.DEFAULT_FILTER_OPTIONS;\n };\n return TextFloatingFilter;\n}(TextInputFloatingFilter));\nexport { TextFloatingFilter };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport isInBrowser from 'is-in-browser';\nimport warning from 'tiny-warning';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\n\nvar plainObjectConstrurctor = {}.constructor;\nfunction cloneStyle(style) {\n if (style == null || typeof style !== 'object') return style;\n if (Array.isArray(style)) return style.map(cloneStyle);\n if (style.constructor !== plainObjectConstrurctor) return style;\n var newStyle = {};\n\n for (var name in style) {\n newStyle[name] = cloneStyle(style[name]);\n }\n\n return newStyle;\n}\n\n/**\n * Create a rule instance.\n */\n\nfunction createRule(name, decl, options) {\n if (name === void 0) {\n name = 'unnamed';\n }\n\n var jss = options.jss;\n var declCopy = cloneStyle(decl);\n var rule = jss.plugins.onCreateRule(name, declCopy, options);\n if (rule) return rule; // It is an at-rule and it has no instance.\n\n if (name[0] === '@') {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown rule \" + name) : void 0;\n }\n\n return null;\n}\n\nvar join = function join(value, by) {\n var result = '';\n\n for (var i = 0; i < value.length; i++) {\n // Remove !important from the value, it will be readded later.\n if (value[i] === '!important') break;\n if (result) result += by;\n result += value[i];\n }\n\n return result;\n};\n/**\n * Converts JSS array value to a CSS string.\n *\n * `margin: [['5px', '10px']]` > `margin: 5px 10px;`\n * `border: ['1px', '2px']` > `border: 1px, 2px;`\n * `margin: [['5px', '10px'], '!important']` > `margin: 5px 10px !important;`\n * `color: ['red', !important]` > `color: red !important;`\n */\n\n\nvar toCssValue = function toCssValue(value) {\n if (!Array.isArray(value)) return value;\n var cssValue = ''; // Support space separated values via `[['5px', '10px']]`.\n\n if (Array.isArray(value[0])) {\n for (var i = 0; i < value.length; i++) {\n if (value[i] === '!important') break;\n if (cssValue) cssValue += ', ';\n cssValue += join(value[i], ' ');\n }\n } else cssValue = join(value, ', '); // Add !important, because it was ignored.\n\n\n if (value[value.length - 1] === '!important') {\n cssValue += ' !important';\n }\n\n return cssValue;\n};\n\nfunction getWhitespaceSymbols(options) {\n if (options && options.format === false) {\n return {\n linebreak: '',\n space: ''\n };\n }\n\n return {\n linebreak: '\\n',\n space: ' '\n };\n}\n\n/**\n * Indent a string.\n * http://jsperf.com/array-join-vs-for\n */\n\nfunction indentStr(str, indent) {\n var result = '';\n\n for (var index = 0; index < indent; index++) {\n result += ' ';\n }\n\n return result + str;\n}\n/**\n * Converts a Rule to CSS string.\n */\n\n\nfunction toCss(selector, style, options) {\n if (options === void 0) {\n options = {};\n }\n\n var result = '';\n if (!style) return result;\n var _options = options,\n _options$indent = _options.indent,\n indent = _options$indent === void 0 ? 0 : _options$indent;\n var fallbacks = style.fallbacks;\n\n if (options.format === false) {\n indent = -Infinity;\n }\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak,\n space = _getWhitespaceSymbols.space;\n\n if (selector) indent++; // Apply fallbacks first.\n\n if (fallbacks) {\n // Array syntax {fallbacks: [{prop: value}]}\n if (Array.isArray(fallbacks)) {\n for (var index = 0; index < fallbacks.length; index++) {\n var fallback = fallbacks[index];\n\n for (var prop in fallback) {\n var value = fallback[prop];\n\n if (value != null) {\n if (result) result += linebreak;\n result += indentStr(prop + \":\" + space + toCssValue(value) + \";\", indent);\n }\n }\n }\n } else {\n // Object syntax {fallbacks: {prop: value}}\n for (var _prop in fallbacks) {\n var _value = fallbacks[_prop];\n\n if (_value != null) {\n if (result) result += linebreak;\n result += indentStr(_prop + \":\" + space + toCssValue(_value) + \";\", indent);\n }\n }\n }\n }\n\n for (var _prop2 in style) {\n var _value2 = style[_prop2];\n\n if (_value2 != null && _prop2 !== 'fallbacks') {\n if (result) result += linebreak;\n result += indentStr(_prop2 + \":\" + space + toCssValue(_value2) + \";\", indent);\n }\n } // Allow empty style in this case, because properties will be added dynamically.\n\n\n if (!result && !options.allowEmpty) return result; // When rule is being stringified before selector was defined.\n\n if (!selector) return result;\n indent--;\n if (result) result = \"\" + linebreak + result + linebreak;\n return indentStr(\"\" + selector + space + \"{\" + result, indent) + indentStr('}', indent);\n}\n\nvar escapeRegex = /([[\\].#*$><+~=|^:(),\"'`\\s])/g;\nvar nativeEscape = typeof CSS !== 'undefined' && CSS.escape;\nvar escape = (function (str) {\n return nativeEscape ? nativeEscape(str) : str.replace(escapeRegex, '\\\\$1');\n});\n\nvar BaseStyleRule =\n/*#__PURE__*/\nfunction () {\n function BaseStyleRule(key, style, options) {\n this.type = 'style';\n this.isProcessed = false;\n var sheet = options.sheet,\n Renderer = options.Renderer;\n this.key = key;\n this.options = options;\n this.style = style;\n if (sheet) this.renderer = sheet.renderer;else if (Renderer) this.renderer = new Renderer();\n }\n /**\n * Get or set a style property.\n */\n\n\n var _proto = BaseStyleRule.prototype;\n\n _proto.prop = function prop(name, value, options) {\n // It's a getter.\n if (value === undefined) return this.style[name]; // Don't do anything if the value has not changed.\n\n var force = options ? options.force : false;\n if (!force && this.style[name] === value) return this;\n var newValue = value;\n\n if (!options || options.process !== false) {\n newValue = this.options.jss.plugins.onChangeValue(value, name, this);\n }\n\n var isEmpty = newValue == null || newValue === false;\n var isDefined = name in this.style; // Value is empty and wasn't defined before.\n\n if (isEmpty && !isDefined && !force) return this; // We are going to remove this value.\n\n var remove = isEmpty && isDefined;\n if (remove) delete this.style[name];else this.style[name] = newValue; // Renderable is defined if StyleSheet option `link` is true.\n\n if (this.renderable && this.renderer) {\n if (remove) this.renderer.removeProperty(this.renderable, name);else this.renderer.setProperty(this.renderable, name, newValue);\n return this;\n }\n\n var sheet = this.options.sheet;\n\n if (sheet && sheet.attached) {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Rule is not linked. Missing sheet option \"link: true\".') : void 0;\n }\n\n return this;\n };\n\n return BaseStyleRule;\n}();\nvar StyleRule =\n/*#__PURE__*/\nfunction (_BaseStyleRule) {\n _inheritsLoose(StyleRule, _BaseStyleRule);\n\n function StyleRule(key, style, options) {\n var _this;\n\n _this = _BaseStyleRule.call(this, key, style, options) || this;\n var selector = options.selector,\n scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n\n if (selector) {\n _this.selectorText = selector;\n } else if (scoped !== false) {\n _this.id = generateId(_assertThisInitialized(_assertThisInitialized(_this)), sheet);\n _this.selectorText = \".\" + escape(_this.id);\n }\n\n return _this;\n }\n /**\n * Set selector string.\n * Attention: use this with caution. Most browsers didn't implement\n * selectorText setter, so this may result in rerendering of entire Style Sheet.\n */\n\n\n var _proto2 = StyleRule.prototype;\n\n /**\n * Apply rule to an element inline.\n */\n _proto2.applyTo = function applyTo(renderable) {\n var renderer = this.renderer;\n\n if (renderer) {\n var json = this.toJSON();\n\n for (var prop in json) {\n renderer.setProperty(renderable, prop, json[prop]);\n }\n }\n\n return this;\n }\n /**\n * Returns JSON representation of the rule.\n * Fallbacks are not supported.\n * Useful for inline styles.\n */\n ;\n\n _proto2.toJSON = function toJSON() {\n var json = {};\n\n for (var prop in this.style) {\n var value = this.style[prop];\n if (typeof value !== 'object') json[prop] = value;else if (Array.isArray(value)) json[prop] = toCssValue(value);\n }\n\n return json;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto2.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.selectorText, this.style, opts);\n };\n\n _createClass(StyleRule, [{\n key: \"selector\",\n set: function set(selector) {\n if (selector === this.selectorText) return;\n this.selectorText = selector;\n var renderer = this.renderer,\n renderable = this.renderable;\n if (!renderable || !renderer) return;\n var hasChanged = renderer.setSelector(renderable, selector); // If selector setter is not implemented, rerender the rule.\n\n if (!hasChanged) {\n renderer.replaceRule(renderable, this);\n }\n }\n /**\n * Get selector string.\n */\n ,\n get: function get() {\n return this.selectorText;\n }\n }]);\n\n return StyleRule;\n}(BaseStyleRule);\nvar pluginStyleRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n if (key[0] === '@' || options.parent && options.parent.type === 'keyframes') {\n return null;\n }\n\n return new StyleRule(key, style, options);\n }\n};\n\nvar defaultToStringOptions = {\n indent: 1,\n children: true\n};\nvar atRegExp = /@([\\w-]+)/;\n/**\n * Conditional rule for @media, @supports\n */\n\nvar ConditionalRule =\n/*#__PURE__*/\nfunction () {\n function ConditionalRule(key, styles, options) {\n this.type = 'conditional';\n this.isProcessed = false;\n this.key = key;\n var atMatch = key.match(atRegExp);\n this.at = atMatch ? atMatch[1] : 'unknown'; // Key might contain a unique suffix in case the `name` passed by user was duplicate.\n\n this.query = options.name || \"@\" + this.at;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n\n var _proto = ConditionalRule.prototype;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Create and register rule, run plugins.\n */\n ;\n\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Replace rule, run plugins.\n */\n ;\n\n _proto.replaceRule = function replaceRule(name, style, options) {\n var newRule = this.rules.replace(name, style, options);\n if (newRule) this.options.jss.plugins.onProcessRule(newRule);\n return newRule;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions;\n }\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n if (options.indent == null) options.indent = defaultToStringOptions.indent;\n if (options.children == null) options.children = defaultToStringOptions.children;\n\n if (options.children === false) {\n return this.query + \" {}\";\n }\n\n var children = this.rules.toString(options);\n return children ? this.query + \" {\" + linebreak + children + linebreak + \"}\" : '';\n };\n\n return ConditionalRule;\n}();\nvar keyRegExp = /@container|@media|@supports\\s+/;\nvar pluginConditionalRule = {\n onCreateRule: function onCreateRule(key, styles, options) {\n return keyRegExp.test(key) ? new ConditionalRule(key, styles, options) : null;\n }\n};\n\nvar defaultToStringOptions$1 = {\n indent: 1,\n children: true\n};\nvar nameRegExp = /@keyframes\\s+([\\w-]+)/;\n/**\n * Rule for @keyframes\n */\n\nvar KeyframesRule =\n/*#__PURE__*/\nfunction () {\n function KeyframesRule(key, frames, options) {\n this.type = 'keyframes';\n this.at = '@keyframes';\n this.isProcessed = false;\n var nameMatch = key.match(nameRegExp);\n\n if (nameMatch && nameMatch[1]) {\n this.name = nameMatch[1];\n } else {\n this.name = 'noname';\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Bad keyframes name \" + key) : void 0;\n }\n\n this.key = this.type + \"-\" + this.name;\n this.options = options;\n var scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n this.id = scoped === false ? this.name : escape(generateId(this, sheet));\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in frames) {\n this.rules.add(name, frames[name], _extends({}, options, {\n parent: this\n }));\n }\n\n this.rules.process();\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = KeyframesRule.prototype;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions$1;\n }\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n if (options.indent == null) options.indent = defaultToStringOptions$1.indent;\n if (options.children == null) options.children = defaultToStringOptions$1.children;\n\n if (options.children === false) {\n return this.at + \" \" + this.id + \" {}\";\n }\n\n var children = this.rules.toString(options);\n if (children) children = \"\" + linebreak + children + linebreak;\n return this.at + \" \" + this.id + \" {\" + children + \"}\";\n };\n\n return KeyframesRule;\n}();\nvar keyRegExp$1 = /@keyframes\\s+/;\nvar refRegExp = /\\$([\\w-]+)/g;\n\nvar findReferencedKeyframe = function findReferencedKeyframe(val, keyframes) {\n if (typeof val === 'string') {\n return val.replace(refRegExp, function (match, name) {\n if (name in keyframes) {\n return keyframes[name];\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Referenced keyframes rule \\\"\" + name + \"\\\" is not defined.\") : void 0;\n return match;\n });\n }\n\n return val;\n};\n/**\n * Replace the reference for a animation name.\n */\n\n\nvar replaceRef = function replaceRef(style, prop, keyframes) {\n var value = style[prop];\n var refKeyframe = findReferencedKeyframe(value, keyframes);\n\n if (refKeyframe !== value) {\n style[prop] = refKeyframe;\n }\n};\n\nvar pluginKeyframesRule = {\n onCreateRule: function onCreateRule(key, frames, options) {\n return typeof key === 'string' && keyRegExp$1.test(key) ? new KeyframesRule(key, frames, options) : null;\n },\n // Animation name ref replacer.\n onProcessStyle: function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style' || !sheet) return style;\n if ('animation-name' in style) replaceRef(style, 'animation-name', sheet.keyframes);\n if ('animation' in style) replaceRef(style, 'animation', sheet.keyframes);\n return style;\n },\n onChangeValue: function onChangeValue(val, prop, rule) {\n var sheet = rule.options.sheet;\n\n if (!sheet) {\n return val;\n }\n\n switch (prop) {\n case 'animation':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n case 'animation-name':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n default:\n return val;\n }\n }\n};\n\nvar KeyframeRule =\n/*#__PURE__*/\nfunction (_BaseStyleRule) {\n _inheritsLoose(KeyframeRule, _BaseStyleRule);\n\n function KeyframeRule() {\n return _BaseStyleRule.apply(this, arguments) || this;\n }\n\n var _proto = KeyframeRule.prototype;\n\n /**\n * Generates a CSS string.\n */\n _proto.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.key, this.style, opts);\n };\n\n return KeyframeRule;\n}(BaseStyleRule);\nvar pluginKeyframeRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n if (options.parent && options.parent.type === 'keyframes') {\n return new KeyframeRule(key, style, options);\n }\n\n return null;\n }\n};\n\nvar FontFaceRule =\n/*#__PURE__*/\nfunction () {\n function FontFaceRule(key, style, options) {\n this.type = 'font-face';\n this.at = '@font-face';\n this.isProcessed = false;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = FontFaceRule.prototype;\n\n _proto.toString = function toString(options) {\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n if (Array.isArray(this.style)) {\n var str = '';\n\n for (var index = 0; index < this.style.length; index++) {\n str += toCss(this.at, this.style[index]);\n if (this.style[index + 1]) str += linebreak;\n }\n\n return str;\n }\n\n return toCss(this.at, this.style, options);\n };\n\n return FontFaceRule;\n}();\nvar keyRegExp$2 = /@font-face/;\nvar pluginFontFaceRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return keyRegExp$2.test(key) ? new FontFaceRule(key, style, options) : null;\n }\n};\n\nvar ViewportRule =\n/*#__PURE__*/\nfunction () {\n function ViewportRule(key, style, options) {\n this.type = 'viewport';\n this.at = '@viewport';\n this.isProcessed = false;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = ViewportRule.prototype;\n\n _proto.toString = function toString(options) {\n return toCss(this.key, this.style, options);\n };\n\n return ViewportRule;\n}();\nvar pluginViewportRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return key === '@viewport' || key === '@-ms-viewport' ? new ViewportRule(key, style, options) : null;\n }\n};\n\nvar SimpleRule =\n/*#__PURE__*/\nfunction () {\n function SimpleRule(key, value, options) {\n this.type = 'simple';\n this.isProcessed = false;\n this.key = key;\n this.value = value;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n // eslint-disable-next-line no-unused-vars\n\n\n var _proto = SimpleRule.prototype;\n\n _proto.toString = function toString(options) {\n if (Array.isArray(this.value)) {\n var str = '';\n\n for (var index = 0; index < this.value.length; index++) {\n str += this.key + \" \" + this.value[index] + \";\";\n if (this.value[index + 1]) str += '\\n';\n }\n\n return str;\n }\n\n return this.key + \" \" + this.value + \";\";\n };\n\n return SimpleRule;\n}();\nvar keysMap = {\n '@charset': true,\n '@import': true,\n '@namespace': true\n};\nvar pluginSimpleRule = {\n onCreateRule: function onCreateRule(key, value, options) {\n return key in keysMap ? new SimpleRule(key, value, options) : null;\n }\n};\n\nvar plugins = [pluginStyleRule, pluginConditionalRule, pluginKeyframesRule, pluginKeyframeRule, pluginFontFaceRule, pluginViewportRule, pluginSimpleRule];\n\nvar defaultUpdateOptions = {\n process: true\n};\nvar forceUpdateOptions = {\n force: true,\n process: true\n /**\n * Contains rules objects and allows adding/removing etc.\n * Is used for e.g. by `StyleSheet` or `ConditionalRule`.\n */\n\n};\n\nvar RuleList =\n/*#__PURE__*/\nfunction () {\n // Rules registry for access by .get() method.\n // It contains the same rule registered by name and by selector.\n // Original styles object.\n // Used to ensure correct rules order.\n function RuleList(options) {\n this.map = {};\n this.raw = {};\n this.index = [];\n this.counter = 0;\n this.options = options;\n this.classes = options.classes;\n this.keyframes = options.keyframes;\n }\n /**\n * Create and register rule.\n *\n * Will not render after Style Sheet was rendered the first time.\n */\n\n\n var _proto = RuleList.prototype;\n\n _proto.add = function add(name, decl, ruleOptions) {\n var _this$options = this.options,\n parent = _this$options.parent,\n sheet = _this$options.sheet,\n jss = _this$options.jss,\n Renderer = _this$options.Renderer,\n generateId = _this$options.generateId,\n scoped = _this$options.scoped;\n\n var options = _extends({\n classes: this.classes,\n parent: parent,\n sheet: sheet,\n jss: jss,\n Renderer: Renderer,\n generateId: generateId,\n scoped: scoped,\n name: name,\n keyframes: this.keyframes,\n selector: undefined\n }, ruleOptions); // When user uses .createStyleSheet(), duplicate names are not possible, but\n // `sheet.addRule()` opens the door for any duplicate rule name. When this happens\n // we need to make the key unique within this RuleList instance scope.\n\n\n var key = name;\n\n if (name in this.raw) {\n key = name + \"-d\" + this.counter++;\n } // We need to save the original decl before creating the rule\n // because cache plugin needs to use it as a key to return a cached rule.\n\n\n this.raw[key] = decl;\n\n if (key in this.classes) {\n // E.g. rules inside of @media container\n options.selector = \".\" + escape(this.classes[key]);\n }\n\n var rule = createRule(key, decl, options);\n if (!rule) return null;\n this.register(rule);\n var index = options.index === undefined ? this.index.length : options.index;\n this.index.splice(index, 0, rule);\n return rule;\n }\n /**\n * Replace rule.\n * Create a new rule and remove old one instead of overwriting\n * because we want to invoke onCreateRule hook to make plugins work.\n */\n ;\n\n _proto.replace = function replace(name, decl, ruleOptions) {\n var oldRule = this.get(name);\n var oldIndex = this.index.indexOf(oldRule);\n\n if (oldRule) {\n this.remove(oldRule);\n }\n\n var options = ruleOptions;\n if (oldIndex !== -1) options = _extends({}, ruleOptions, {\n index: oldIndex\n });\n return this.add(name, decl, options);\n }\n /**\n * Get a rule by name or selector.\n */\n ;\n\n _proto.get = function get(nameOrSelector) {\n return this.map[nameOrSelector];\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.remove = function remove(rule) {\n this.unregister(rule);\n delete this.raw[rule.key];\n this.index.splice(this.index.indexOf(rule), 1);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.index.indexOf(rule);\n }\n /**\n * Run `onProcessRule()` plugins on every rule.\n */\n ;\n\n _proto.process = function process() {\n var plugins = this.options.jss.plugins; // We need to clone array because if we modify the index somewhere else during a loop\n // we end up with very hard-to-track-down side effects.\n\n this.index.slice(0).forEach(plugins.onProcessRule, plugins);\n }\n /**\n * Register a rule in `.map`, `.classes` and `.keyframes` maps.\n */\n ;\n\n _proto.register = function register(rule) {\n this.map[rule.key] = rule;\n\n if (rule instanceof StyleRule) {\n this.map[rule.selector] = rule;\n if (rule.id) this.classes[rule.key] = rule.id;\n } else if (rule instanceof KeyframesRule && this.keyframes) {\n this.keyframes[rule.name] = rule.id;\n }\n }\n /**\n * Unregister a rule.\n */\n ;\n\n _proto.unregister = function unregister(rule) {\n delete this.map[rule.key];\n\n if (rule instanceof StyleRule) {\n delete this.map[rule.selector];\n delete this.classes[rule.key];\n } else if (rule instanceof KeyframesRule) {\n delete this.keyframes[rule.name];\n }\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var name;\n var data;\n var options;\n\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'string') {\n name = arguments.length <= 0 ? undefined : arguments[0];\n data = arguments.length <= 1 ? undefined : arguments[1];\n options = arguments.length <= 2 ? undefined : arguments[2];\n } else {\n data = arguments.length <= 0 ? undefined : arguments[0];\n options = arguments.length <= 1 ? undefined : arguments[1];\n name = null;\n }\n\n if (name) {\n this.updateOne(this.get(name), data, options);\n } else {\n for (var index = 0; index < this.index.length; index++) {\n this.updateOne(this.index[index], data, options);\n }\n }\n }\n /**\n * Execute plugins, update rule props.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n if (options === void 0) {\n options = defaultUpdateOptions;\n }\n\n var _this$options2 = this.options,\n plugins = _this$options2.jss.plugins,\n sheet = _this$options2.sheet; // It is a rules container like for e.g. ConditionalRule.\n\n if (rule.rules instanceof RuleList) {\n rule.rules.update(data, options);\n return;\n }\n\n var style = rule.style;\n plugins.onUpdate(data, rule, sheet, options); // We rely on a new `style` ref in case it was mutated during onUpdate hook.\n\n if (options.process && style && style !== rule.style) {\n // We need to run the plugins in case new `style` relies on syntax plugins.\n plugins.onProcessStyle(rule.style, rule, sheet); // Update and add props.\n\n for (var prop in rule.style) {\n var nextValue = rule.style[prop];\n var prevValue = style[prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (nextValue !== prevValue) {\n rule.prop(prop, nextValue, forceUpdateOptions);\n }\n } // Remove props.\n\n\n for (var _prop in style) {\n var _nextValue = rule.style[_prop];\n var _prevValue = style[_prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (_nextValue == null && _nextValue !== _prevValue) {\n rule.prop(_prop, null, forceUpdateOptions);\n }\n }\n }\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n var str = '';\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n for (var index = 0; index < this.index.length; index++) {\n var rule = this.index[index];\n var css = rule.toString(options); // No need to render an empty rule.\n\n if (!css && !link) continue;\n if (str) str += linebreak;\n str += css;\n }\n\n return str;\n };\n\n return RuleList;\n}();\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n function StyleSheet(styles, options) {\n this.attached = false;\n this.deployed = false;\n this.classes = {};\n this.keyframes = {};\n this.options = _extends({}, options, {\n sheet: this,\n parent: this,\n classes: this.classes,\n keyframes: this.keyframes\n });\n\n if (options.Renderer) {\n this.renderer = new options.Renderer(this);\n }\n\n this.rules = new RuleList(this.options);\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Attach renderable to the render tree.\n */\n\n\n var _proto = StyleSheet.prototype;\n\n _proto.attach = function attach() {\n if (this.attached) return this;\n if (this.renderer) this.renderer.attach();\n this.attached = true; // Order is important, because we can't use insertRule API if style element is not attached.\n\n if (!this.deployed) this.deploy();\n return this;\n }\n /**\n * Remove renderable from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.attached) return this;\n if (this.renderer) this.renderer.detach();\n this.attached = false;\n return this;\n }\n /**\n * Add a rule to the current stylesheet.\n * Will insert a rule also after the stylesheet has been rendered first time.\n */\n ;\n\n _proto.addRule = function addRule(name, decl, options) {\n var queue = this.queue; // Plugins can create rules.\n // In order to preserve the right order, we need to queue all `.addRule` calls,\n // which happen after the first `rules.add()` call.\n\n if (this.attached && !queue) this.queue = [];\n var rule = this.rules.add(name, decl, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n\n if (this.attached) {\n if (!this.deployed) return rule; // Don't insert rule directly if there is no stringified version yet.\n // It will be inserted all together when .attach is called.\n\n if (queue) queue.push(rule);else {\n this.insertRule(rule);\n\n if (this.queue) {\n this.queue.forEach(this.insertRule, this);\n this.queue = undefined;\n }\n }\n return rule;\n } // We can't add rules to a detached style node.\n // We will redeploy the sheet once user will attach it.\n\n\n this.deployed = false;\n return rule;\n }\n /**\n * Replace a rule in the current stylesheet.\n */\n ;\n\n _proto.replaceRule = function replaceRule(nameOrSelector, decl, options) {\n var oldRule = this.rules.get(nameOrSelector);\n if (!oldRule) return this.addRule(nameOrSelector, decl, options);\n var newRule = this.rules.replace(nameOrSelector, decl, options);\n\n if (newRule) {\n this.options.jss.plugins.onProcessRule(newRule);\n }\n\n if (this.attached) {\n if (!this.deployed) return newRule; // Don't replace / delete rule directly if there is no stringified version yet.\n // It will be inserted all together when .attach is called.\n\n if (this.renderer) {\n if (!newRule) {\n this.renderer.deleteRule(oldRule);\n } else if (oldRule.renderable) {\n this.renderer.replaceRule(oldRule.renderable, newRule);\n }\n }\n\n return newRule;\n } // We can't replace rules to a detached style node.\n // We will redeploy the sheet once user will attach it.\n\n\n this.deployed = false;\n return newRule;\n }\n /**\n * Insert rule into the StyleSheet\n */\n ;\n\n _proto.insertRule = function insertRule(rule) {\n if (this.renderer) {\n this.renderer.insertRule(rule);\n }\n }\n /**\n * Create and add rules.\n * Will render also after Style Sheet was rendered the first time.\n */\n ;\n\n _proto.addRules = function addRules(styles, options) {\n var added = [];\n\n for (var name in styles) {\n var rule = this.addRule(name, styles[name], options);\n if (rule) added.push(rule);\n }\n\n return added;\n }\n /**\n * Get a rule by name or selector.\n */\n ;\n\n _proto.getRule = function getRule(nameOrSelector) {\n return this.rules.get(nameOrSelector);\n }\n /**\n * Delete a rule by name.\n * Returns `true`: if rule has been deleted from the DOM.\n */\n ;\n\n _proto.deleteRule = function deleteRule(name) {\n var rule = typeof name === 'object' ? name : this.rules.get(name);\n\n if (!rule || // Style sheet was created without link: true and attached, in this case we\n // won't be able to remove the CSS rule from the DOM.\n this.attached && !rule.renderable) {\n return false;\n }\n\n this.rules.remove(rule);\n\n if (this.attached && rule.renderable && this.renderer) {\n return this.renderer.deleteRule(rule.renderable);\n }\n\n return true;\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Deploy pure CSS string to a renderable.\n */\n ;\n\n _proto.deploy = function deploy() {\n if (this.renderer) this.renderer.deploy();\n this.deployed = true;\n return this;\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var _this$rules;\n\n (_this$rules = this.rules).update.apply(_this$rules, arguments);\n\n return this;\n }\n /**\n * Updates a single rule.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n this.rules.updateOne(rule, data, options);\n return this;\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n return this.rules.toString(options);\n };\n\n return StyleSheet;\n}();\n\nvar PluginsRegistry =\n/*#__PURE__*/\nfunction () {\n function PluginsRegistry() {\n this.plugins = {\n internal: [],\n external: []\n };\n this.registry = {};\n }\n\n var _proto = PluginsRegistry.prototype;\n\n /**\n * Call `onCreateRule` hooks and return an object if returned by a hook.\n */\n _proto.onCreateRule = function onCreateRule(name, decl, options) {\n for (var i = 0; i < this.registry.onCreateRule.length; i++) {\n var rule = this.registry.onCreateRule[i](name, decl, options);\n if (rule) return rule;\n }\n\n return null;\n }\n /**\n * Call `onProcessRule` hooks.\n */\n ;\n\n _proto.onProcessRule = function onProcessRule(rule) {\n if (rule.isProcessed) return;\n var sheet = rule.options.sheet;\n\n for (var i = 0; i < this.registry.onProcessRule.length; i++) {\n this.registry.onProcessRule[i](rule, sheet);\n }\n\n if (rule.style) this.onProcessStyle(rule.style, rule, sheet);\n rule.isProcessed = true;\n }\n /**\n * Call `onProcessStyle` hooks.\n */\n ;\n\n _proto.onProcessStyle = function onProcessStyle(style, rule, sheet) {\n for (var i = 0; i < this.registry.onProcessStyle.length; i++) {\n rule.style = this.registry.onProcessStyle[i](rule.style, rule, sheet);\n }\n }\n /**\n * Call `onProcessSheet` hooks.\n */\n ;\n\n _proto.onProcessSheet = function onProcessSheet(sheet) {\n for (var i = 0; i < this.registry.onProcessSheet.length; i++) {\n this.registry.onProcessSheet[i](sheet);\n }\n }\n /**\n * Call `onUpdate` hooks.\n */\n ;\n\n _proto.onUpdate = function onUpdate(data, rule, sheet, options) {\n for (var i = 0; i < this.registry.onUpdate.length; i++) {\n this.registry.onUpdate[i](data, rule, sheet, options);\n }\n }\n /**\n * Call `onChangeValue` hooks.\n */\n ;\n\n _proto.onChangeValue = function onChangeValue(value, prop, rule) {\n var processedValue = value;\n\n for (var i = 0; i < this.registry.onChangeValue.length; i++) {\n processedValue = this.registry.onChangeValue[i](processedValue, prop, rule);\n }\n\n return processedValue;\n }\n /**\n * Register a plugin.\n */\n ;\n\n _proto.use = function use(newPlugin, options) {\n if (options === void 0) {\n options = {\n queue: 'external'\n };\n }\n\n var plugins = this.plugins[options.queue]; // Avoids applying same plugin twice, at least based on ref.\n\n if (plugins.indexOf(newPlugin) !== -1) {\n return;\n }\n\n plugins.push(newPlugin);\n this.registry = [].concat(this.plugins.external, this.plugins.internal).reduce(function (registry, plugin) {\n for (var name in plugin) {\n if (name in registry) {\n registry[name].push(plugin[name]);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown hook \\\"\" + name + \"\\\".\") : void 0;\n }\n }\n\n return registry;\n }, {\n onCreateRule: [],\n onProcessRule: [],\n onProcessStyle: [],\n onProcessSheet: [],\n onChangeValue: [],\n onUpdate: []\n });\n };\n\n return PluginsRegistry;\n}();\n\n/**\n * Sheets registry to access all instances in one place.\n */\n\nvar SheetsRegistry =\n/*#__PURE__*/\nfunction () {\n function SheetsRegistry() {\n this.registry = [];\n }\n\n var _proto = SheetsRegistry.prototype;\n\n /**\n * Register a Style Sheet.\n */\n _proto.add = function add(sheet) {\n var registry = this.registry;\n var index = sheet.options.index;\n if (registry.indexOf(sheet) !== -1) return;\n\n if (registry.length === 0 || index >= this.index) {\n registry.push(sheet);\n return;\n } // Find a position.\n\n\n for (var i = 0; i < registry.length; i++) {\n if (registry[i].options.index > index) {\n registry.splice(i, 0, sheet);\n return;\n }\n }\n }\n /**\n * Reset the registry.\n */\n ;\n\n _proto.reset = function reset() {\n this.registry = [];\n }\n /**\n * Remove a Style Sheet.\n */\n ;\n\n _proto.remove = function remove(sheet) {\n var index = this.registry.indexOf(sheet);\n this.registry.splice(index, 1);\n }\n /**\n * Convert all attached sheets to a CSS string.\n */\n ;\n\n _proto.toString = function toString(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n attached = _ref.attached,\n options = _objectWithoutPropertiesLoose(_ref, [\"attached\"]);\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n var css = '';\n\n for (var i = 0; i < this.registry.length; i++) {\n var sheet = this.registry[i];\n\n if (attached != null && sheet.attached !== attached) {\n continue;\n }\n\n if (css) css += linebreak;\n css += sheet.toString(options);\n }\n\n return css;\n };\n\n _createClass(SheetsRegistry, [{\n key: \"index\",\n\n /**\n * Current highest index number.\n */\n get: function get() {\n return this.registry.length === 0 ? 0 : this.registry[this.registry.length - 1].options.index;\n }\n }]);\n\n return SheetsRegistry;\n}();\n\n/**\n * This is a global sheets registry. Only DomRenderer will add sheets to it.\n * On the server one should use an own SheetsRegistry instance and add the\n * sheets to it, because you need to make sure to create a new registry for\n * each request in order to not leak sheets across requests.\n */\n\nvar sheets = new SheetsRegistry();\n\n/* eslint-disable */\n\n/**\n * Now that `globalThis` is available on most platforms\n * (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis#browser_compatibility)\n * we check for `globalThis` first. `globalThis` is necessary for jss\n * to run in Agoric's secure version of JavaScript (SES). Under SES,\n * `globalThis` exists, but `window`, `self`, and `Function('return\n * this')()` are all undefined for security reasons.\n *\n * https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n */\nvar globalThis$1 = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' && window.Math === Math ? window : typeof self !== 'undefined' && self.Math === Math ? self : Function('return this')();\n\nvar ns = '2f1acc6c3a606b082e5eef5e54414ffb';\nif (globalThis$1[ns] == null) globalThis$1[ns] = 0; // Bundle may contain multiple JSS versions at the same time. In order to identify\n// the current version with just one short number and use it for classes generation\n// we use a counter. Also it is more accurate, because user can manually reevaluate\n// the module.\n\nvar moduleId = globalThis$1[ns]++;\n\nvar maxRules = 1e10;\n/**\n * Returns a function which generates unique class names based on counters.\n * When new generator function is created, rule counter is reseted.\n * We need to reset the rule counter for SSR for each request.\n */\n\nvar createGenerateId = function createGenerateId(options) {\n if (options === void 0) {\n options = {};\n }\n\n var ruleCounter = 0;\n\n var generateId = function generateId(rule, sheet) {\n ruleCounter += 1;\n\n if (ruleCounter > maxRules) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] You might have a memory leak. Rule counter is at \" + ruleCounter + \".\") : void 0;\n }\n\n var jssId = '';\n var prefix = '';\n\n if (sheet) {\n if (sheet.options.classNamePrefix) {\n prefix = sheet.options.classNamePrefix;\n }\n\n if (sheet.options.jss.id != null) {\n jssId = String(sheet.options.jss.id);\n }\n }\n\n if (options.minify) {\n // Using \"c\" because a number can't be the first char in a class name.\n return \"\" + (prefix || 'c') + moduleId + jssId + ruleCounter;\n }\n\n return prefix + rule.key + \"-\" + moduleId + (jssId ? \"-\" + jssId : '') + \"-\" + ruleCounter;\n };\n\n return generateId;\n};\n\n/**\n * Cache the value from the first time a function is called.\n */\n\nvar memoize = function memoize(fn) {\n var value;\n return function () {\n if (!value) value = fn();\n return value;\n };\n};\n/**\n * Get a style property value.\n */\n\n\nvar getPropertyValue = function getPropertyValue(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n return cssRule.attributeStyleMap.get(prop);\n }\n\n return cssRule.style.getPropertyValue(prop);\n } catch (err) {\n // IE may throw if property is unknown.\n return '';\n }\n};\n/**\n * Set a style property.\n */\n\n\nvar setProperty = function setProperty(cssRule, prop, value) {\n try {\n var cssValue = value;\n\n if (Array.isArray(value)) {\n cssValue = toCssValue(value);\n } // Support CSSTOM.\n\n\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.set(prop, cssValue);\n } else {\n var indexOfImportantFlag = cssValue ? cssValue.indexOf('!important') : -1;\n var cssValueWithoutImportantFlag = indexOfImportantFlag > -1 ? cssValue.substr(0, indexOfImportantFlag - 1) : cssValue;\n cssRule.style.setProperty(prop, cssValueWithoutImportantFlag, indexOfImportantFlag > -1 ? 'important' : '');\n }\n } catch (err) {\n // IE may throw if property is unknown.\n return false;\n }\n\n return true;\n};\n/**\n * Remove a style property.\n */\n\n\nvar removeProperty = function removeProperty(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.delete(prop);\n } else {\n cssRule.style.removeProperty(prop);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] DOMException \\\"\" + err.message + \"\\\" was thrown. Tried to remove property \\\"\" + prop + \"\\\".\") : void 0;\n }\n};\n/**\n * Set the selector.\n */\n\n\nvar setSelector = function setSelector(cssRule, selectorText) {\n cssRule.selectorText = selectorText; // Return false if setter was not successful.\n // Currently works in chrome only.\n\n return cssRule.selectorText === selectorText;\n};\n/**\n * Gets the `head` element upon the first call and caches it.\n * We assume it can't be null.\n */\n\n\nvar getHead = memoize(function () {\n return document.querySelector('head');\n});\n/**\n * Find attached sheet with an index higher than the passed one.\n */\n\nfunction findHigherSheet(registry, options) {\n for (var i = 0; i < registry.length; i++) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.index > options.index && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find attached sheet with the highest index.\n */\n\n\nfunction findHighestSheet(registry, options) {\n for (var i = registry.length - 1; i >= 0; i--) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find a comment with \"jss\" inside.\n */\n\n\nfunction findCommentNode(text) {\n var head = getHead();\n\n for (var i = 0; i < head.childNodes.length; i++) {\n var node = head.childNodes[i];\n\n if (node.nodeType === 8 && node.nodeValue.trim() === text) {\n return node;\n }\n }\n\n return null;\n}\n/**\n * Find a node before which we can insert the sheet.\n */\n\n\nfunction findPrevNode(options) {\n var registry = sheets.registry;\n\n if (registry.length > 0) {\n // Try to insert before the next higher sheet.\n var sheet = findHigherSheet(registry, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element\n };\n } // Otherwise insert after the last attached.\n\n\n sheet = findHighestSheet(registry, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element.nextSibling\n };\n }\n } // Try to find a comment placeholder if registry is empty.\n\n\n var insertionPoint = options.insertionPoint;\n\n if (insertionPoint && typeof insertionPoint === 'string') {\n var comment = findCommentNode(insertionPoint);\n\n if (comment) {\n return {\n parent: comment.parentNode,\n node: comment.nextSibling\n };\n } // If user specifies an insertion point and it can't be found in the document -\n // bad specificity issues may appear.\n\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Insertion point \\\"\" + insertionPoint + \"\\\" not found.\") : void 0;\n }\n\n return false;\n}\n/**\n * Insert style element into the DOM.\n */\n\n\nfunction insertStyle(style, options) {\n var insertionPoint = options.insertionPoint;\n var nextNode = findPrevNode(options);\n\n if (nextNode !== false && nextNode.parent) {\n nextNode.parent.insertBefore(style, nextNode.node);\n return;\n } // Works with iframes and any node types.\n\n\n if (insertionPoint && typeof insertionPoint.nodeType === 'number') {\n var insertionPointElement = insertionPoint;\n var parentNode = insertionPointElement.parentNode;\n if (parentNode) parentNode.insertBefore(style, insertionPointElement.nextSibling);else process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Insertion point is not in the DOM.') : void 0;\n return;\n }\n\n getHead().appendChild(style);\n}\n/**\n * Read jss nonce setting from the page if the user has set it.\n */\n\n\nvar getNonce = memoize(function () {\n var node = document.querySelector('meta[property=\"csp-nonce\"]');\n return node ? node.getAttribute('content') : null;\n});\n\nvar _insertRule = function insertRule(container, rule, index) {\n try {\n if ('insertRule' in container) {\n container.insertRule(rule, index);\n } // Keyframes rule.\n else if ('appendRule' in container) {\n container.appendRule(rule);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] \" + err.message) : void 0;\n return false;\n }\n\n return container.cssRules[index];\n};\n\nvar getValidRuleInsertionIndex = function getValidRuleInsertionIndex(container, index) {\n var maxIndex = container.cssRules.length; // In case previous insertion fails, passed index might be wrong\n\n if (index === undefined || index > maxIndex) {\n // eslint-disable-next-line no-param-reassign\n return maxIndex;\n }\n\n return index;\n};\n\nvar createStyle = function createStyle() {\n var el = document.createElement('style'); // Without it, IE will have a broken source order specificity if we\n // insert rules after we insert the style tag.\n // It seems to kick-off the source order specificity algorithm.\n\n el.textContent = '\\n';\n return el;\n};\n\nvar DomRenderer =\n/*#__PURE__*/\nfunction () {\n // Will be empty if link: true option is not set, because\n // it is only for use together with insertRule API.\n function DomRenderer(sheet) {\n this.getPropertyValue = getPropertyValue;\n this.setProperty = setProperty;\n this.removeProperty = removeProperty;\n this.setSelector = setSelector;\n this.hasInsertedRules = false;\n this.cssRules = [];\n // There is no sheet when the renderer is used from a standalone StyleRule.\n if (sheet) sheets.add(sheet);\n this.sheet = sheet;\n\n var _ref = this.sheet ? this.sheet.options : {},\n media = _ref.media,\n meta = _ref.meta,\n element = _ref.element;\n\n this.element = element || createStyle();\n this.element.setAttribute('data-jss', '');\n if (media) this.element.setAttribute('media', media);\n if (meta) this.element.setAttribute('data-meta', meta);\n var nonce = getNonce();\n if (nonce) this.element.setAttribute('nonce', nonce);\n }\n /**\n * Insert style element into render tree.\n */\n\n\n var _proto = DomRenderer.prototype;\n\n _proto.attach = function attach() {\n // In the case the element node is external and it is already in the DOM.\n if (this.element.parentNode || !this.sheet) return;\n insertStyle(this.element, this.sheet.options); // When rules are inserted using `insertRule` API, after `sheet.detach().attach()`\n // most browsers create a new CSSStyleSheet, except of all IEs.\n\n var deployed = Boolean(this.sheet && this.sheet.deployed);\n\n if (this.hasInsertedRules && deployed) {\n this.hasInsertedRules = false;\n this.deploy();\n }\n }\n /**\n * Remove style element from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.sheet) return;\n var parentNode = this.element.parentNode;\n if (parentNode) parentNode.removeChild(this.element); // In the most browsers, rules inserted using insertRule() API will be lost when style element is removed.\n // Though IE will keep them and we need a consistent behavior.\n\n if (this.sheet.options.link) {\n this.cssRules = [];\n this.element.textContent = '\\n';\n }\n }\n /**\n * Inject CSS string into element.\n */\n ;\n\n _proto.deploy = function deploy() {\n var sheet = this.sheet;\n if (!sheet) return;\n\n if (sheet.options.link) {\n this.insertRules(sheet.rules);\n return;\n }\n\n this.element.textContent = \"\\n\" + sheet.toString() + \"\\n\";\n }\n /**\n * Insert RuleList into an element.\n */\n ;\n\n _proto.insertRules = function insertRules(rules, nativeParent) {\n for (var i = 0; i < rules.index.length; i++) {\n this.insertRule(rules.index[i], i, nativeParent);\n }\n }\n /**\n * Insert a rule into element.\n */\n ;\n\n _proto.insertRule = function insertRule(rule, index, nativeParent) {\n if (nativeParent === void 0) {\n nativeParent = this.element.sheet;\n }\n\n if (rule.rules) {\n var parent = rule;\n var latestNativeParent = nativeParent;\n\n if (rule.type === 'conditional' || rule.type === 'keyframes') {\n var _insertionIndex = getValidRuleInsertionIndex(nativeParent, index); // We need to render the container without children first.\n\n\n latestNativeParent = _insertRule(nativeParent, parent.toString({\n children: false\n }), _insertionIndex);\n\n if (latestNativeParent === false) {\n return false;\n }\n\n this.refCssRule(rule, _insertionIndex, latestNativeParent);\n }\n\n this.insertRules(parent.rules, latestNativeParent);\n return latestNativeParent;\n }\n\n var ruleStr = rule.toString();\n if (!ruleStr) return false;\n var insertionIndex = getValidRuleInsertionIndex(nativeParent, index);\n\n var nativeRule = _insertRule(nativeParent, ruleStr, insertionIndex);\n\n if (nativeRule === false) {\n return false;\n }\n\n this.hasInsertedRules = true;\n this.refCssRule(rule, insertionIndex, nativeRule);\n return nativeRule;\n };\n\n _proto.refCssRule = function refCssRule(rule, index, cssRule) {\n rule.renderable = cssRule; // We only want to reference the top level rules, deleteRule API doesn't support removing nested rules\n // like rules inside media queries or keyframes\n\n if (rule.options.parent instanceof StyleSheet) {\n this.cssRules.splice(index, 0, cssRule);\n }\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.deleteRule = function deleteRule(cssRule) {\n var sheet = this.element.sheet;\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return true;\n }\n /**\n * Get index of a CSS Rule.\n */\n ;\n\n _proto.indexOf = function indexOf(cssRule) {\n return this.cssRules.indexOf(cssRule);\n }\n /**\n * Generate a new CSS rule and replace the existing one.\n */\n ;\n\n _proto.replaceRule = function replaceRule(cssRule, rule) {\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n this.element.sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return this.insertRule(rule, index);\n }\n /**\n * Get all rules elements.\n */\n ;\n\n _proto.getRules = function getRules() {\n return this.element.sheet.cssRules;\n };\n\n return DomRenderer;\n}();\n\nvar instanceCounter = 0;\n\nvar Jss =\n/*#__PURE__*/\nfunction () {\n function Jss(options) {\n this.id = instanceCounter++;\n this.version = \"10.10.0\";\n this.plugins = new PluginsRegistry();\n this.options = {\n id: {\n minify: false\n },\n createGenerateId: createGenerateId,\n Renderer: isInBrowser ? DomRenderer : null,\n plugins: []\n };\n this.generateId = createGenerateId({\n minify: false\n });\n\n for (var i = 0; i < plugins.length; i++) {\n this.plugins.use(plugins[i], {\n queue: 'internal'\n });\n }\n\n this.setup(options);\n }\n /**\n * Prepares various options, applies plugins.\n * Should not be used twice on the same instance, because there is no plugins\n * deduplication logic.\n */\n\n\n var _proto = Jss.prototype;\n\n _proto.setup = function setup(options) {\n if (options === void 0) {\n options = {};\n }\n\n if (options.createGenerateId) {\n this.options.createGenerateId = options.createGenerateId;\n }\n\n if (options.id) {\n this.options.id = _extends({}, this.options.id, options.id);\n }\n\n if (options.createGenerateId || options.id) {\n this.generateId = this.options.createGenerateId(this.options.id);\n }\n\n if (options.insertionPoint != null) this.options.insertionPoint = options.insertionPoint;\n\n if ('Renderer' in options) {\n this.options.Renderer = options.Renderer;\n } // eslint-disable-next-line prefer-spread\n\n\n if (options.plugins) this.use.apply(this, options.plugins);\n return this;\n }\n /**\n * Create a Style Sheet.\n */\n ;\n\n _proto.createStyleSheet = function createStyleSheet(styles, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n index = _options.index;\n\n if (typeof index !== 'number') {\n index = sheets.index === 0 ? 0 : sheets.index + 1;\n }\n\n var sheet = new StyleSheet(styles, _extends({}, options, {\n jss: this,\n generateId: options.generateId || this.generateId,\n insertionPoint: this.options.insertionPoint,\n Renderer: this.options.Renderer,\n index: index\n }));\n this.plugins.onProcessSheet(sheet);\n return sheet;\n }\n /**\n * Detach the Style Sheet and remove it from the registry.\n */\n ;\n\n _proto.removeStyleSheet = function removeStyleSheet(sheet) {\n sheet.detach();\n sheets.remove(sheet);\n return this;\n }\n /**\n * Create a rule without a Style Sheet.\n * [Deprecated] will be removed in the next major version.\n */\n ;\n\n _proto.createRule = function createRule$1(name, style, options) {\n if (style === void 0) {\n style = {};\n }\n\n if (options === void 0) {\n options = {};\n }\n\n // Enable rule without name for inline styles.\n if (typeof name === 'object') {\n return this.createRule(undefined, name, style);\n }\n\n var ruleOptions = _extends({}, options, {\n name: name,\n jss: this,\n Renderer: this.options.Renderer\n });\n\n if (!ruleOptions.generateId) ruleOptions.generateId = this.generateId;\n if (!ruleOptions.classes) ruleOptions.classes = {};\n if (!ruleOptions.keyframes) ruleOptions.keyframes = {};\n\n var rule = createRule(name, style, ruleOptions);\n\n if (rule) this.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Register plugin. Passed function will be invoked with a rule instance.\n */\n ;\n\n _proto.use = function use() {\n var _this = this;\n\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n plugins.forEach(function (plugin) {\n _this.plugins.use(plugin);\n });\n return this;\n };\n\n return Jss;\n}();\n\nvar createJss = function createJss(options) {\n return new Jss(options);\n};\n\n/**\n * SheetsManager is like a WeakMap which is designed to count StyleSheet\n * instances and attach/detach automatically.\n * Used in react-jss.\n */\n\nvar SheetsManager =\n/*#__PURE__*/\nfunction () {\n function SheetsManager() {\n this.length = 0;\n this.sheets = new WeakMap();\n }\n\n var _proto = SheetsManager.prototype;\n\n _proto.get = function get(key) {\n var entry = this.sheets.get(key);\n return entry && entry.sheet;\n };\n\n _proto.add = function add(key, sheet) {\n if (this.sheets.has(key)) return;\n this.length++;\n this.sheets.set(key, {\n sheet: sheet,\n refs: 0\n });\n };\n\n _proto.manage = function manage(key) {\n var entry = this.sheets.get(key);\n\n if (entry) {\n if (entry.refs === 0) {\n entry.sheet.attach();\n }\n\n entry.refs++;\n return entry.sheet;\n }\n\n warning(false, \"[JSS] SheetsManager: can't find sheet to manage\");\n return undefined;\n };\n\n _proto.unmanage = function unmanage(key) {\n var entry = this.sheets.get(key);\n\n if (entry) {\n if (entry.refs > 0) {\n entry.refs--;\n if (entry.refs === 0) entry.sheet.detach();\n }\n } else {\n warning(false, \"SheetsManager: can't find sheet to unmanage\");\n }\n };\n\n _createClass(SheetsManager, [{\n key: \"size\",\n get: function get() {\n return this.length;\n }\n }]);\n\n return SheetsManager;\n}();\n\n/**\n* Export a constant indicating if this browser has CSSTOM support.\n* https://developers.google.com/web/updates/2018/03/cssom\n*/\nvar hasCSSTOMSupport = typeof CSS === 'object' && CSS != null && 'number' in CSS;\n\n/**\n * Extracts a styles object with only props that contain function values.\n */\nfunction getDynamicStyles(styles) {\n var to = null;\n\n for (var key in styles) {\n var value = styles[key];\n var type = typeof value;\n\n if (type === 'function') {\n if (!to) to = {};\n to[key] = value;\n } else if (type === 'object' && value !== null && !Array.isArray(value)) {\n var extracted = getDynamicStyles(value);\n\n if (extracted) {\n if (!to) to = {};\n to[key] = extracted;\n }\n }\n }\n\n return to;\n}\n\n/**\n * A better abstraction over CSS.\n *\n * @copyright Oleg Isonen (Slobodskoi) / Isonen 2014-present\n * @website https://github.com/cssinjs/jss\n * @license MIT\n */\nvar index = createJss();\n\nexport default index;\nexport { RuleList, SheetsManager, SheetsRegistry, createJss as create, createGenerateId, createRule, getDynamicStyles, hasCSSTOMSupport, sheets, toCssValue };\n","// Supports determination of isControlled().\n// Controlled input accepts its current value as a prop.\n//\n// @see https://facebook.github.io/react/docs/forms.html#controlled-components\n// @param value\n// @returns {boolean} true if string (including '') or number (including zero)\nexport function hasValue(value) {\n return value != null && !(Array.isArray(value) && value.length === 0);\n} // Determine if field is empty or filled.\n// Response determines if label is presented above field or as placeholder.\n//\n// @param obj\n// @param SSR\n// @returns {boolean} False when not present or empty string.\n// True when any number or string with length.\n\nexport function isFilled(obj) {\n var SSR = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return obj && (hasValue(obj.value) && obj.value !== '' || SSR && hasValue(obj.defaultValue) && obj.defaultValue !== '');\n} // Determine if an Input is adorned on start.\n// It's corresponding to the left with LTR.\n//\n// @param obj\n// @returns {boolean} False when no adornments.\n// True when adorned at the start.\n\nexport function isAdornedStart(obj) {\n return obj.startAdornment;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return !isNaN(date);\n}","var MILLISECONDS_IN_MINUTE = 60000;\n\nfunction getDateMillisecondsPart(date) {\n return date.getTime() % MILLISECONDS_IN_MINUTE;\n}\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\n\n\nexport default function getTimezoneOffsetInMilliseconds(dirtyDate) {\n var date = new Date(dirtyDate.getTime());\n var baseTimezoneOffset = Math.ceil(date.getTimezoneOffset());\n date.setSeconds(0, 0);\n var hasNegativeUTCOffset = baseTimezoneOffset > 0;\n var millisecondsPartOfTimezoneOffset = hasNegativeUTCOffset ? (MILLISECONDS_IN_MINUTE + getDateMillisecondsPart(date)) % MILLISECONDS_IN_MINUTE : getDateMillisecondsPart(date);\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset;\n}","import * as React from 'react';\n/**\n * Private module reserved for @material-ui/x packages.\n */\n\nexport default function useId(idOverride) {\n var _React$useState = React.useState(idOverride),\n defaultId = _React$useState[0],\n setDefaultId = _React$useState[1];\n\n var id = idOverride || defaultId;\n React.useEffect(function () {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the random value for client-side rendering only.\n // We can't use it server-side.\n setDefaultId(\"mui-\".concat(Math.round(Math.random() * 1e5)));\n }\n }, [defaultId]);\n return id;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `eachDay` to `eachDayOfInterval`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * eachDay(new Date(2014, 0, 10), new Date(2014, 0, 20))\n *\n * // v2.0.0 onward\n *\n * eachDayOfInterval(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) }\n * )\n * ```\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * var result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\n\nexport default function eachDayOfInterval(dirtyInterval, options) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n var step = options && 'step' in options ? Number(options.step) : 1;\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setDate(currentDate.getDate() + step);\n currentDate.setHours(0, 0, 0, 0);\n }\n\n return dates;\n}","var __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};\nimport { _, Autowired, Bean, ColumnGroup, Constants, GroupInstanceIdCreator } from \"@ag-grid-community/core\";\nvar BaseGridSerializingSession = /** @class */ (function () {\n function BaseGridSerializingSession(config) {\n var columnController = config.columnController, valueService = config.valueService, gridOptionsWrapper = config.gridOptionsWrapper, processCellCallback = config.processCellCallback, processHeaderCallback = config.processHeaderCallback, processGroupHeaderCallback = config.processGroupHeaderCallback, cellAndHeaderEscaper = config.cellAndHeaderEscaper;\n this.columnController = columnController;\n this.valueService = valueService;\n this.gridOptionsWrapper = gridOptionsWrapper;\n this.processCellCallback = processCellCallback;\n this.processHeaderCallback = processHeaderCallback;\n this.processGroupHeaderCallback = processGroupHeaderCallback;\n this.cellAndHeaderEscaper = cellAndHeaderEscaper;\n }\n BaseGridSerializingSession.prototype.extractHeaderValue = function (column) {\n var nameForCol = this.getHeaderName(this.processHeaderCallback, column);\n if (nameForCol === null || nameForCol === undefined) {\n nameForCol = '';\n }\n return this.cellAndHeaderEscaper ? this.cellAndHeaderEscaper(nameForCol) : nameForCol;\n };\n BaseGridSerializingSession.prototype.extractRowCellValue = function (column, index, type, node) {\n var isGroupCell = node && node.group && !!column.getColDef().showRowGroup;\n var valueForCell;\n if (isGroupCell) {\n valueForCell = this.createValueForGroupNode(node);\n }\n else {\n valueForCell = this.valueService.getValue(column, node);\n }\n valueForCell = this.processCell(node, column, valueForCell, this.processCellCallback, type);\n if (valueForCell === null || valueForCell === undefined) {\n valueForCell = '';\n }\n return this.cellAndHeaderEscaper ? this.cellAndHeaderEscaper(valueForCell) : valueForCell;\n };\n BaseGridSerializingSession.prototype.getHeaderName = function (callback, column) {\n if (callback) {\n return callback({\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n });\n }\n else {\n return this.columnController.getDisplayNameForColumn(column, 'csv', true);\n }\n };\n BaseGridSerializingSession.prototype.createValueForGroupNode = function (node) {\n var keys = [node.key];\n while (node.parent) {\n node = node.parent;\n keys.push(node.key);\n }\n return keys.reverse().join(' -> ');\n };\n BaseGridSerializingSession.prototype.processCell = function (rowNode, column, value, processCellCallback, type) {\n if (processCellCallback) {\n return processCellCallback({\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 }\n else {\n return value;\n }\n };\n return BaseGridSerializingSession;\n}());\nexport { BaseGridSerializingSession };\nvar GridSerializer = /** @class */ (function () {\n function GridSerializer() {\n }\n GridSerializer.prototype.serialize = function (gridSerializingSession, params) {\n var dontSkipRows = function () { return false; };\n var skipGroups = params && params.skipGroups;\n var skipHeader = params && params.skipHeader;\n var columnGroups = params && params.columnGroups;\n var skipFooters = params && params.skipFooters;\n var skipPinnedTop = params && params.skipPinnedTop;\n var skipPinnedBottom = params && params.skipPinnedBottom;\n var includeCustomHeader = params && params.customHeader;\n var includeCustomFooter = params && params.customFooter;\n var allColumns = params && params.allColumns;\n var onlySelected = params && params.onlySelected;\n var columnKeys = params && params.columnKeys;\n var onlySelectedAllPages = params && params.onlySelectedAllPages;\n var processGroupHeaderCallback = params ? params.processGroupHeaderCallback : undefined;\n var rowSkipper = (params && params.shouldRowBeSkipped) || dontSkipRows;\n var api = this.gridOptionsWrapper.getApi();\n var skipSingleChildrenGroup = this.gridOptionsWrapper.isGroupRemoveSingleChildren();\n var skipLowestSingleChildrenGroup = this.gridOptionsWrapper.isGroupRemoveLowestSingleChildren();\n var context = this.gridOptionsWrapper.getContext();\n // when in pivot mode, we always render cols on screen, never 'all columns'\n var isPivotMode = this.columnController.isPivotMode();\n var rowModelNormal = this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n var onlySelectedNonStandardModel = !rowModelNormal && onlySelected;\n var columnsToExport = [];\n if (_.existsAndNotEmpty(columnKeys)) {\n columnsToExport = this.columnController.getGridColumns(columnKeys);\n }\n else if (allColumns && !isPivotMode) {\n // add auto group column for tree data\n columnsToExport = this.gridOptionsWrapper.isTreeData() ?\n this.columnController.getGridColumns([Constants.GROUP_AUTO_COLUMN_ID]) : [];\n columnsToExport = columnsToExport.concat(this.columnController.getAllPrimaryColumns() || []);\n }\n else {\n columnsToExport = this.columnController.getAllDisplayedColumns();\n }\n if (includeCustomHeader) {\n gridSerializingSession.addCustomHeader(includeCustomHeader);\n }\n gridSerializingSession.prepare(columnsToExport);\n // first pass, put in the header names of the cols\n if (columnGroups) {\n var groupInstanceIdCreator = new GroupInstanceIdCreator();\n var displayedGroups = this.displayedGroupCreator.createDisplayedGroups(columnsToExport, this.columnController.getGridBalancedTree(), groupInstanceIdCreator, null);\n this.recursivelyAddHeaderGroups(displayedGroups, gridSerializingSession, processGroupHeaderCallback);\n }\n if (!skipHeader) {\n var gridRowIterator_1 = gridSerializingSession.onNewHeaderRow();\n columnsToExport.forEach(function (column, index) {\n gridRowIterator_1.onColumn(column, index, undefined);\n });\n }\n this.pinnedRowModel.forEachPinnedTopRow(processRow);\n if (isPivotMode) {\n if (this.rowModel.forEachPivotNode) {\n this.rowModel.forEachPivotNode(processRow);\n }\n else {\n //Must be enterprise, so we can just loop through all the nodes\n this.rowModel.forEachNode(processRow);\n }\n }\n else {\n // onlySelectedAllPages: user doing pagination and wants selected items from\n // other pages, so cannot use the standard row model as it won't have rows from\n // other pages.\n // onlySelectedNonStandardModel: if user wants selected in non standard row model\n // (eg viewport) then again rowmodel cannot be used, so need to use selected instead.\n if (onlySelectedAllPages || onlySelectedNonStandardModel) {\n var selectedNodes = this.selectionController.getSelectedNodes();\n selectedNodes.forEach(function (node) {\n processRow(node);\n });\n }\n else {\n // here is everything else - including standard row model and selected. we don't use\n // the selection model even when just using selected, so that the result is the order\n // of the rows appearing on the screen.\n if (rowModelNormal) {\n this.rowModel.forEachNodeAfterFilterAndSort(processRow);\n }\n else {\n this.rowModel.forEachNode(processRow);\n }\n }\n }\n this.pinnedRowModel.forEachPinnedBottomRow(processRow);\n if (includeCustomFooter) {\n gridSerializingSession.addCustomFooter(includeCustomFooter);\n }\n function processRow(node) {\n var shouldSkipLowestGroup = skipLowestSingleChildrenGroup && node.leafGroup;\n var shouldSkipCurrentGroup = node.allChildrenCount === 1 && (skipSingleChildrenGroup || shouldSkipLowestGroup);\n if (node.group && (skipGroups || shouldSkipCurrentGroup)) {\n return;\n }\n if (skipFooters && node.footer) {\n return;\n }\n if (onlySelected && !node.isSelected()) {\n return;\n }\n if (skipPinnedTop && node.rowPinned === 'top') {\n return;\n }\n if (skipPinnedBottom && node.rowPinned === 'bottom') {\n return;\n }\n // if we are in pivotMode, then the grid will show the root node only\n // if it's not a leaf group\n var nodeIsRootNode = node.level === -1;\n if (nodeIsRootNode && !node.leafGroup) {\n return;\n }\n var shouldRowBeSkipped = rowSkipper({\n node: node,\n api: api,\n context: context\n });\n if (shouldRowBeSkipped) {\n return;\n }\n var rowAccumulator = gridSerializingSession.onNewBodyRow();\n columnsToExport.forEach(function (column, index) {\n rowAccumulator.onColumn(column, index, node);\n });\n }\n return gridSerializingSession.parse();\n };\n GridSerializer.prototype.recursivelyAddHeaderGroups = function (displayedGroups, gridSerializingSession, processGroupHeaderCallback) {\n var directChildrenHeaderGroups = [];\n displayedGroups.forEach(function (columnGroupChild) {\n var columnGroup = columnGroupChild;\n if (!columnGroup.getChildren) {\n return;\n }\n columnGroup.getChildren().forEach(function (it) { return directChildrenHeaderGroups.push(it); });\n });\n if (displayedGroups.length > 0 && displayedGroups[0] instanceof ColumnGroup) {\n this.doAddHeaderHeader(gridSerializingSession, displayedGroups, processGroupHeaderCallback);\n }\n if (directChildrenHeaderGroups && directChildrenHeaderGroups.length > 0) {\n this.recursivelyAddHeaderGroups(directChildrenHeaderGroups, gridSerializingSession, processGroupHeaderCallback);\n }\n };\n GridSerializer.prototype.doAddHeaderHeader = function (gridSerializingSession, displayedGroups, processGroupHeaderCallback) {\n var _this = this;\n var gridRowIterator = gridSerializingSession.onNewHeaderGroupingRow();\n var columnIndex = 0;\n displayedGroups.forEach(function (columnGroupChild) {\n var columnGroup = columnGroupChild;\n var name;\n if (processGroupHeaderCallback) {\n name = processGroupHeaderCallback({\n columnGroup: columnGroup,\n api: _this.gridOptionsWrapper.getApi(),\n columnApi: _this.gridOptionsWrapper.getColumnApi(),\n context: _this.gridOptionsWrapper.getContext()\n });\n }\n else {\n name = _this.columnController.getDisplayNameForColumnGroup(columnGroup, 'header');\n }\n gridRowIterator.onColumn(name || '', columnIndex++, columnGroup.getLeafColumns().length - 1);\n });\n };\n __decorate([\n Autowired('displayedGroupCreator')\n ], GridSerializer.prototype, \"displayedGroupCreator\", void 0);\n __decorate([\n Autowired('columnController')\n ], GridSerializer.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('rowModel')\n ], GridSerializer.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], GridSerializer.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired('selectionController')\n ], GridSerializer.prototype, \"selectionController\", void 0);\n __decorate([\n Autowired('columnFactory')\n ], GridSerializer.prototype, \"columnFactory\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], GridSerializer.prototype, \"gridOptionsWrapper\", void 0);\n GridSerializer = __decorate([\n Bean(\"gridSerializer\")\n ], GridSerializer);\n return GridSerializer;\n}());\nexport { GridSerializer };\nexport var RowType;\n(function (RowType) {\n RowType[RowType[\"HEADER_GROUPING\"] = 0] = \"HEADER_GROUPING\";\n RowType[RowType[\"HEADER\"] = 1] = \"HEADER\";\n RowType[RowType[\"BODY\"] = 2] = \"BODY\";\n})(RowType || (RowType = {}));\n","var __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};\nimport { Autowired, PostConstruct, RowNodeBlock, _ } from \"@ag-grid-community/core\";\nvar InfiniteBlock = /** @class */ (function (_super) {\n __extends(InfiniteBlock, _super);\n function InfiniteBlock(pageNumber, params) {\n var _this = _super.call(this, pageNumber, params) || this;\n _this.cacheParams = params;\n return _this;\n }\n InfiniteBlock.prototype.createBlankRowNode = function (rowIndex) {\n var rowNode = _super.prototype.createBlankRowNode.call(this, rowIndex);\n rowNode.uiLevel = 0;\n this.setIndexAndTopOnRowNode(rowNode, rowIndex);\n return rowNode;\n };\n InfiniteBlock.prototype.setDataAndId = function (rowNode, data, index) {\n if (_.exists(data)) {\n // this means if the user is not providing id's we just use the\n // index for the row. this will allow selection to work (that is based\n // on index) as long user is not inserting or deleting rows,\n // or wanting to keep selection between server side sorting or filtering\n rowNode.setDataAndId(data, index.toString());\n }\n else {\n rowNode.setDataAndId(undefined, undefined);\n }\n };\n InfiniteBlock.prototype.setRowNode = function (rowIndex, rowNode) {\n _super.prototype.setRowNode.call(this, rowIndex, rowNode);\n this.setIndexAndTopOnRowNode(rowNode, rowIndex);\n };\n InfiniteBlock.prototype.init = function () {\n _super.prototype.init.call(this, {\n context: this.getContext(),\n rowRenderer: this.rowRenderer\n });\n };\n InfiniteBlock.prototype.getNodeIdPrefix = function () {\n return null;\n };\n InfiniteBlock.prototype.getRow = function (displayIndex) {\n return this.getRowUsingLocalIndex(displayIndex);\n };\n InfiniteBlock.prototype.setIndexAndTopOnRowNode = function (rowNode, rowIndex) {\n rowNode.setRowIndex(rowIndex);\n rowNode.rowTop = this.cacheParams.rowHeight * rowIndex;\n };\n InfiniteBlock.prototype.loadFromDatasource = function () {\n var _this = this;\n // PROBLEM . . . . when the user sets sort via colDef.sort, then this code\n // is executing before the sort is set up, so server is not getting the sort\n // model. need to change with regards order - so the server side request is\n // AFTER thus it gets the right sort model.\n var params = {\n startRow: this.getStartRow(),\n endRow: this.getEndRow(),\n successCallback: this.pageLoaded.bind(this, this.getVersion()),\n failCallback: this.pageLoadFailed.bind(this),\n sortModel: this.cacheParams.sortModel,\n filterModel: this.cacheParams.filterModel,\n context: this.gridOptionsWrapper.getContext()\n };\n if (_.missing(this.cacheParams.datasource.getRows)) {\n console.warn(\"ag-Grid: datasource is missing getRows method\");\n return;\n }\n // check if old version of datasource used\n var getRowsParams = _.getFunctionParameters(this.cacheParams.datasource.getRows);\n if (getRowsParams.length > 1) {\n console.warn('ag-grid: It looks like your paging datasource is of the old type, taking more than one parameter.');\n console.warn('ag-grid: From ag-grid 1.9.0, now the getRows takes one parameter. See the documentation for details.');\n }\n // put in timeout, to force result to be async\n window.setTimeout(function () {\n _this.cacheParams.datasource.getRows(params);\n }, 0);\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], InfiniteBlock.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], InfiniteBlock.prototype, \"rowRenderer\", void 0);\n __decorate([\n PostConstruct\n ], InfiniteBlock.prototype, \"init\", null);\n return InfiniteBlock;\n}(RowNodeBlock));\nexport { InfiniteBlock };\n","var __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};\nimport { Autowired, Events, PostConstruct, Qualifier, RowNodeCache, } from \"@ag-grid-community/core\";\nimport { InfiniteBlock } from \"./infiniteBlock\";\nvar InfiniteCache = /** @class */ (function (_super) {\n __extends(InfiniteCache, _super);\n function InfiniteCache(params) {\n return _super.call(this, params) || this;\n }\n InfiniteCache.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('InfiniteCache');\n };\n InfiniteCache.prototype.init = function () {\n _super.prototype.init.call(this);\n // start load of data, as the virtualRowCount will remain at 0 otherwise,\n // so we need this to kick things off, otherwise grid would never call getRow()\n this.getRow(0);\n };\n InfiniteCache.prototype.moveItemsDown = function (block, moveFromIndex, moveCount) {\n var startRow = block.getStartRow();\n var endRow = block.getEndRow();\n var indexOfLastRowToMove = moveFromIndex + moveCount;\n // all rows need to be moved down below the insertion index\n for (var currentRowIndex = endRow - 1; currentRowIndex >= startRow; currentRowIndex--) {\n // don't move rows at or before the insertion index\n if (currentRowIndex < indexOfLastRowToMove) {\n continue;\n }\n var indexOfNodeWeWant = currentRowIndex - moveCount;\n var nodeForThisIndex = this.getRow(indexOfNodeWeWant, true);\n if (nodeForThisIndex) {\n block.setRowNode(currentRowIndex, nodeForThisIndex);\n }\n else {\n block.setBlankRowNode(currentRowIndex);\n block.setDirty();\n }\n }\n };\n InfiniteCache.prototype.insertItems = function (block, indexToInsert, items) {\n var pageStartRow = block.getStartRow();\n var pageEndRow = block.getEndRow();\n var newRowNodes = [];\n // next stage is insert the rows into this page, if applicable\n for (var index = 0; index < items.length; index++) {\n var rowIndex = indexToInsert + index;\n var currentRowInThisPage = rowIndex >= pageStartRow && rowIndex < pageEndRow;\n if (currentRowInThisPage) {\n var dataItem = items[index];\n var newRowNode = block.setNewData(rowIndex, dataItem);\n newRowNodes.push(newRowNode);\n }\n }\n return newRowNodes;\n };\n InfiniteCache.prototype.insertItemsAtIndex = function (indexToInsert, items) {\n // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order\n var _this = this;\n var newNodes = [];\n this.forEachBlockInReverseOrder(function (block) {\n var pageEndRow = block.getEndRow();\n // if the insertion is after this page, then this page is not impacted\n if (pageEndRow <= indexToInsert) {\n return;\n }\n _this.moveItemsDown(block, indexToInsert, items.length);\n var newNodesThisPage = _this.insertItems(block, indexToInsert, items);\n newNodesThisPage.forEach(function (rowNode) { return newNodes.push(rowNode); });\n });\n if (this.isMaxRowFound()) {\n this.hack_setVirtualRowCount(this.getVirtualRowCount() + items.length);\n }\n this.onCacheUpdated();\n var event = {\n type: Events.EVENT_ROW_DATA_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n // the rowRenderer will not pass dontCreatePage, meaning when rendering the grid,\n // it will want new pages in the cache as it asks for rows. only when we are inserting /\n // removing rows via the api is dontCreatePage set, where we move rows between the pages.\n InfiniteCache.prototype.getRow = function (rowIndex, dontCreatePage) {\n if (dontCreatePage === void 0) { dontCreatePage = false; }\n var blockId = Math.floor(rowIndex / this.cacheParams.blockSize);\n var block = this.getBlock(blockId);\n if (!block) {\n if (dontCreatePage) {\n return null;\n }\n else {\n block = this.createBlock(blockId);\n }\n }\n return block.getRow(rowIndex);\n };\n InfiniteCache.prototype.createBlock = function (blockNumber) {\n var newBlock = new InfiniteBlock(blockNumber, this.cacheParams);\n this.getContext().wireBean(newBlock);\n this.postCreateBlock(newBlock);\n return newBlock;\n };\n // we have this on infinite row model only, not server side row model,\n // because for server side, it would leave the children in inconsistent\n // state - eg if a node had children, but after the refresh it had data\n // for a different row, then the children would be with the wrong row node.\n InfiniteCache.prototype.refreshCache = function () {\n this.forEachBlockInOrder(function (block) { return block.setDirty(); });\n this.checkBlockToLoad();\n };\n __decorate([\n Autowired('eventService')\n ], InfiniteCache.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], InfiniteCache.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], InfiniteCache.prototype, \"gridApi\", void 0);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], InfiniteCache.prototype, \"setBeans\", null);\n __decorate([\n PostConstruct\n ], InfiniteCache.prototype, \"init\", null);\n return InfiniteCache;\n}(RowNodeCache));\nexport { InfiniteCache };\n","var __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};\nimport { _, Autowired, Bean, BeanStub, Constants, Events, NumberSequence, PostConstruct, PreDestroy, RowNodeBlockLoader, RowNodeCache } from \"@ag-grid-community/core\";\nimport { InfiniteCache } from \"./infiniteCache\";\nvar InfiniteRowModel = /** @class */ (function (_super) {\n __extends(InfiniteRowModel, _super);\n function InfiniteRowModel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InfiniteRowModel.prototype.getRowBounds = function (index) {\n return {\n rowHeight: this.rowHeight,\n rowTop: this.rowHeight * index\n };\n };\n // we don't implement as lazy row heights is not supported in this row model\n InfiniteRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n return false;\n };\n InfiniteRowModel.prototype.init = function () {\n var _this = this;\n if (!this.gridOptionsWrapper.isRowModelInfinite()) {\n return;\n }\n this.rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n this.addEventListeners();\n this.addDestroyFunc(function () { return _this.destroyCache(); });\n };\n InfiniteRowModel.prototype.start = function () {\n this.setDatasource(this.gridOptionsWrapper.getDatasource());\n };\n InfiniteRowModel.prototype.destroyDatasource = function () {\n if (this.datasource) {\n if (this.datasource.destroy) {\n this.datasource.destroy();\n }\n this.rowRenderer.datasourceChanged();\n this.datasource = null;\n }\n };\n InfiniteRowModel.prototype.isLastRowFound = function () {\n return this.infiniteCache ? this.infiniteCache.isMaxRowFound() : false;\n };\n InfiniteRowModel.prototype.addEventListeners = function () {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.onColumnEverything.bind(this));\n };\n InfiniteRowModel.prototype.onFilterChanged = function () {\n this.reset();\n };\n InfiniteRowModel.prototype.onSortChanged = function () {\n this.reset();\n };\n InfiniteRowModel.prototype.onColumnEverything = function () {\n var resetRequired;\n // if cache params, we require reset only if sort model has changed. we don't need to check\n // for filter model, as the filter manager will fire an event when columns change that result\n // in the filter changing.\n if (this.cacheParams) {\n resetRequired = this.isSortModelDifferent();\n }\n else {\n // if no cacheParams, means first time creating the cache, so always create one\n resetRequired = true;\n }\n if (resetRequired) {\n this.reset();\n }\n };\n InfiniteRowModel.prototype.isSortModelDifferent = function () {\n return !_.jsonEquals(this.cacheParams.sortModel, this.sortController.getSortModel());\n };\n InfiniteRowModel.prototype.getType = function () {\n return Constants.ROW_MODEL_TYPE_INFINITE;\n };\n InfiniteRowModel.prototype.setDatasource = function (datasource) {\n this.destroyDatasource();\n this.datasource = datasource;\n // only reset if we have a valid datasource to working with\n if (datasource) {\n this.checkForDeprecated();\n this.reset();\n }\n };\n InfiniteRowModel.prototype.checkForDeprecated = function () {\n var ds = this.datasource;\n // the number of concurrent loads we are allowed to the server\n if (_.exists(ds.maxConcurrentRequests)) {\n console.error('ag-Grid: since version 5.1.x, maxConcurrentRequests is replaced with grid property maxConcurrentDatasourceRequests');\n }\n if (_.exists(ds.maxPagesInCache)) {\n console.error('ag-Grid: since version 5.1.x, maxPagesInCache is replaced with grid property maxPagesInPaginationCache');\n }\n if (_.exists(ds.overflowSize)) {\n console.error('ag-Grid: since version 5.1.x, overflowSize is replaced with grid property paginationOverflowSize');\n }\n if (_.exists(ds.blockSize)) {\n console.error('ag-Grid: since version 5.1.x, pageSize/blockSize is replaced with grid property infinitePageSize');\n }\n };\n InfiniteRowModel.prototype.isEmpty = function () {\n return _.missing(this.infiniteCache);\n };\n InfiniteRowModel.prototype.isRowsToRender = function () {\n return _.exists(this.infiniteCache);\n };\n InfiniteRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n return this.infiniteCache ? this.infiniteCache.getRowNodesInRange(firstInRange, lastInRange) : [];\n };\n InfiniteRowModel.prototype.reset = function () {\n // important to return here, as the user could be setting filter or sort before\n // data-source is set\n if (_.missing(this.datasource)) {\n return;\n }\n // if user is providing id's, then this means we can keep the selection between datasource hits,\n // as the rows will keep their unique id's even if, for example, server side sorting or filtering\n // is done.\n var userGeneratingIds = _.exists(this.gridOptionsWrapper.getRowNodeIdFunc());\n if (!userGeneratingIds) {\n this.selectionController.reset();\n }\n this.resetCache();\n var event = this.createModelUpdatedEvent();\n this.eventService.dispatchEvent(event);\n };\n InfiniteRowModel.prototype.createModelUpdatedEvent = function () {\n return {\n type: Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n // not sure if these should all be false - noticed if after implementing,\n // maybe they should be true?\n newPage: false,\n newData: false,\n keepRenderedRows: false,\n animate: false\n };\n };\n InfiniteRowModel.prototype.resetCache = function () {\n // if not first time creating a cache, need to destroy the old one\n this.destroyCache();\n var maxConcurrentRequests = this.gridOptionsWrapper.getMaxConcurrentDatasourceRequests();\n var blockLoadDebounceMillis = this.gridOptionsWrapper.getBlockLoadDebounceMillis();\n // there is a bi-directional dependency between the loader and the cache,\n // so we create loader here, and then pass dependencies in setDependencies() method later\n this.rowNodeBlockLoader = new RowNodeBlockLoader(maxConcurrentRequests, blockLoadDebounceMillis);\n this.getContext().wireBean(this.rowNodeBlockLoader);\n this.cacheParams = {\n // the user provided datasource\n datasource: this.datasource,\n // sort and filter model\n filterModel: this.filterManager.getFilterModel(),\n sortModel: this.sortController.getSortModel(),\n rowNodeBlockLoader: this.rowNodeBlockLoader,\n // properties - this way we take a snapshot of them, so if user changes any, they will be\n // used next time we create a new cache, which is generally after a filter or sort change,\n // or a new datasource is set\n maxConcurrentRequests: maxConcurrentRequests,\n overflowSize: this.gridOptionsWrapper.getCacheOverflowSize(),\n initialRowCount: this.gridOptionsWrapper.getInfiniteInitialRowCount(),\n maxBlocksInCache: this.gridOptionsWrapper.getMaxBlocksInCache(),\n blockSize: this.gridOptionsWrapper.getCacheBlockSize(),\n rowHeight: this.gridOptionsWrapper.getRowHeightAsNumber(),\n // the cache could create this, however it is also used by the pages, so handy to create it\n // here as the settings are also passed to the pages\n lastAccessedSequence: new NumberSequence()\n };\n // set defaults\n if (!this.cacheParams.maxConcurrentRequests || !(this.cacheParams.maxConcurrentRequests >= 1)) {\n this.cacheParams.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 (!this.cacheParams.blockSize || !(this.cacheParams.blockSize >= 1)) {\n this.cacheParams.blockSize = 100;\n }\n // if user doesn't give initial rows to display, we assume zero\n if (!(this.cacheParams.initialRowCount >= 1)) {\n this.cacheParams.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 (!(this.cacheParams.overflowSize >= 1)) {\n this.cacheParams.overflowSize = 1;\n }\n this.infiniteCache = new InfiniteCache(this.cacheParams);\n this.getContext().wireBean(this.infiniteCache);\n this.infiniteCache.addEventListener(RowNodeCache.EVENT_CACHE_UPDATED, this.onCacheUpdated.bind(this));\n };\n InfiniteRowModel.prototype.destroyCache = function () {\n if (this.infiniteCache) {\n this.infiniteCache.destroy();\n this.infiniteCache = null;\n }\n if (this.rowNodeBlockLoader) {\n this.rowNodeBlockLoader.destroy();\n this.rowNodeBlockLoader = null;\n }\n };\n InfiniteRowModel.prototype.onCacheUpdated = function () {\n var event = this.createModelUpdatedEvent();\n this.eventService.dispatchEvent(event);\n };\n InfiniteRowModel.prototype.getRow = function (rowIndex) {\n return this.infiniteCache ? this.infiniteCache.getRow(rowIndex) : null;\n };\n InfiniteRowModel.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 InfiniteRowModel.prototype.forEachNode = function (callback) {\n if (this.infiniteCache) {\n this.infiniteCache.forEachNodeDeep(callback, new NumberSequence());\n }\n };\n InfiniteRowModel.prototype.getCurrentPageHeight = function () {\n return this.getRowCount() * this.rowHeight;\n };\n InfiniteRowModel.prototype.getTopLevelRowCount = function () {\n return this.getRowCount();\n };\n InfiniteRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n return topLevelIndex;\n };\n InfiniteRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n if (this.rowHeight !== 0) { // avoid divide by zero error\n var rowIndexForPixel = Math.floor(pixel / this.rowHeight);\n var lastRowIndex = this.getRowCount() - 1;\n if (rowIndexForPixel > lastRowIndex) {\n return lastRowIndex;\n }\n else {\n return rowIndexForPixel;\n }\n }\n else {\n return 0;\n }\n };\n InfiniteRowModel.prototype.getRowCount = function () {\n return this.infiniteCache ? this.infiniteCache.getVirtualRowCount() : 0;\n };\n InfiniteRowModel.prototype.updateRowData = function (transaction) {\n if (_.exists(transaction.remove) || _.exists(transaction.update)) {\n console.warn('ag-Grid: updateRowData for InfiniteRowModel does not support remove or update, only add');\n return;\n }\n if (_.missing(transaction.addIndex)) {\n console.warn('ag-Grid: updateRowData for InfiniteRowModel requires add and addIndex to be set');\n return;\n }\n if (this.infiniteCache) {\n this.infiniteCache.insertItemsAtIndex(transaction.addIndex, transaction.add);\n }\n };\n InfiniteRowModel.prototype.isRowPresent = function (rowNode) {\n return false;\n };\n InfiniteRowModel.prototype.refreshCache = function () {\n if (this.infiniteCache) {\n this.infiniteCache.refreshCache();\n }\n };\n InfiniteRowModel.prototype.purgeCache = function () {\n if (this.infiniteCache) {\n this.infiniteCache.purgeCache();\n }\n };\n InfiniteRowModel.prototype.getVirtualRowCount = function () {\n if (this.infiniteCache) {\n return this.infiniteCache.getVirtualRowCount();\n }\n else {\n return null;\n }\n };\n InfiniteRowModel.prototype.isMaxRowFound = function () {\n if (this.infiniteCache) {\n return this.infiniteCache.isMaxRowFound();\n }\n };\n InfiniteRowModel.prototype.setVirtualRowCount = function (rowCount, maxRowFound) {\n if (this.infiniteCache) {\n this.infiniteCache.setVirtualRowCount(rowCount, maxRowFound);\n }\n };\n InfiniteRowModel.prototype.getBlockState = function () {\n if (this.rowNodeBlockLoader) {\n return this.rowNodeBlockLoader.getBlockState();\n }\n else {\n return null;\n }\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], InfiniteRowModel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('filterManager')\n ], InfiniteRowModel.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('sortController')\n ], InfiniteRowModel.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('selectionController')\n ], InfiniteRowModel.prototype, \"selectionController\", void 0);\n __decorate([\n Autowired('eventService')\n ], InfiniteRowModel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], InfiniteRowModel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], InfiniteRowModel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], InfiniteRowModel.prototype, \"rowRenderer\", void 0);\n __decorate([\n PostConstruct\n ], InfiniteRowModel.prototype, \"init\", null);\n __decorate([\n PreDestroy\n ], InfiniteRowModel.prototype, \"destroyDatasource\", null);\n InfiniteRowModel = __decorate([\n Bean('rowModel')\n ], InfiniteRowModel);\n return InfiniteRowModel;\n}(BeanStub));\nexport { InfiniteRowModel };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { InfiniteRowModel } from \"./infiniteRowModel/infiniteRowModel\";\nexport var InfiniteRowModelModule = {\n moduleName: ModuleNames.InfiniteRowModelModule,\n rowModels: { 'infinite': InfiniteRowModel }\n};\n","var __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};\nimport { _, Autowired, Bean, Constants, PostConstruct } from \"@ag-grid-community/core\";\nimport { BaseGridSerializingSession } from \"./gridSerializer\";\nvar LINE_SEPARATOR = '\\r\\n';\nvar CsvSerializingSession = /** @class */ (function (_super) {\n __extends(CsvSerializingSession, _super);\n function CsvSerializingSession(config) {\n var _this = _super.call(this, {\n columnController: config.columnController,\n valueService: config.valueService,\n gridOptionsWrapper: config.gridOptionsWrapper,\n processCellCallback: config.processCellCallback,\n processHeaderCallback: config.processHeaderCallback\n }) || this;\n _this.result = '';\n _this.lineOpened = false;\n var suppressQuotes = config.suppressQuotes, columnSeparator = config.columnSeparator;\n _this.suppressQuotes = suppressQuotes;\n _this.columnSeparator = columnSeparator;\n return _this;\n }\n CsvSerializingSession.prototype.prepare = function (columnsToExport) {\n };\n CsvSerializingSession.prototype.addCustomHeader = function (customHeader) {\n if (!customHeader) {\n return;\n }\n this.result += customHeader + LINE_SEPARATOR;\n };\n CsvSerializingSession.prototype.addCustomFooter = function (customFooter) {\n if (!customFooter) {\n return;\n }\n this.result += customFooter + LINE_SEPARATOR;\n };\n CsvSerializingSession.prototype.onNewHeaderGroupingRow = function () {\n if (this.lineOpened) {\n this.result += LINE_SEPARATOR;\n }\n return {\n onColumn: this.onNewHeaderGroupingRowColumn.bind(this)\n };\n };\n CsvSerializingSession.prototype.onNewHeaderGroupingRowColumn = function (header, index, span) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(header, this.suppressQuotes);\n for (var i = 1; i <= span; i++) {\n this.result += this.columnSeparator + this.putInQuotes(\"\", this.suppressQuotes);\n }\n this.lineOpened = true;\n };\n CsvSerializingSession.prototype.onNewHeaderRow = function () {\n if (this.lineOpened) {\n this.result += LINE_SEPARATOR;\n }\n return {\n onColumn: this.onNewHeaderRowColumn.bind(this)\n };\n };\n CsvSerializingSession.prototype.onNewHeaderRowColumn = function (column, index, node) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(this.extractHeaderValue(column), this.suppressQuotes);\n this.lineOpened = true;\n };\n CsvSerializingSession.prototype.onNewBodyRow = function () {\n if (this.lineOpened) {\n this.result += LINE_SEPARATOR;\n }\n return {\n onColumn: this.onNewBodyRowColumn.bind(this)\n };\n };\n CsvSerializingSession.prototype.onNewBodyRowColumn = function (column, index, node) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(this.extractRowCellValue(column, index, Constants.EXPORT_TYPE_CSV, node), this.suppressQuotes);\n this.lineOpened = true;\n };\n CsvSerializingSession.prototype.putInQuotes = function (value, suppressQuotes) {\n if (suppressQuotes) {\n return value;\n }\n if (value === null || value === undefined) {\n return '\"\"';\n }\n var stringValue;\n if (typeof value === 'string') {\n stringValue = value;\n }\n else if (typeof value.toString === 'function') {\n stringValue = value.toString();\n }\n else {\n console.warn('unknown value type during csv conversion');\n stringValue = '';\n }\n // replace each \" with \"\" (ie two sets of double quotes is how to do double quotes in csv)\n var valueEscaped = stringValue.replace(/\"/g, \"\\\"\\\"\");\n return '\"' + valueEscaped + '\"';\n };\n CsvSerializingSession.prototype.parse = function () {\n return this.result;\n };\n return CsvSerializingSession;\n}(BaseGridSerializingSession));\nexport { CsvSerializingSession };\nvar BaseCreator = /** @class */ (function () {\n function BaseCreator() {\n }\n BaseCreator.prototype.setBeans = function (beans) {\n this.beans = beans;\n };\n BaseCreator.prototype.export = function (userParams) {\n if (this.isExportSuppressed()) {\n console.warn(\"ag-grid: Export cancelled. Export is not allowed as per your configuration.\");\n return '';\n }\n var _a = this.getMergedParamsAndData(userParams), mergedParams = _a.mergedParams, data = _a.data;\n var fileNamePresent = mergedParams && mergedParams.fileName && mergedParams.fileName.length !== 0;\n var fileName = fileNamePresent ? mergedParams.fileName : this.getDefaultFileName();\n if (fileName.indexOf(\".\") === -1) {\n fileName = fileName + \".\" + this.getDefaultFileExtension();\n }\n this.beans.downloader.download(fileName, this.packageFile(data));\n return data;\n };\n BaseCreator.prototype.getData = function (params) {\n return this.getMergedParamsAndData(params).data;\n };\n BaseCreator.prototype.getMergedParamsAndData = function (userParams) {\n var mergedParams = this.mergeDefaultParams(userParams);\n var data = this.beans.gridSerializer.serialize(this.createSerializingSession(mergedParams), mergedParams);\n return { mergedParams: mergedParams, data: data };\n };\n BaseCreator.prototype.mergeDefaultParams = function (userParams) {\n var baseParams = this.beans.gridOptionsWrapper.getDefaultExportParams();\n var params = {};\n _.assign(params, baseParams);\n _.assign(params, userParams);\n return params;\n };\n BaseCreator.prototype.packageFile = function (data) {\n return new Blob([\"\\ufeff\", data], {\n type: window.navigator.msSaveOrOpenBlob ? this.getMimeType() : 'octet/stream'\n });\n };\n return BaseCreator;\n}());\nexport { BaseCreator };\nvar CsvCreator = /** @class */ (function (_super) {\n __extends(CsvCreator, _super);\n function CsvCreator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CsvCreator.prototype.postConstruct = function () {\n this.setBeans({\n downloader: this.downloader,\n gridSerializer: this.gridSerializer,\n gridOptionsWrapper: this.gridOptionsWrapper\n });\n };\n CsvCreator.prototype.exportDataAsCsv = function (params) {\n return this.export(params);\n };\n CsvCreator.prototype.getDataAsCsv = function (params) {\n return this.getData(params);\n };\n CsvCreator.prototype.getMimeType = function () {\n return 'text/csv;charset=utf-8;';\n };\n CsvCreator.prototype.getDefaultFileName = function () {\n return 'export.csv';\n };\n CsvCreator.prototype.getDefaultFileExtension = function () {\n return 'csv';\n };\n CsvCreator.prototype.createSerializingSession = function (params) {\n var _a = this, columnController = _a.columnController, valueService = _a.valueService, gridOptionsWrapper = _a.gridOptionsWrapper;\n var processCellCallback = params.processCellCallback, processHeaderCallback = params.processHeaderCallback, processGroupHeaderCallback = params.processGroupHeaderCallback, suppressQuotes = params.suppressQuotes, columnSeparator = params.columnSeparator;\n return new CsvSerializingSession({\n columnController: columnController,\n valueService: valueService,\n gridOptionsWrapper: gridOptionsWrapper,\n processCellCallback: processCellCallback || undefined,\n processHeaderCallback: processHeaderCallback || undefined,\n processGroupHeaderCallback: processGroupHeaderCallback || undefined,\n suppressQuotes: suppressQuotes || false,\n columnSeparator: columnSeparator || ','\n });\n };\n CsvCreator.prototype.isExportSuppressed = function () {\n return this.gridOptionsWrapper.isSuppressCsvExport();\n };\n __decorate([\n Autowired('columnController')\n ], CsvCreator.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('valueService')\n ], CsvCreator.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('downloader')\n ], CsvCreator.prototype, \"downloader\", void 0);\n __decorate([\n Autowired('gridSerializer')\n ], CsvCreator.prototype, \"gridSerializer\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], CsvCreator.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], CsvCreator.prototype, \"postConstruct\", null);\n CsvCreator = __decorate([\n Bean('csvCreator')\n ], CsvCreator);\n return CsvCreator;\n}(BaseCreator));\nexport { CsvCreator };\n","var __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};\nimport { _, Autowired, Component, Events, PostConstruct, PreConstruct, RefSelector, Constants } from \"@ag-grid-community/core\";\nexport var 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 || (EXPAND_STATE = {}));\nexport var 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 || (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 this.createCheckIcons();\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, 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 = _.createIconNoSpan('columnSelectOpen', this.gridOptionsWrapper));\n this.eExpand.appendChild(this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsWrapper));\n this.eExpand.appendChild(this.eExpandIndeterminate = _.createIconNoSpan('columnSelectIndeterminate', this.gridOptionsWrapper));\n };\n PrimaryColsHeaderPanel.prototype.createCheckIcons = function () {\n this.eSelect.appendChild(this.eSelectChecked = _.createIconNoSpan('checkboxChecked', this.gridOptionsWrapper));\n this.eSelect.appendChild(this.eSelectUnchecked = _.createIconNoSpan('checkboxUnchecked', this.gridOptionsWrapper));\n this.eSelect.appendChild(this.eSelectIndeterminate = _.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 _.setDisplayed(this.eFilterWrapper, showFilter);\n _.setDisplayed(this.eSelect, showSelect);\n _.setDisplayed(this.eExpand, showExpand && groupsPresent);\n };\n PrimaryColsHeaderPanel.prototype.onFilterTextChanged = function () {\n var _this = this;\n if (!this.onFilterTextChangedDebounced) {\n this.onFilterTextChangedDebounced = _.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 (_.isKeyPressed(e, 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 _.setDisplayed(this.eExpandChecked, this.expandState === EXPAND_STATE.EXPANDED);\n _.setDisplayed(this.eExpandUnchecked, this.expandState === EXPAND_STATE.COLLAPSED);\n _.setDisplayed(this.eExpandIndeterminate, this.expandState === EXPAND_STATE.INDETERMINATE);\n };\n PrimaryColsHeaderPanel.prototype.setSelectionState = function (state) {\n this.selectState = state;\n _.setDisplayed(this.eSelectChecked, this.selectState === SELECTED_STATE.CHECKED);\n _.setDisplayed(this.eSelectUnchecked, this.selectState === SELECTED_STATE.UNCHECKED);\n _.setDisplayed(this.eSelectIndeterminate, this.selectState === SELECTED_STATE.INDETERMINATE);\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], PrimaryColsHeaderPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], PrimaryColsHeaderPanel.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], PrimaryColsHeaderPanel.prototype, \"eventService\", void 0);\n __decorate([\n RefSelector('eExpand')\n ], PrimaryColsHeaderPanel.prototype, \"eExpand\", void 0);\n __decorate([\n RefSelector('eSelect')\n ], PrimaryColsHeaderPanel.prototype, \"eSelect\", void 0);\n __decorate([\n RefSelector('eFilterWrapper')\n ], PrimaryColsHeaderPanel.prototype, \"eFilterWrapper\", void 0);\n __decorate([\n RefSelector('eFilterTextField')\n ], PrimaryColsHeaderPanel.prototype, \"eFilterTextField\", void 0);\n __decorate([\n PreConstruct\n ], PrimaryColsHeaderPanel.prototype, \"preConstruct\", null);\n __decorate([\n PostConstruct\n ], PrimaryColsHeaderPanel.prototype, \"postConstruct\", null);\n return PrimaryColsHeaderPanel;\n}(Component));\nexport { PrimaryColsHeaderPanel };\n","var __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};\nimport { Bean } from \"@ag-grid-community/core\";\nvar Downloader = /** @class */ (function () {\n function Downloader() {\n }\n Downloader.prototype.download = function (fileName, content) {\n // Internet Explorer\n if (window.navigator.msSaveOrOpenBlob) {\n window.navigator.msSaveOrOpenBlob(content, fileName);\n }\n else {\n // Other Browsers\n var element = document.createElement(\"a\");\n var url_1 = window.URL.createObjectURL(content);\n element.setAttribute(\"href\", url_1);\n element.setAttribute(\"download\", fileName);\n element.style.display = \"none\";\n document.body.appendChild(element);\n element.dispatchEvent(new MouseEvent('click', {\n bubbles: false,\n cancelable: true,\n view: window\n }));\n document.body.removeChild(element);\n window.setTimeout(function () {\n window.URL.revokeObjectURL(url_1);\n }, 0);\n }\n };\n Downloader = __decorate([\n Bean(\"downloader\")\n ], Downloader);\n return Downloader;\n}());\nexport { Downloader };\n","var __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};\nimport { Bean } from \"@ag-grid-community/core\";\nvar LINE_SEPARATOR = '\\r\\n';\nvar XmlFactory = /** @class */ (function () {\n function XmlFactory() {\n }\n XmlFactory.prototype.createHeader = function (headerElement) {\n if (headerElement === void 0) { headerElement = {}; }\n var headerStart = '';\n var keys = ['version'];\n if (!headerElement.version) {\n headerElement.version = \"1.0\";\n }\n if (headerElement.encoding) {\n keys.push('encoding');\n }\n if (headerElement.standalone) {\n keys.push('standalone');\n }\n var att = keys.map(function (key) { return key + \"=\\\"\" + headerElement[key] + \"\\\"\"; }).join(' ');\n return headerStart + \"xml \" + att + \" \" + headerEnd;\n };\n XmlFactory.prototype.createXml = function (xmlElement, booleanTransformer) {\n var _this = this;\n var props = '';\n if (xmlElement.properties) {\n if (xmlElement.properties.prefixedAttributes) {\n xmlElement.properties.prefixedAttributes.forEach(function (prefixedSet) {\n Object.keys(prefixedSet.map).forEach(function (key) {\n props += _this.returnAttributeIfPopulated(prefixedSet.prefix + key, prefixedSet.map[key], booleanTransformer);\n });\n });\n }\n if (xmlElement.properties.rawMap) {\n Object.keys(xmlElement.properties.rawMap).forEach(function (key) {\n props += _this.returnAttributeIfPopulated(key, xmlElement.properties.rawMap[key], booleanTransformer);\n });\n }\n }\n var result = '<' + xmlElement.name + props;\n if (!xmlElement.children && xmlElement.textNode == null) {\n return result + '/>' + LINE_SEPARATOR;\n }\n if (xmlElement.textNode != null) {\n return result + '>' + xmlElement.textNode + '' + LINE_SEPARATOR;\n }\n result += '>' + LINE_SEPARATOR;\n if (xmlElement.children) {\n xmlElement.children.forEach(function (it) {\n result += _this.createXml(it, booleanTransformer);\n });\n }\n return result + '' + LINE_SEPARATOR;\n };\n XmlFactory.prototype.returnAttributeIfPopulated = function (key, value, booleanTransformer) {\n if (!value && value !== '' && value !== 0) {\n return '';\n }\n var xmlValue = value;\n if ((typeof (value) === 'boolean')) {\n if (booleanTransformer) {\n xmlValue = booleanTransformer(value);\n }\n }\n return \" \" + key + \"=\\\"\" + xmlValue + \"\\\"\";\n };\n XmlFactory = __decorate([\n Bean('xmlFactory')\n ], XmlFactory);\n return XmlFactory;\n}());\nexport { XmlFactory };\n","var __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};\nimport { Bean, _ } from \"@ag-grid-community/core\";\n// table for crc calculation\n// from: https://referencesource.microsoft.com/#System/sys/System/IO/compression/Crc32Helper.cs,3b31978c7d7f7246,references\nvar crcTable = [\n 0, 1996959894, -301047508, -1727442502, 124634137, 1886057615, -379345611, -1637575261, 249268274,\n 2044508324, -522852066, -1747789432, 162941995, 2125561021, -407360249, -1866523247, 498536548,\n 1789927666, -205950648, -2067906082, 450548861, 1843258603, -187386543, -2083289657, 325883990,\n 1684777152, -43845254, -1973040660, 335633487, 1661365465, -99664541, -1928851979, 997073096,\n 1281953886, -715111964, -1570279054, 1006888145, 1258607687, -770865667, -1526024853, 901097722,\n 1119000684, -608450090, -1396901568, 853044451, 1172266101, -589951537, -1412350631, 651767980,\n 1373503546, -925412992, -1076862698, 565507253, 1454621731, -809855591, -1195530993, 671266974,\n 1594198024, -972236366, -1324619484, 795835527, 1483230225, -1050600021, -1234817731, 1994146192,\n 31158534, -1731059524, -271249366, 1907459465, 112637215, -1614814043, -390540237, 2013776290,\n 251722036, -1777751922, -519137256, 2137656763, 141376813, -1855689577, -429695999, 1802195444,\n 476864866, -2056965928, -228458418, 1812370925, 453092731, -2113342271, -183516073, 1706088902,\n 314042704, -1950435094, -54949764, 1658658271, 366619977, -1932296973, -69972891, 1303535960,\n 984961486, -1547960204, -725929758, 1256170817, 1037604311, -1529756563, -740887301, 1131014506,\n 879679996, -1385723834, -631195440, 1141124467, 855842277, -1442165665, -586318647, 1342533948,\n 654459306, -1106571248, -921952122, 1466479909, 544179635, -1184443383, -832445281, 1591671054,\n 702138776, -1328506846, -942167884, 1504918807, 783551873, -1212326853, -1061524307, -306674912,\n -1698712650, 62317068, 1957810842, -355121351, -1647151185, 81470997, 1943803523, -480048366,\n -1805370492, 225274430, 2053790376, -468791541, -1828061283, 167816743, 2097651377, -267414716,\n -2029476910, 503444072, 1762050814, -144550051, -2140837941, 426522225, 1852507879, -19653770,\n -1982649376, 282753626, 1742555852, -105259153, -1900089351, 397917763, 1622183637, -690576408,\n -1580100738, 953729732, 1340076626, -776247311, -1497606297, 1068828381, 1219638859, -670225446,\n -1358292148, 906185462, 1090812512, -547295293, -1469587627, 829329135, 1181335161, -882789492,\n -1134132454, 628085408, 1382605366, -871598187, -1156888829, 570562233, 1426400815, -977650754,\n -1296233688, 733239954, 1555261956, -1026031705, -1244606671, 752459403, 1541320221, -1687895376,\n -328994266, 1969922972, 40735498, -1677130071, -351390145, 1913087877, 83908371, -1782625662,\n -491226604, 2075208622, 213261112, -1831694693, -438977011, 2094854071, 198958881, -2032938284,\n -237706686, 1759359992, 534414190, -2118248755, -155638181, 1873836001, 414664567, -2012718362,\n -15766928, 1711684554, 285281116, -1889165569, -127750551, 1634467795, 376229701, -1609899400,\n -686959890, 1308918612, 956543938, -1486412191, -799009033, 1231636301, 1047427035, -1362007478,\n -640263460, 1088359270, 936918000, -1447252397, -558129467, 1202900863, 817233897, -1111625188,\n -893730166, 1404277552, 615818150, -1160759803, -841546093, 1423857449, 601450431, -1285129682,\n -1000256840, 1567103746, 711928724, -1274298825, -1022587231, 1510334235, 755167117\n];\nvar ZipContainer = /** @class */ (function () {\n function ZipContainer() {\n var _this = this;\n this.folders = [];\n this.files = [];\n this.addFolder = function (path) {\n _this.folders.push({\n path: path,\n created: new Date()\n });\n };\n }\n ZipContainer.prototype.addFolders = function (paths) {\n paths.forEach(this.addFolder);\n };\n ZipContainer.prototype.addFile = function (path, content) {\n this.files.push({\n path: path,\n created: new Date(),\n content: content\n });\n };\n ZipContainer.prototype.clearStream = function () {\n this.folders = [];\n this.files = [];\n };\n ZipContainer.prototype.getContent = function (mimeType) {\n if (mimeType === void 0) { mimeType = 'application/zip'; }\n var textOutput = this.buildFileStream();\n var uInt8Output = this.buildUint8Array(textOutput);\n this.clearStream();\n return new Blob([uInt8Output], { type: mimeType });\n };\n ZipContainer.prototype.buildFileStream = function (fData) {\n if (fData === void 0) { fData = ''; }\n var totalFiles = this.folders.concat(this.files);\n var len = totalFiles.length;\n var foData = '';\n var lL = 0;\n var cL = 0;\n for (var _i = 0, totalFiles_1 = totalFiles; _i < totalFiles_1.length; _i++) {\n var currentFile = totalFiles_1[_i];\n var _a = this.getHeader(currentFile, lL), fileHeader = _a.fileHeader, folderHeader = _a.folderHeader, content = _a.content;\n lL += fileHeader.length + content.length;\n cL += folderHeader.length;\n fData += fileHeader + content;\n foData += folderHeader;\n }\n var foEnd = this.buildFolderEnd(len, cL, lL);\n return fData + foData + foEnd;\n };\n ZipContainer.prototype.getHeader = function (currentFile, offset) {\n var content = currentFile.content, path = currentFile.path, created = currentFile.created;\n var utf8_encode = _.utf8_encode, decToHex = _.decToHex;\n var utfPath = utf8_encode(path);\n var isUTF8 = utfPath !== path;\n var time = this.convertTime(created);\n var dt = this.convertDate(created);\n var extraFields = '';\n if (isUTF8) {\n var uExtraFieldPath = decToHex(1, 1) + decToHex(this.getFromCrc32Table(utfPath), 4) + utfPath;\n extraFields = \"\\x75\\x70\" + decToHex(uExtraFieldPath.length, 2) + uExtraFieldPath;\n }\n var header = '\\x0A\\x00' +\n (isUTF8 ? '\\x00\\x08' : '\\x00\\x00') +\n '\\x00\\x00' +\n decToHex(time, 2) + // last modified time\n decToHex(dt, 2) + // last modified date\n decToHex(content ? this.getFromCrc32Table(content) : 0, 4) +\n decToHex(content ? content.length : 0, 4) + // compressed size\n decToHex(content ? content.length : 0, 4) + // uncompressed size\n decToHex(utfPath.length, 2) + // file name length\n decToHex(extraFields.length, 2); // extra field length\n var fileHeader = 'PK\\x03\\x04' + header + utfPath + extraFields;\n var folderHeader = 'PK\\x01\\x02' + // central header\n '\\x14\\x00' +\n header + // file header\n '\\x00\\x00' +\n '\\x00\\x00' +\n '\\x00\\x00' +\n (content ? '\\x00\\x00\\x00\\x00' : '\\x10\\x00\\x00\\x00') + // external file attributes\n decToHex(offset, 4) + // relative offset of local header\n utfPath + // file name\n extraFields; // extra field\n return { fileHeader: fileHeader, folderHeader: folderHeader, content: content || '' };\n };\n ZipContainer.prototype.buildFolderEnd = function (tLen, cLen, lLen) {\n var decToHex = _.decToHex;\n return 'PK\\x05\\x06' + // central folder end\n '\\x00\\x00' +\n '\\x00\\x00' +\n decToHex(tLen, 2) + // total number of entries in the central folder\n decToHex(tLen, 2) + // total number of entries in the central folder\n decToHex(cLen, 4) + // size of the central folder\n decToHex(lLen, 4) + // central folder start offset\n '\\x00\\x00';\n };\n ZipContainer.prototype.buildUint8Array = function (content) {\n var uint8 = new Uint8Array(content.length);\n for (var i = 0; i < uint8.length; i++) {\n uint8[i] = content.charCodeAt(i);\n }\n return uint8;\n };\n ZipContainer.prototype.getFromCrc32Table = function (content, crc) {\n if (crc === void 0) { crc = 0; }\n if (!content.length) {\n return 0;\n }\n crc ^= (-1);\n var j = 0;\n var k = 0;\n var l = 0;\n for (var i = 0; i < content.length; i++) {\n j = content.charCodeAt(i);\n k = (crc ^ j) & 0xFF;\n l = crcTable[k];\n crc = (crc >>> 8) ^ l;\n }\n return crc ^ (-1);\n };\n ZipContainer.prototype.convertTime = function (date) {\n var time = date.getHours();\n time <<= 6;\n time = time | date.getMinutes();\n time <<= 5;\n time = time | date.getSeconds() / 2;\n return time;\n };\n ZipContainer.prototype.convertDate = function (date) {\n var dt = date.getFullYear() - 1980;\n dt <<= 4;\n dt = dt | (date.getMonth() + 1);\n dt <<= 5;\n dt = dt | date.getDate();\n return dt;\n };\n ZipContainer = __decorate([\n Bean('zipContainer')\n ], ZipContainer);\n return ZipContainer;\n}());\nexport { ZipContainer };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { CsvCreator } from \"./csvExport/csvCreator\";\nimport { Downloader } from \"./csvExport/downloader\";\nimport { XmlFactory } from \"./csvExport/xmlFactory\";\nimport { GridSerializer } from \"./csvExport/gridSerializer\";\nimport { ZipContainer } from \"./csvExport/zipContainer\";\nexport var CsvExportModule = {\n moduleName: ModuleNames.CsvExportModule,\n beans: [CsvCreator, Downloader, XmlFactory, GridSerializer, ZipContainer]\n};\n","import { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';\nimport { InfiniteRowModelModule } from '@ag-grid-community/infinite-row-model';\nimport { CsvExportModule } from '@ag-grid-community/csv-export';\nexport var AllCommunityModules = [ClientSideRowModelModule, InfiniteRowModelModule, CsvExportModule];\nexport * from \"@ag-grid-community/client-side-row-model\";\nexport * from \"@ag-grid-community/csv-export\";\nexport * from \"@ag-grid-community/infinite-row-model\";\nexport * from \"@ag-grid-community/core\";\n","var __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};\nimport { _, Autowired, Bean, ChangedPath, Constants, Events, PostConstruct, Optional } from \"@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() === 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 (_.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 (_.missingOrEmpty(parsedData)) {\n return;\n }\n _this.removeLastLineIfBlank(parsedData);\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: 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 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: 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)) {\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, Constants.EXPORT_TYPE_DRAG_COPY);\n _this.valueService.setValue(rowNode, column, newValue, 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, Constants.EXPORT_TYPE_CLIPBOARD, changedPath);\n }\n };\n ClipboardService.prototype.removeLastLineIfBlank = function (parsedData) {\n // remove last row if empty, excel puts empty last row in\n var lastLine = _.last(parsedData);\n var lastLineIsBlank = lastLine && lastLine.length === 1 && lastLine[0] === '';\n if (lastLineIsBlank) {\n _.removeFromArray(parsedData, lastLine);\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, 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, Constants.EXPORT_TYPE_DRAG_COPY);\n _this.valueService.setValue(rowNode, column, firstRowValue, 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: 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, 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 || !currentRow) {\n return;\n }\n if (!column.isCellEditable(rowNode)) {\n return;\n }\n if (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, 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 && _.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 && !_.missing(currentRow) && currentRow) {\n var rowNode = this.rowPositionUtils.getRowNode(currentRow);\n isLastRow = currentRow.rowIndex === lastRow.rowIndex && currentRow.rowIndex === lastRow.rowIndex;\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 (_.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(), Constants.EXPORT_TYPE_CLIPBOARD);\n if (index != 0) {\n data += deliminator;\n }\n if (_.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 (_.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(), Constants.EXPORT_TYPE_CLIPBOARD);\n if (_.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: 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 else {\n return value;\n }\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 else {\n return value;\n }\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 && _.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 = _.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 Autowired('csvCreator')\n ], ClipboardService.prototype, \"csvCreator\", void 0);\n __decorate([\n Autowired('loggerFactory')\n ], ClipboardService.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('selectionController')\n ], ClipboardService.prototype, \"selectionController\", void 0);\n __decorate([\n Optional('rangeController')\n ], ClipboardService.prototype, \"rangeController\", void 0);\n __decorate([\n Autowired('rowModel')\n ], ClipboardService.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('valueService')\n ], ClipboardService.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('focusedCellController')\n ], ClipboardService.prototype, \"focusedCellController\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], ClipboardService.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('columnController')\n ], ClipboardService.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], ClipboardService.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('cellNavigationService')\n ], ClipboardService.prototype, \"cellNavigationService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ClipboardService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ClipboardService.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ClipboardService.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('cellPositionUtils')\n ], ClipboardService.prototype, \"cellPositionUtils\", void 0);\n __decorate([\n Autowired('rowPositionUtils')\n ], ClipboardService.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n PostConstruct\n ], ClipboardService.prototype, \"init\", null);\n ClipboardService = __decorate([\n Bean('clipboardService')\n ], ClipboardService);\n return ClipboardService;\n}());\nexport { ClipboardService };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { ClipboardService } from \"./clipboard/clipboardService\";\nexport var ClipboardModule = {\n moduleName: ModuleNames.ClipboardModule,\n beans: [ClipboardService],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","var __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};\nimport { _, AgCheckbox, Autowired, Column, Component, CssClassApplier, DragSourceType, Events, PostConstruct, RefSelector, TouchListener } from \"@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 = _.createIconNoSpan('columnDrag', this.gridOptionsWrapper);\n _.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 (_.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, 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, AgCheckbox.EVENT_CHANGED, this.onCheckboxChanged.bind(this));\n this.setOpenClosedIcons();\n this.setupDragging();\n this.onColumnStateChanged();\n this.addVisibilityListenersToAllChildren();\n 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, Column.EVENT_VISIBLE_CHANGED, _this.onColumnStateChanged.bind(_this));\n _this.addDestroyableEventListener(column, Column.EVENT_VALUE_CHANGED, _this.onColumnStateChanged.bind(_this));\n _this.addDestroyableEventListener(column, Column.EVENT_PIVOT_CHANGED, _this.onColumnStateChanged.bind(_this));\n _this.addDestroyableEventListener(column, 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 _.setDisplayed(this.eDragHandle, false);\n return;\n }\n var dragSource = {\n type: DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n dragItemName: this.displayName,\n dragItemCallback: 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(_.createIcon('columnSelectClosed', this.gridOptionsWrapper, null));\n this.eGroupOpenedIcon.appendChild(_.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 TouchListener(this.eColumnGroupIcons, true);\n this.addDestroyableEventListener(touchListener, 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 _.setDisplayed(this.eGroupClosedIcon, !folderOpen);\n _.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 Autowired('eventService')\n ], ToolPanelColumnGroupComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnController')\n ], ToolPanelColumnGroupComp.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], ToolPanelColumnGroupComp.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ToolPanelColumnGroupComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n RefSelector('cbSelect')\n ], ToolPanelColumnGroupComp.prototype, \"cbSelect\", void 0);\n __decorate([\n RefSelector('eLabel')\n ], ToolPanelColumnGroupComp.prototype, \"eLabel\", void 0);\n __decorate([\n RefSelector('eGroupOpenedIcon')\n ], ToolPanelColumnGroupComp.prototype, \"eGroupOpenedIcon\", void 0);\n __decorate([\n RefSelector('eGroupClosedIcon')\n ], ToolPanelColumnGroupComp.prototype, \"eGroupClosedIcon\", void 0);\n __decorate([\n RefSelector('eColumnGroupIcons')\n ], ToolPanelColumnGroupComp.prototype, \"eColumnGroupIcons\", void 0);\n __decorate([\n PostConstruct\n ], ToolPanelColumnGroupComp.prototype, \"init\", null);\n return ToolPanelColumnGroupComp;\n}(Component));\nexport { ToolPanelColumnGroupComp };\n","var __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};\nimport { AgCheckbox, Autowired, Column, Component, CssClassApplier, DragSourceType, Events, PostConstruct, RefSelector, _ } from \"@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 = _.createIconNoSpan('columnDrag', this.gridOptionsWrapper);\n _.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 = _.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, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addDestroyableEventListener(this.column, Column.EVENT_VALUE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addDestroyableEventListener(this.column, Column.EVENT_PIVOT_CHANGED, this.onColumnStateChanged.bind(this));\n this.addDestroyableEventListener(this.column, Column.EVENT_ROW_GROUP_CHANGED, this.onColumnStateChanged.bind(this));\n this.addDestroyableEventListener(this.column, Column.EVENT_VISIBLE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, 'functionsReadOnly', this.onColumnStateChanged.bind(this));\n this.addDestroyableEventListener(this.cbSelect, AgCheckbox.EVENT_CHANGED, this.onCheckboxChanged.bind(this));\n this.addDestroyableEventListener(this.eLabel, 'click', this.onLabelClicked.bind(this));\n this.onColumnStateChanged();\n 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: 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: 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: 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 _.removeFromArray(copyOfValueColumns, column);\n var event_4 = {\n type: 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 _.removeFromArray(copyOfRowGroupColumns, column);\n var event_5 = {\n type: 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 _.removeFromArray(copyOfPivotColumns, column);\n var event_6 = {\n type: 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 _.setDisplayed(this.eDragHandle, false);\n return;\n }\n var dragSource = {\n type: DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n dragItemName: this.displayName,\n dragItemCallback: 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 Autowired('gridOptionsWrapper')\n ], ToolPanelColumnComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], ToolPanelColumnComp.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], ToolPanelColumnComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], ToolPanelColumnComp.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ToolPanelColumnComp.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ToolPanelColumnComp.prototype, \"gridApi\", void 0);\n __decorate([\n RefSelector('eLabel')\n ], ToolPanelColumnComp.prototype, \"eLabel\", void 0);\n __decorate([\n RefSelector('cbSelect')\n ], ToolPanelColumnComp.prototype, \"cbSelect\", void 0);\n __decorate([\n PostConstruct\n ], ToolPanelColumnComp.prototype, \"init\", null);\n return ToolPanelColumnComp;\n}(Component));\nexport { ToolPanelColumnComp };\n","var __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};\nimport { _, Autowired, Component, Events, OriginalColumnGroup } from \"@ag-grid-community/core\";\nimport { ToolPanelColumnGroupComp } from \"./toolPanelColumnGroupComp\";\nimport { ToolPanelColumnComp } from \"./toolPanelColumnComp\";\nimport { EXPAND_STATE, SELECTED_STATE } from \"./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 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, Events.EVENT_COLUMN_MOVED, this.onColumnsChanged.bind(this));\n }\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.onColumnsChanged.bind(this));\n var eventsImpactingCheckedState = [\n Events.EVENT_COLUMN_EVERYTHING_CHANGED,\n Events.EVENT_COLUMN_PIVOT_CHANGED,\n Events.EVENT_COLUMN_PIVOT_MODE_CHANGED,\n Events.EVENT_COLUMN_ROW_GROUP_CHANGED,\n Events.EVENT_COLUMN_VALUE_CHANGED,\n Events.EVENT_COLUMN_VISIBLE,\n 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 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(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(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 _.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 _.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 !_.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 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 EXPAND_STATE.INDETERMINATE;\n }\n else if (notExpandedCount > 0) {\n return EXPAND_STATE.COLLAPSED;\n }\n else {\n return 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 _.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 (!_.exists(this.filterText)) {\n var primaryCols = this.columnApi.getPrimaryColumns();\n // we don't want to change visibility on lock visible columns\n var colsToChange = primaryCols.filter(function (col) { return !col.isLockVisible(); });\n this.columnApi.setColumnsVisible(colsToChange, this.selectAllChecked);\n return;\n }\n // obtain list of columns currently filtered\n var filteredCols_1 = [];\n _.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 ? SELECTED_STATE.CHECKED : 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 SELECTED_STATE.INDETERMINATE;\n }\n else if (checkedCount === 0 || uncheckedCount > 0) {\n return SELECTED_STATE.UNCHECKED;\n }\n else {\n return SELECTED_STATE.CHECKED;\n }\n };\n PrimaryColsListPanel.prototype.setFilterText = function (filterText) {\n this.filterText = _.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 _.iterateObject(this.columnComps, function (key, columnComp) {\n if (columnComp instanceof 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 (!_.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 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 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 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 _.clearElement(this.getGui());\n if (this.columnComps) {\n _.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 Autowired('gridOptionsWrapper')\n ], PrimaryColsListPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], PrimaryColsListPanel.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('toolPanelColDefService')\n ], PrimaryColsListPanel.prototype, \"colDefService\", void 0);\n __decorate([\n Autowired('eventService')\n ], PrimaryColsListPanel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], PrimaryColsListPanel.prototype, \"columnApi\", void 0);\n return PrimaryColsListPanel;\n}(Component));\nexport { PrimaryColsListPanel };\n","var __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};\nimport { AgCheckbox, Autowired, Component, Events, PreConstruct, RefSelector } from \"@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, AgCheckbox.EVENT_CHANGED, this.onBtPivotMode.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.onPivotModeChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, 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 Autowired('columnController')\n ], PivotModePanel.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], PivotModePanel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], PivotModePanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n RefSelector('cbPivotMode')\n ], PivotModePanel.prototype, \"cbPivotMode\", void 0);\n __decorate([\n PreConstruct\n ], PivotModePanel.prototype, \"init\", null);\n return PivotModePanel;\n}(Component));\nexport { PivotModePanel };\n","var __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};\nimport { Bean, Autowired, _ } from \"@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 = _.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 = _.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 !_.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 _.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 Autowired('gridOptionsWrapper')\n ], AggregationStage.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], AggregationStage.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('valueService')\n ], AggregationStage.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('pivotStage')\n ], AggregationStage.prototype, \"pivotStage\", void 0);\n __decorate([\n Autowired('aggFuncService')\n ], AggregationStage.prototype, \"aggFuncService\", void 0);\n AggregationStage = __decorate([\n Bean('aggregationStage')\n ], AggregationStage);\n return AggregationStage;\n}());\nexport { AggregationStage };\n","var __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};\nimport { Autowired, Bean, NumberSequence, PostConstruct, RowNode, _ } from \"@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 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 && _.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);\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 _.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 (_.exists(comparator)) {\n recursiveSort(rootNode);\n }\n function recursiveSort(rowNode) {\n var doSort = _.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 = _.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);\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 _.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 (!_.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);\n };\n GroupStage.prototype.insertNodes = function (newRowNodes, details) {\n var _this = this;\n newRowNodes.forEach(function (rowNode) {\n _this.insertOneNode(rowNode, details);\n if (details.changedPath.isActive()) {\n details.changedPath.addParentNode(rowNode.parent);\n }\n });\n };\n GroupStage.prototype.insertOneNode = function (childNode, details) {\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);\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) {\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 userGroup.expanded = fillerGroup.expanded;\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 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 _.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 Autowired('selectionController')\n ], GroupStage.prototype, \"selectionController\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], GroupStage.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], GroupStage.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('selectableService')\n ], GroupStage.prototype, \"selectableService\", void 0);\n __decorate([\n Autowired('valueService')\n ], GroupStage.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('eventService')\n ], GroupStage.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('context')\n ], GroupStage.prototype, \"context\", void 0);\n __decorate([\n PostConstruct\n ], GroupStage.prototype, \"postConstruct\", null);\n GroupStage = __decorate([\n Bean('groupStage')\n ], GroupStage);\n return GroupStage;\n}());\nexport { 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","var __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};\nimport { Autowired, Bean, NumberSequence, _ } from \"@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 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 _.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 _.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 _.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 Autowired('columnController')\n ], PivotColDefService.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], PivotColDefService.prototype, \"gridOptionsWrapper\", void 0);\n PivotColDefService = __decorate([\n Bean('pivotColDefService')\n ], PivotColDefService);\n return PivotColDefService;\n}());\nexport { PivotColDefService };\n","var __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};\nimport { Autowired, Bean, _ } from \"@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 (_.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 _.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 Autowired('rowModel')\n ], PivotStage.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('valueService')\n ], PivotStage.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('columnController')\n ], PivotStage.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], PivotStage.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('pivotColDefService')\n ], PivotStage.prototype, \"pivotColDefService\", void 0);\n PivotStage = __decorate([\n Bean('pivotStage')\n ], PivotStage);\n return PivotStage;\n}());\nexport { PivotStage };\n","var __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};\nimport { Autowired, Bean, PostConstruct, _ } from \"@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 = _.includes(allKeys, AggFuncService_1.AGG_SUM);\n var sumInFuncs = _.exists(this.aggFuncsMap[AggFuncService_1.AGG_SUM]);\n if (sumInKeysList && sumInFuncs) {\n return AggFuncService_1.AGG_SUM;\n }\n else {\n return _.existsAndNotEmpty(allKeys) ? allKeys[0] : null;\n }\n };\n AggFuncService.prototype.addAggFuncs = function (aggFuncs) {\n _.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 (_.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 Autowired('gridOptionsWrapper')\n ], AggFuncService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], AggFuncService.prototype, \"init\", null);\n AggFuncService = AggFuncService_1 = __decorate([\n Bean('aggFuncService')\n ], AggFuncService);\n return AggFuncService;\n}());\nexport { 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 ? _.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 = _.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 = _.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","var __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};\nimport { DragSourceType, Component, Autowired, Events, TouchListener, PostConstruct, RefSelector, _, Optional, VirtualList } from \"@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(_.createIconNoSpan('columnDrag', this.gridOptionsWrapper));\n this.btRemove.appendChild(_.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: DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n dragItemCallback: 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 _.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 _.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 TouchListener(this.btRemove);\n this.addDestroyableEventListener(touchListener, 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 = _.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 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 = _.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: 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 Autowired('dragAndDropService')\n ], DropZoneColumnComp.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('columnController')\n ], DropZoneColumnComp.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('popupService')\n ], DropZoneColumnComp.prototype, \"popupService\", void 0);\n __decorate([\n Optional('aggFuncService')\n ], DropZoneColumnComp.prototype, \"aggFuncService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], DropZoneColumnComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('eventService')\n ], DropZoneColumnComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], DropZoneColumnComp.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], DropZoneColumnComp.prototype, \"gridApi\", void 0);\n __decorate([\n RefSelector('eText')\n ], DropZoneColumnComp.prototype, \"eText\", void 0);\n __decorate([\n RefSelector('eDragHandle')\n ], DropZoneColumnComp.prototype, \"eDragHandle\", void 0);\n __decorate([\n RefSelector('btRemove')\n ], DropZoneColumnComp.prototype, \"btRemove\", void 0);\n __decorate([\n PostConstruct\n ], DropZoneColumnComp.prototype, \"init\", null);\n return DropZoneColumnComp;\n}(Component));\nexport { 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}(Component));\n","import { _ } from '@ag-grid-community/core';\nimport numberFormatsFactory from './numberFormats';\nimport fontsFactory from './fonts';\nimport fillsFactory from './fills';\nimport bordersFactory from './borders';\nimport cellStylesXfsFactory from './cellStyleXfs';\nimport cellXfsFactory from './cellXfs';\nimport cellStylesFactory from './cellStyles';\nimport { numberFormatMap } from './numberFormat';\nimport { getFamilyId } from './font';\nimport { convertLegacyBorder } from './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};\nexport var 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 = convertLegacyColor(fill.color);\n var convertedPatternColor = convertLegacyColor(fill.patternColor);\n var pos = _.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 = _.utf8_encode(format);\n if (numberFormatMap[format]) {\n return numberFormatMap[format];\n }\n var pos = _.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 = convertLegacyBorder(borderLeft.lineStyle, borderLeft.weight);\n leftColor = convertLegacyColor(borderLeft.color);\n }\n if (borderRight) {\n rightStyle = convertLegacyBorder(borderRight.lineStyle, borderRight.weight);\n rightColor = convertLegacyColor(borderRight.color);\n }\n if (borderBottom) {\n bottomStyle = convertLegacyBorder(borderBottom.lineStyle, borderBottom.weight);\n bottomColor = convertLegacyColor(borderBottom.color);\n }\n if (borderTop) {\n topStyle = convertLegacyBorder(borderTop.lineStyle, borderTop.weight);\n topColor = convertLegacyColor(borderTop.color);\n }\n var pos = _.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 ? _.utf8_encode(name) : name;\n var convertedColor = convertLegacyColor(color);\n var familyId = getFamilyId(family);\n var pos = _.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 = numberFormatsFactory.getTemplate(registeredNumberFmts);\n var fonts = fontsFactory.getTemplate(registeredFonts);\n var fills = fillsFactory.getTemplate(registeredFills);\n var borders = bordersFactory.getTemplate(registeredBorders);\n var cellStylesXfs = cellStylesXfsFactory.getTemplate(registeredCellStyleXfs);\n var cellXfs = cellXfsFactory.getTemplate(registeredCellXfs);\n var cellStyles = cellStylesFactory.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};\nexport var getStyleId = function (name) {\n return stylesMap[name] || 0;\n};\nexport var registerStyles = function (styles) {\n resetStylesheetValues();\n styles.forEach(registerStyle);\n};\nexport default stylesheetFactory;\n","var __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};\nimport { _, Autowired, Component, Events, PostConstruct, PreConstruct, RefSelector } from \"@ag-grid-community/core\";\nexport var 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 || (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, 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 = _.createIconNoSpan('columnSelectOpen', this.gridOptionsWrapper));\n this.eExpand.appendChild(this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsWrapper));\n this.eExpand.appendChild(this.eExpandIndeterminate = _.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 _.setDisplayed(this.eFilterWrapper, showFilterSearch);\n _.setDisplayed(this.eExpand, showExpand && filterGroupsPresent);\n };\n FiltersToolPanelHeaderPanel.prototype.onSearchTextChanged = function () {\n var _this = this;\n if (!this.onSearchTextChangedDebounced) {\n this.onSearchTextChangedDebounced = _.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 _.setDisplayed(this.eExpandChecked, this.currentExpandState === EXPAND_STATE.EXPANDED);\n _.setDisplayed(this.eExpandUnchecked, this.currentExpandState === EXPAND_STATE.COLLAPSED);\n _.setDisplayed(this.eExpandIndeterminate, this.currentExpandState === EXPAND_STATE.INDETERMINATE);\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], FiltersToolPanelHeaderPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], FiltersToolPanelHeaderPanel.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], FiltersToolPanelHeaderPanel.prototype, \"eventService\", void 0);\n __decorate([\n RefSelector('eExpand')\n ], FiltersToolPanelHeaderPanel.prototype, \"eExpand\", void 0);\n __decorate([\n RefSelector('eFilterWrapper')\n ], FiltersToolPanelHeaderPanel.prototype, \"eFilterWrapper\", void 0);\n __decorate([\n RefSelector('eFilterTextField')\n ], FiltersToolPanelHeaderPanel.prototype, \"eSearchTextField\", void 0);\n __decorate([\n PreConstruct\n ], FiltersToolPanelHeaderPanel.prototype, \"preConstruct\", null);\n __decorate([\n PostConstruct\n ], FiltersToolPanelHeaderPanel.prototype, \"postConstruct\", null);\n return FiltersToolPanelHeaderPanel;\n}(Component));\nexport { FiltersToolPanelHeaderPanel };\n","var __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})();\nimport { Component, DragSourceType, Events, HDirection, VDirection, _ } from \"@ag-grid-community/core\";\nimport { DropZoneColumnComp } from \"./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 = _.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 _.clearElement(this.getGui());\n _.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(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 === DragSourceType.HeaderCell || type === DragSourceType.ToolPanel;\n };\n BaseDropZonePanel.prototype.checkInsertIndex = function (draggingEvent) {\n var newIndex;\n if (this.horizontal) {\n newIndex = this.getNewHorizontalInsertIndex(draggingEvent);\n }\n else {\n newIndex = this.getNewVerticalInsertIndex(draggingEvent);\n }\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 (_.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 === HDirection.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 (_.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 if (draggingEvent.vDirection === VDirection.Down) {\n var verticalFit = mouseEvent.clientY >= rect.top;\n if (verticalFit) {\n newIndex++;\n }\n }\n else {\n var verticalFit = mouseEvent.clientY >= rect.bottom;\n if (verticalFit) {\n newIndex++;\n }\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.dragItemCallback().columns || [];\n this.refreshGui();\n this.checkInsertIndex(draggingEvent);\n this.refreshGui();\n };\n BaseDropZonePanel.prototype.onDragging = function (draggingEvent) {\n this.checkDragStartedBySelf(draggingEvent);\n var positionChanged = this.checkInsertIndex(draggingEvent);\n if (positionChanged) {\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.dragItemCallback().columns || [];\n this.state = BaseDropZonePanel.STATE_NEW_COLUMNS_IN;\n // take out columns that are not groupable\n var goodDragColumns = dragColumns.filter(this.isColumnDroppable.bind(this));\n var weHaveColumnsToDrag = goodDragColumns.length > 0;\n if (weHaveColumnsToDrag) {\n this.potentialDndColumns = goodDragColumns;\n this.checkInsertIndex(draggingEvent);\n this.refreshGui();\n }\n };\n BaseDropZonePanel.prototype.isPotentialDndColumns = function () {\n return _.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.dragItemCallback().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 = void 0;\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.\n if (this.beans.gridOptionsWrapper.isFunctionsPassive()) {\n // when functions are passive, we don't refresh,\n // unless there was no change in the order, then we\n // do need to refresh to reset the columns\n if (!success) {\n this.refreshGui();\n }\n }\n else {\n this.refreshGui();\n }\n }\n this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n };\n BaseDropZonePanel.prototype.removeColumns = function (columnsToRemove) {\n var newColumnList = this.getExistingColumns().slice();\n columnsToRemove.forEach(function (column) { return _.removeFromArray(newColumnList, column); });\n this.updateColumns(newColumnList);\n };\n BaseDropZonePanel.prototype.addColumns = function (columnsToAdd) {\n var newColumnList = this.getExistingColumns().slice();\n _.insertArrayIntoArray(newColumnList, columnsToAdd, this.insertIndex);\n this.updateColumns(newColumnList);\n };\n BaseDropZonePanel.prototype.rearrangeColumns = function (columnsToAdd) {\n var newColumnList = this.getNonGhostColumns().slice();\n _.insertArrayIntoArray(newColumnList, columnsToAdd, this.insertIndex);\n var noChangeDetected = _.shallowCompare(newColumnList, this.getExistingColumns());\n if (noChangeDetected) {\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 var nonGhostColumns;\n if (this.isPotentialDndColumns()) {\n nonGhostColumns = existingColumns.filter(function (column) { return !_.includes(_this.potentialDndColumns, column); });\n }\n else {\n nonGhostColumns = existingColumns;\n }\n return nonGhostColumns;\n };\n BaseDropZonePanel.prototype.addColumnsToGui = function () {\n var _this = this;\n var nonGhostColumns = this.getNonGhostColumns();\n var itemsToAddToGui = [];\n var addingGhosts = this.isPotentialDndColumns();\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 var needSeparator = index !== 0;\n if (needSeparator) {\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(column, this.dropTarget, ghost, this.valueColumn);\n columnComponent.addEventListener(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 _.addCssClass(eGroupIcon, 'ag-column-drop-icon');\n _.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 _.addCssClass(eTitle, 'ag-column-drop-title');\n _.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 var showEmptyMessage = this.isExistingColumnsEmpty() && !this.isPotentialDndColumns();\n if (!showEmptyMessage) {\n return;\n }\n var eMessage = document.createElement('span');\n eMessage.innerHTML = this.params.emptyMessage;\n _.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(_.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}(Component));\nexport { BaseDropZonePanel };\n","var __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};\nimport { Autowired, DragAndDropService, PostConstruct, Events, _ } from \"@ag-grid-community/core\";\nimport { BaseDropZonePanel } from \"./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: DragAndDropService.ICON_GROUP,\n icon: _.createIconNoSpan('rowGroupPanel', this.gridOptionsWrapper, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.refreshGui.bind(this));\n };\n RowGroupDropZonePanel.prototype.isColumnDroppable = function (column) {\n if (this.gridOptionsWrapper.isFunctionsReadOnly()) {\n return false;\n }\n // we never allow grouping of secondary columns\n if (!column.isPrimary()) {\n return false;\n }\n var columnGroupable = column.isAllowRowGroup();\n var columnNotAlreadyGrouped = !column.isRowGroupActive();\n return columnGroupable && columnNotAlreadyGrouped;\n };\n RowGroupDropZonePanel.prototype.updateColumns = function (columns) {\n if (this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: 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() ? DragAndDropService.ICON_GROUP : DragAndDropService.ICON_NOT_ALLOWED;\n };\n RowGroupDropZonePanel.prototype.getExistingColumns = function () {\n return this.columnController.getRowGroupColumns();\n };\n __decorate([\n Autowired('columnController')\n ], RowGroupDropZonePanel.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], RowGroupDropZonePanel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], RowGroupDropZonePanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('loggerFactory')\n ], RowGroupDropZonePanel.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], RowGroupDropZonePanel.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], RowGroupDropZonePanel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], RowGroupDropZonePanel.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], RowGroupDropZonePanel.prototype, \"passBeansUp\", null);\n return RowGroupDropZonePanel;\n}(BaseDropZonePanel));\nexport { RowGroupDropZonePanel };\n","var __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};\nimport { Autowired, DragAndDropService, PostConstruct, Events, _ } from \"@ag-grid-community/core\";\nimport { BaseDropZonePanel } from \"./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: DragAndDropService.ICON_GROUP,\n icon: _.createIconNoSpan('pivotPanel', this.gridOptionsWrapper, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.refresh.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.refresh.bind(this));\n this.addDestroyableEventListener(this.eventService, 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 if (this.gridOptionsWrapper.isFunctionsReadOnly()) {\n return false;\n }\n // we never allow grouping of secondary columns\n if (!column.isPrimary()) {\n return false;\n }\n var allowPivot = column.isAllowPivot();\n var columnNotAlreadyPivoted = !column.isPivotActive();\n return allowPivot && columnNotAlreadyPivoted;\n };\n PivotDropZonePanel.prototype.updateColumns = function (columns) {\n if (this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: 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() ? DragAndDropService.ICON_PIVOT : DragAndDropService.ICON_NOT_ALLOWED;\n };\n PivotDropZonePanel.prototype.getExistingColumns = function () {\n return this.columnController.getPivotColumns();\n };\n __decorate([\n Autowired('columnController')\n ], PivotDropZonePanel.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], PivotDropZonePanel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], PivotDropZonePanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('loggerFactory')\n ], PivotDropZonePanel.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], PivotDropZonePanel.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], PivotDropZonePanel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], PivotDropZonePanel.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], PivotDropZonePanel.prototype, \"passBeansUp\", null);\n return PivotDropZonePanel;\n}(BaseDropZonePanel));\nexport { PivotDropZonePanel };\n","var __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};\nimport { Autowired, Component, Constants, Events, PostConstruct } from \"@ag-grid-community/core\";\nimport { RowGroupDropZonePanel } from \"./rowGroupDropZonePanel\";\nimport { PivotDropZonePanel } from \"./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(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));\n this.eventService.addEventListener(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(true);\n this.getContext().wireBean(this.rowGroupComp);\n this.addDestroyFunc(function () { return _this.rowGroupComp.destroy(); });\n this.pivotComp = new 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(Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n this.pivotComp.addEventListener(Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n this.addDestroyFunc(function () {\n _this.rowGroupComp.removeEventListener(Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n _this.pivotComp.removeEventListener(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 === Constants.ALWAYS) {\n this.rowGroupComp.setDisplayed(true);\n }\n else if (rowGroupPanelShow === 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 Autowired('gridOptionsWrapper')\n ], GridHeaderDropZones.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], GridHeaderDropZones.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], GridHeaderDropZones.prototype, \"eventService\", void 0);\n __decorate([\n PostConstruct\n ], GridHeaderDropZones.prototype, \"postConstruct\", null);\n return GridHeaderDropZones;\n}(Component));\nexport { GridHeaderDropZones };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { AggregationStage } from \"./rowGrouping/aggregationStage\";\nimport { GroupStage } from \"./rowGrouping/groupStage\";\nimport { PivotColDefService } from \"./rowGrouping/pivotColDefService\";\nimport { PivotStage } from \"./rowGrouping/pivotStage\";\nimport { AggFuncService } from \"./rowGrouping/aggFuncService\";\nimport { GridHeaderDropZones } from \"./rowGrouping/columnDropZones/gridHeaderDropZones\";\nexport var RowGroupingModule = {\n moduleName: ModuleNames.RowGroupingModule,\n beans: [AggregationStage, GroupStage, PivotColDefService, PivotStage, AggFuncService],\n agStackComponents: [\n { componentName: 'AgGridHeaderDropZones', componentClass: GridHeaderDropZones }\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","var __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};\nimport { Autowired, DragAndDropService, PostConstruct, Events, _ } from \"@ag-grid-community/core\";\nimport { BaseDropZonePanel } from \"./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: DragAndDropService.ICON_AGGREGATE,\n icon: _.createIconNoSpan('valuePanel', this.gridOptionsWrapper, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.refreshGui.bind(this));\n };\n ValuesDropZonePanel.prototype.getIconName = function () {\n return this.isPotentialDndColumns() ? DragAndDropService.ICON_AGGREGATE : DragAndDropService.ICON_NOT_ALLOWED;\n };\n ValuesDropZonePanel.prototype.isColumnDroppable = function (column) {\n if (this.gridOptionsWrapper.isFunctionsReadOnly()) {\n return false;\n }\n // we never allow grouping of secondary columns\n if (!column.isPrimary()) {\n return false;\n }\n var columnValue = column.isAllowValue();\n var columnNotValue = !column.isValueActive();\n return columnValue && columnNotValue;\n };\n ValuesDropZonePanel.prototype.updateColumns = function (columns) {\n if (this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: 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 Autowired('columnController')\n ], ValuesDropZonePanel.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], ValuesDropZonePanel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ValuesDropZonePanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('loggerFactory')\n ], ValuesDropZonePanel.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], ValuesDropZonePanel.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ValuesDropZonePanel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ValuesDropZonePanel.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], ValuesDropZonePanel.prototype, \"passBeansUp\", null);\n return ValuesDropZonePanel;\n}(BaseDropZonePanel));\nexport { ValuesDropZonePanel };\n","var __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};\nimport { _, Autowired, Component, Events, ModuleNames, ModuleRegistry } from \"@ag-grid-community/core\";\nimport { PivotModePanel } from \"./pivotModePanel\";\nimport { RowGroupDropZonePanel, ValuesDropZonePanel, PivotDropZonePanel } from \"@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 _.mergeDeep(defaultParams, params);\n this.params = defaultParams;\n if (this.isRowGroupingModuleLoaded() && !this.params.suppressPivotMode) {\n this.pivotModePanel = new 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 RowGroupDropZonePanel(false);\n this.addComponent(this.rowGroupDropZonePanel);\n }\n if (!this.params.suppressValues) {\n this.valuesDropZonePanel = new ValuesDropZonePanel(false);\n this.addComponent(this.valuesDropZonePanel);\n }\n if (!this.params.suppressPivots) {\n this.pivotDropZonePanel = new PivotDropZonePanel(false);\n this.addComponent(this.pivotDropZonePanel);\n }\n this.setLastVisible();\n this.addDestroyableEventListener(this.eventService, 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();\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 RowGroupDropZonePanel(false);\n this.addComponent(new 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 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 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 _.removeCssClass(columnDrop, 'ag-last-column-drop'); });\n var lastVisible = _.last(eGui.querySelectorAll('.ag-column-drop:not(.ag-hidden)'));\n if (lastVisible) {\n _.addCssClass(lastVisible, 'ag-last-column-drop');\n }\n };\n ColumnToolPanel.prototype.isRowGroupingModuleLoaded = function () {\n return ModuleRegistry.assertRegistered(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 _.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 Autowired(\"gridOptionsWrapper\")\n ], ColumnToolPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired(\"gridApi\")\n ], ColumnToolPanel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired(\"eventService\")\n ], ColumnToolPanel.prototype, \"eventService\", void 0);\n return ColumnToolPanel;\n}(Component));\nexport { ColumnToolPanel };\n","var __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};\nimport { Autowired, Component, RefSelector } from \"@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 Autowired('gridOptionsWrapper')\n ], PrimaryColsPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n RefSelector('primaryColsHeaderPanel')\n ], PrimaryColsPanel.prototype, \"primaryColsHeaderPanel\", void 0);\n __decorate([\n RefSelector('primaryColsListPanel')\n ], PrimaryColsPanel.prototype, \"primaryColsListPanel\", void 0);\n return PrimaryColsPanel;\n}(Component));\nexport { PrimaryColsPanel };\n","var __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};\nimport { Autowired, Component, PostConstruct } from \"@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 Autowired('horizontalResizeService')\n ], HorizontalResizeComp.prototype, \"horizontalResizeService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], HorizontalResizeComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('eventService')\n ], HorizontalResizeComp.prototype, \"eventService\", void 0);\n __decorate([\n PostConstruct\n ], HorizontalResizeComp.prototype, \"postConstruct\", null);\n return HorizontalResizeComp;\n}(Component));\nexport { HorizontalResizeComp };\n","var __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};\nimport { Autowired, Component, PostConstruct, RefSelector, _ } from \"@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 _.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 Autowired(\"gridOptionsWrapper\")\n ], SideBarButtonsComp.prototype, \"gridOptionsWrapper\", void 0);\n return SideBarButtonsComp;\n}(Component));\nexport { 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', _.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 Autowired(\"gridOptionsWrapper\")\n ], SideBarButtonComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n RefSelector('eToggleButton')\n ], SideBarButtonComp.prototype, \"eToggleButton\", void 0);\n __decorate([\n PostConstruct\n ], SideBarButtonComp.prototype, \"postConstruct\", null);\n return SideBarButtonComp;\n}(Component));\n","var __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};\nimport { Autowired, Component, PostConstruct } from \"@ag-grid-community/core\";\nimport { HorizontalResizeComp } from \"./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();\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 Autowired(\"userComponentFactory\")\n ], ToolPanelWrapper.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired(\"gridOptionsWrapper\")\n ], ToolPanelWrapper.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], ToolPanelWrapper.prototype, \"setupResize\", null);\n return ToolPanelWrapper;\n}(Component));\nexport { ToolPanelWrapper };\n","var __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};\nimport { _, Autowired, Component, Events, ModuleNames, ModuleRegistry, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { SideBarButtonsComp } from \"./sideBarButtonsComp\";\nimport { ToolPanelWrapper } from \"./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.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 _.addOrRemoveCssClass(eGui, 'ag-side-bar-left', isLeft);\n _.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 = !ModuleRegistry.assertRegistered(ModuleNames.ColumnToolPanelModule, 'Column Tool Panel');\n if (moduleMissing) {\n return;\n }\n }\n if (def.toolPanel === 'agFiltersToolPanel') {\n var moduleMissing = !ModuleRegistry.assertRegistered(ModuleNames.FiltersToolPanelModule, 'Filters Tool Panel');\n if (moduleMissing) {\n return;\n }\n }\n var wrapper = new 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: 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 _.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 Autowired(\"eventService\")\n ], SideBarComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired(\"gridOptionsWrapper\")\n ], SideBarComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n RefSelector('sideBarButtons')\n ], SideBarComp.prototype, \"sideBarButtonsComp\", void 0);\n __decorate([\n PostConstruct\n ], SideBarComp.prototype, \"postConstruct\", null);\n return SideBarComp;\n}(Component));\nexport { SideBarComp };\n","var __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};\nimport { _, Autowired, Bean, OriginalColumnGroup } from \"@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 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 OriginalColumnGroup) {\n if (node.isPadding()) {\n // skip over padding groups\n leafPathTree = childDef;\n }\n else {\n var groupDef = _.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 = _.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 = _.includes(existingChildIds, _this.getId(groupToAdd));\n var lastChild = _.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 = _.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 Autowired('columnController')\n ], ToolPanelColDefService.prototype, \"columnController\", void 0);\n ToolPanelColDefService = __decorate([\n Bean('toolPanelColDefService')\n ], ToolPanelColDefService);\n return ToolPanelColDefService;\n}());\nexport { ToolPanelColDefService };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { HorizontalResizeComp } from \"./sideBar/horizontalResizeComp\";\nimport { SideBarComp } from \"./sideBar/sideBarComp\";\nimport { SideBarButtonsComp } from \"./sideBar/sideBarButtonsComp\";\nimport { ToolPanelColDefService } from \"./sideBar/common/toolPanelColDefService\";\nexport var SideBarModule = {\n moduleName: ModuleNames.SideBarModule,\n beans: [ToolPanelColDefService],\n agStackComponents: [\n { componentName: 'AgHorizontalResize', componentClass: HorizontalResizeComp },\n { componentName: 'AgSideBar', componentClass: SideBarComp },\n { componentName: 'AgSideBarButtons', componentClass: SideBarButtonsComp },\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { PrimaryColsHeaderPanel } from \"./columnToolPanel/primaryColsHeaderPanel\";\nimport { PrimaryColsListPanel } from \"./columnToolPanel/primaryColsListPanel\";\nimport { ColumnToolPanel } from \"./columnToolPanel/columnToolPanel\";\nimport { PrimaryColsPanel } from \"./columnToolPanel/primaryColsPanel\";\nimport { RowGroupingModule } from \"@ag-grid-enterprise/row-grouping\";\nimport { SideBarModule } from \"@ag-grid-enterprise/side-bar\";\nexport var ColumnsToolPanelModule = {\n moduleName: ModuleNames.ColumnToolPanelModule,\n beans: [],\n agStackComponents: [\n { componentName: 'AgPrimaryColsHeader', componentClass: PrimaryColsHeaderPanel },\n { componentName: 'AgPrimaryColsList', componentClass: PrimaryColsListPanel },\n { componentName: 'AgPrimaryCols', componentClass: PrimaryColsPanel }\n ],\n userComponents: [\n { componentName: 'agColumnsToolPanel', componentClass: ColumnToolPanel },\n ],\n dependantModules: [\n EnterpriseCoreModule,\n RowGroupingModule,\n SideBarModule\n ]\n};\n","var 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};\nexport default coreFactory;\n","var 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};\nexport default contentTypeFactory;\n","import contentTypeFactory from './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(contentTypeFactory.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};\nexport default contentTypesFactory;\n","var 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};\nexport default colorScheme;\n","import { _ } from '@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 = _.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};\nexport default fontScheme;\n","import { _ } from '@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: [_.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};\nexport default formatScheme;\n","import colorScheme from './colorScheme';\nimport fontScheme from './fontScheme';\nimport formatScheme from './formatScheme';\nvar themeElements = {\n getTemplate: function () {\n return {\n name: \"a:themeElements\",\n children: [\n colorScheme.getTemplate(),\n fontScheme.getTemplate(),\n formatScheme.getTemplate()\n ]\n };\n }\n};\nexport default themeElements;\n","import themeElements from './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.getTemplate(),\n {\n name: 'a:objectDefaults'\n },\n {\n name: 'a:extraClrSchemeLst'\n }\n ]\n };\n }\n};\nexport default officeTheme;\n","import { _ } from '@ag-grid-community/core';\nvar buildSharedString = function (textNode) { return ({\n name: 'si',\n children: [{\n name: 't',\n textNode: _.utf8_encode(_.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};\nexport default sharedStrings;\n","var 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};\nexport default numberFormatFactory;\nexport var 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","import numberFormatFactory from './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(numberFormatFactory.getTemplate)\n };\n }\n};\nexport default numberFormatsFactory;\n","var 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};\nexport default fontFactory;\nexport var 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","import fontFactory from './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(fontFactory.getTemplate)\n };\n }\n};\nexport default fontsFactory;\n","var 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};\nexport default fillFactory;\n","import fillFactory from './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(fillFactory.getTemplate)\n };\n }\n};\nexport default fillsFactory;\n","import { convertLegacyColor } from './stylesheet';\nvar getBorderColor = function (color) {\n return {\n name: 'color',\n properties: {\n rawMap: {\n rgb: 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};\nexport 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'];\nexport var 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","import borderFactory from './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(borderFactory.getTemplate)\n };\n }\n};\nexport default bordersFactory;\n","var 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};\nexport default alignmentFactory;\n","var 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};\nexport default protectionFactory;\n","import alignmentFactory from './alignment';\nimport protectionFactory from './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(alignmentFactory.getTemplate(alignment));\n }\n if (protection) {\n children.push(protectionFactory.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};\nexport default xfFactory;\n","import xfFactory from './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(xfFactory.getTemplate)\n };\n }\n};\nexport default cellStylesXfsFactory;\n","import xfFactory from './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(xfFactory.getTemplate)\n };\n }\n};\nexport default cellXfsFactory;\n","var 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};\nexport default borderFactory;\n","import cellStyleFactory from './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(cellStyleFactory.getTemplate)\n };\n }\n};\nexport default cellStylesFactory;\n","var 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};\nexport default sheetFactory;\n","import sheetFactory from './sheet';\nvar sheetsFactory = {\n getTemplate: function (names) {\n return {\n name: \"sheets\",\n children: names.map(sheetFactory.getTemplate)\n };\n }\n};\nexport default sheetsFactory;\n","import sheetsFactory from './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: [sheetsFactory.getTemplate(names)]\n };\n }\n};\nexport default workbookFactory;\n","var getExcelCellWidth = function (width) { return Math.max(Math.ceil((width - 12) / 7 + 1), 10); };\nvar columnFactory = {\n getTemplate: function (config) {\n var min = config.min, max = config.max, s = config.s, _a = config.width, width = _a === void 0 ? 10 : _a, hidden = config.hidden, bestFit = config.bestFit;\n var excelWidth = getExcelCellWidth(width);\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: excelWidth != 10 ? '1' : '0'\n }\n }\n };\n }\n};\nexport default columnFactory;\n","import { _ } from '@ag-grid-community/core';\nimport { getStyleId } from './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 ? 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: _.escape(_.utf8_encode(value))\n }]\n }];\n }\n else {\n children = [{\n name: 'v',\n textNode: value\n }];\n }\n return _.assign({}, obj, { children: children });\n }\n};\nexport default cellFactory;\n","var __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};\nimport { getExcelColumnName } from './worksheet';\nimport cellFactory from './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: \"\" + 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(cellFactory.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};\nexport default rowFactory;\n","var mergeCell = {\n getTemplate: function (ref) {\n return {\n name: 'mergeCell',\n properties: {\n rawMap: {\n ref: ref\n }\n }\n };\n }\n};\nexport default mergeCell;\n","import columnFactory from './column';\nimport rowFactory from './row';\nimport mergeCell from './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 = getExcelColumnName(min);\n var outputRow = rowIdx + 1;\n if (currentCell.mergeAcross) {\n merges += currentCell.mergeAcross;\n var end = 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};\nexport var 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 getExcelColumnName(pos - 1) + 'Z';\n }\n if (pos < tableWidth) {\n return fromCharCode(startCode + pos - 1) + fromCharCode(startCode + tableIdx - 1);\n }\n return 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(columnFactory.getTemplate)\n });\n }\n if (rows.length) {\n children.push({\n name: 'sheetData',\n children: rows.map(rowFactory.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.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};\nexport default worksheetFactory;\n","var 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};\nexport default relationshipFactory;\n","import relationshipFactory from './relationship';\nvar relationshipsFactory = {\n getTemplate: function (c) {\n var children = c.map(relationshipFactory.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};\nexport default relationshipsFactory;\n","var __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};\nimport { Autowired, Bean } from '@ag-grid-community/core';\nimport coreFactory from './files/ooxml/core';\nimport contentTypesFactory from './files/ooxml/contentTypes';\nimport officeThemeFactory from './files/ooxml/themes/office';\nimport sharedStringsFactory from './files/ooxml/sharedStrings';\nimport stylesheetFactory, { registerStyles } from './files/ooxml/styles/stylesheet';\nimport workbookFactory from './files/ooxml/workbook';\nimport worksheetFactory from './files/ooxml/worksheet';\nimport relationshipsFactory from './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(sharedStringsFactory.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 registerStyles(styles);\n return this.createWorksheet(worksheets);\n };\n ExcelXlsxFactory.prototype.createCore = function () {\n return this.createXmlPart(coreFactory.getTemplate());\n };\n ExcelXlsxFactory.prototype.createContentTypes = function () {\n return this.createXmlPart(contentTypesFactory.getTemplate());\n };\n ExcelXlsxFactory.prototype.createRels = function () {\n var rs = relationshipsFactory.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(stylesheetFactory.getTemplate());\n };\n ExcelXlsxFactory.prototype.createTheme = function () {\n return this.createXmlPart(officeThemeFactory.getTemplate());\n };\n ExcelXlsxFactory.prototype.createWorkbook = function () {\n return this.createXmlPart(workbookFactory.getTemplate(this.sheetNames));\n };\n ExcelXlsxFactory.prototype.createWorkbookRels = function () {\n var rs = relationshipsFactory.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(worksheetFactory.getTemplate(worksheets[0]));\n };\n __decorate([\n Autowired('xmlFactory')\n ], ExcelXlsxFactory.prototype, \"xmlFactory\", void 0);\n ExcelXlsxFactory = __decorate([\n Bean('excelXlsxFactory')\n ], ExcelXlsxFactory);\n return ExcelXlsxFactory;\n}());\nexport { ExcelXlsxFactory };\n","var 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};\nexport default workbook;\n","var 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};\nexport default excelWorkbook;\n","var 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};\nexport default column;\n","var 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};\nexport default cell;\n","import cell from './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.getTemplate(it); })\n };\n }\n};\nexport default row;\n","import column from './column';\nimport row from './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.getTemplate(it); });\n var r = rows.map(function (it) { return row.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};\nexport default worksheet;\n","var 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};\nexport default documentProperties;\n","var 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};\nexport default alignment;\n","var 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};\nexport default borders;\n","var 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};\nexport default font;\n","var 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};\nexport default interior;\n","var 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};\nexport default protection;\n","var 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};\nexport default numberFormat;\n","var 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};\nexport default style;\n","var __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};\nimport { _ } from '@ag-grid-community/core';\nimport { Bean, Autowired } from '@ag-grid-community/core';\nimport workbook from './files/xml/workbook';\nimport excelWorkbook from './files/xml/excelWorkbook';\nimport worksheet from './files/xml/worksheet';\nimport documentProperties from './files/xml/documentProperties';\nimport alignment from './files/xml/styles/alignment';\nimport borders from './files/xml/styles/borders';\nimport font from './files/xml/styles/font';\nimport interior from './files/xml/styles/interior';\nimport protection from './files/xml/styles/protection';\nimport numberFormat from './files/xml/styles/numberFormat';\nimport style from './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.getTemplate();\n var eWorkbook = excelWorkbook.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.getTemplate(it); }));\n return _.assign({}, workbook.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 = _.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 _.assign({}, style.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,\n borders: borders,\n font: font,\n interior: interior,\n numberFormat: numberFormat,\n protection: protection\n };\n return children.concat(options[property].getTemplate(styleProperties));\n };\n };\n __decorate([\n Autowired('xmlFactory')\n ], ExcelXmlFactory.prototype, \"xmlFactory\", void 0);\n ExcelXmlFactory = __decorate([\n Bean('excelXmlFactory')\n ], ExcelXmlFactory);\n return ExcelXmlFactory;\n}());\nexport { ExcelXmlFactory };\n","var __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};\nimport { Constants, _ } from '@ag-grid-community/core';\nimport { RowType, BaseGridSerializingSession } from \"@ag-grid-community/csv-export\";\nvar ExcelXmlSerializingSession = /** @class */ (function (_super) {\n __extends(ExcelXmlSerializingSession, _super);\n function ExcelXmlSerializingSession(config) {\n var _this = _super.call(this, {\n columnController: config.columnController,\n valueService: config.valueService,\n gridOptionsWrapper: config.gridOptionsWrapper,\n processCellCallback: config.processCellCallback,\n processHeaderCallback: config.processHeaderCallback,\n cellAndHeaderEscaper: function (raw) { return raw; }\n }) || this;\n _this.mixedStyles = {};\n _this.mixedStyleCounter = 0;\n _this.rows = [];\n var sheetName = config.sheetName, excelFactory = config.excelFactory, baseExcelStyles = config.baseExcelStyles, styleLinker = config.styleLinker, suppressTextAsCDATA = config.suppressTextAsCDATA, rowHeight = config.rowHeight, headerRowHeight = config.headerRowHeight;\n _this.sheetName = sheetName;\n _this.excelFactory = excelFactory;\n _this.baseExcelStyles = baseExcelStyles || [];\n _this.styleLinker = styleLinker;\n _this.suppressTextAsCDATA = suppressTextAsCDATA;\n _this.stylesByIds = {};\n _this.rowHeight = rowHeight;\n _this.headerRowHeight = headerRowHeight;\n _this.baseExcelStyles.forEach(function (it) {\n _this.stylesByIds[it.id] = it;\n });\n _this.excelStyles = __spreadArrays(_this.baseExcelStyles);\n return _this;\n }\n ExcelXmlSerializingSession.prototype.addCustomHeader = function (customHeader) {\n this.customHeader = customHeader;\n };\n ExcelXmlSerializingSession.prototype.addCustomFooter = function (customFooter) {\n this.customFooter = customFooter;\n };\n ExcelXmlSerializingSession.prototype.prepare = function (columnsToExport) {\n this.cols = columnsToExport.map(function (it) {\n // tslint:disable-next-line\n it.getColDef().cellStyle;\n return {\n width: it.getActualWidth()\n };\n });\n };\n ExcelXmlSerializingSession.prototype.onNewHeaderGroupingRow = function () {\n var currentCells = [];\n var that = this;\n this.rows.push({\n cells: currentCells,\n height: this.headerRowHeight\n });\n return {\n onColumn: function (header, index, span) {\n var styleIds = that.styleLinker(RowType.HEADER_GROUPING, 1, index, \"grouping-\" + header, undefined, undefined);\n currentCells.push(that.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.headerRowHeight);\n };\n ExcelXmlSerializingSession.prototype.onNewBodyRow = function () {\n return this.onNewRow(this.onNewBodyColumn, this.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 var that = this;\n return function (column, index, node) {\n var nameForCol = _this.extractHeaderValue(column);\n var styleIds = that.styleLinker(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 function join(header, body, footer) {\n var all = [];\n if (header) {\n header.forEach(function (rowArray) { return all.push({ cells: rowArray }); });\n }\n body.forEach(function (it) { return all.push(it); });\n if (footer) {\n footer.forEach(function (rowArray) { return all.push({ cells: rowArray }); });\n }\n return all;\n }\n var data = [{\n name: this.sheetName,\n table: {\n columns: this.cols,\n rows: join(this.customHeader, this.rows, this.customFooter)\n }\n }];\n return this.excelFactory.createExcel(this.excelStyles, data, []);\n };\n ExcelXmlSerializingSession.prototype.onNewBodyColumn = function (rowIndex, currentCells) {\n var _this = this;\n var that = this;\n return function (column, index, node) {\n var valueForCell = _this.extractRowCellValue(column, index, Constants.EXPORT_TYPE_EXCEL, node);\n var styleIds = that.styleLinker(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 var type = _.isNumeric(valueForCell) ? 'Number' : 'String';\n currentCells.push(that.createCell(excelStyleId, type, valueForCell));\n };\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 _.mergeDeep(resultantStyle, _.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) { return _this.suppressTextAsCDATA ? _.escape(val) : \"\"; };\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 return ExcelXmlSerializingSession;\n}(BaseGridSerializingSession));\nexport { ExcelXmlSerializingSession };\n","var __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})();\nimport { Constants, _ } from '@ag-grid-community/core';\nimport { ExcelXmlSerializingSession } from './excelXmlSerializingSession';\nimport { RowType } from \"@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 currentCells = [];\n var that = this;\n this.rows.push({\n cells: currentCells,\n height: this.headerRowHeight\n });\n return {\n onColumn: function (header, index, span) {\n var styleIds = that.styleLinker(RowType.HEADER_GROUPING, 1, index, \"grouping-\" + header, undefined, undefined);\n currentCells.push(that.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 var that = this;\n return function (column, index, node) {\n var nameForCol = _this.extractHeaderValue(column);\n var styleIds = that.styleLinker(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.parse = function () {\n function join(header, body, footer) {\n var all = [];\n if (header) {\n header.forEach(function (rowArray) { return all.push({ cells: rowArray }); });\n }\n body.forEach(function (it) { return all.push(it); });\n if (footer) {\n footer.forEach(function (rowArray) { return all.push({ cells: rowArray }); });\n }\n return all;\n }\n var data = [{\n name: this.sheetName,\n table: {\n columns: this.cols,\n rows: join(this.customHeader, this.rows, this.customFooter)\n }\n }];\n return this.excelFactory.createExcel(this.excelStyles, data, this.stringList);\n };\n ExcelXlsxSerializingSession.prototype.onNewBodyColumn = function (rowIndex, currentCells) {\n var _this = this;\n var that = this;\n return function (column, index, node) {\n var valueForCell = _this.extractRowCellValue(column, index, Constants.EXPORT_TYPE_EXCEL, node);\n var styleIds = that.styleLinker(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 var type = _.isNumeric(valueForCell) ? 'n' : 's';\n currentCells.push(that.createCell(excelStyleId, type, valueForCell));\n };\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));\nexport { ExcelXlsxSerializingSession };\n","var __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};\nimport { Autowired, Bean, PostConstruct, _ } from '@ag-grid-community/core';\nimport { ExcelXmlSerializingSession } from './excelXmlSerializingSession';\nimport { ExcelXlsxSerializingSession } from './excelXlsxSerializingSession';\nimport { BaseCreator, RowType } from \"@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 if (params && params.exportMode) {\n this.setExportMode(params.exportMode);\n }\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 processCellCallback = params.processCellCallback, processHeaderCallback = params.processHeaderCallback, processGroupHeaderCallback = params.processGroupHeaderCallback, suppressTextAsCDATA = params.suppressTextAsCDATA, rowHeight = params.rowHeight, headerRowHeight = params.headerRowHeight;\n var isXlsx = this.getExportMode() === 'xlsx';\n var excelFactory = isXlsx ? this.xlsxFactory : this.excelXmlFactory;\n var sheetName = 'ag-grid';\n if (_.exists(params.sheetName)) {\n sheetName = _.utf8_encode(params.sheetName.toString().substr(0, 31));\n }\n var config = {\n columnController: columnController,\n valueService: valueService,\n gridOptionsWrapper: gridOptionsWrapper,\n processCellCallback: processCellCallback,\n processHeaderCallback: processHeaderCallback,\n processGroupHeaderCallback: processGroupHeaderCallback,\n rowHeight: rowHeight,\n headerRowHeight: headerRowHeight || rowHeight,\n sheetName: sheetName,\n excelFactory: excelFactory,\n baseExcelStyles: this.gridOptions.excelStyles || undefined,\n styleLinker: this.styleLinker.bind(this),\n suppressTextAsCDATA: suppressTextAsCDATA || false\n };\n return new (isXlsx ? ExcelXlsxSerializingSession : ExcelXmlSerializingSession)(config);\n };\n ExcelCreator.prototype.styleLinker = function (rowType, rowIndex, colIndex, value, column, node) {\n if ((rowType === RowType.HEADER) || (rowType === 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 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 Autowired('excelXmlFactory')\n ], ExcelCreator.prototype, \"excelXmlFactory\", void 0);\n __decorate([\n Autowired('excelXlsxFactory')\n ], ExcelCreator.prototype, \"xlsxFactory\", void 0);\n __decorate([\n Autowired('columnController')\n ], ExcelCreator.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('valueService')\n ], ExcelCreator.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('gridOptions')\n ], ExcelCreator.prototype, \"gridOptions\", void 0);\n __decorate([\n Autowired('stylingService')\n ], ExcelCreator.prototype, \"stylingService\", void 0);\n __decorate([\n Autowired('downloader')\n ], ExcelCreator.prototype, \"downloader\", void 0);\n __decorate([\n Autowired('gridSerializer')\n ], ExcelCreator.prototype, \"gridSerializer\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ExcelCreator.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('zipContainer')\n ], ExcelCreator.prototype, \"zipContainer\", void 0);\n __decorate([\n PostConstruct\n ], ExcelCreator.prototype, \"postConstruct\", null);\n ExcelCreator = __decorate([\n Bean('excelCreator')\n ], ExcelCreator);\n return ExcelCreator;\n}(BaseCreator));\nexport { ExcelCreator };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { ExcelXlsxFactory } from \"./excelExport/excelXlsxFactory\";\nimport { ExcelXmlFactory } from \"./excelExport/excelXmlFactory\";\nimport { ExcelCreator } from \"./excelExport/excelCreator\";\nimport { CsvCreator, Downloader, GridSerializer, XmlFactory, ZipContainer } from \"@ag-grid-community/csv-export\";\nimport { CsvExportModule } from \"@ag-grid-community/csv-export\";\nexport var ExcelExportModule = {\n moduleName: ModuleNames.ExcelExportModule,\n beans: [\n // beans in this module\n ExcelCreator, ExcelXmlFactory, ExcelXlsxFactory,\n // these beans are part of CSV Export module\n GridSerializer, ZipContainer, XmlFactory, Downloader, CsvCreator\n ],\n dependantModules: [\n CsvExportModule,\n EnterpriseCoreModule\n ]\n};\n","var __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};\nimport { Autowired, Column, Component, Events, RefSelector, PostConstruct, _ } from \"@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 = _.createIconNoSpan('columnSelectOpen', this.gridOptionsWrapper);\n this.eExpandUnchecked = _.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, Events.EVENT_FILTER_OPENED, this.onFilterOpened.bind(this));\n this.addInIcon('filter', this.eFilterIcon, this.column);\n _.addOrRemoveCssClass(this.eFilterIcon, 'ag-hidden', !this.isFilterActive());\n _.addCssClass(this.eExpandChecked, 'ag-hidden');\n if (this.hideHeader) {\n _.addOrRemoveCssClass(this.eFilterToolPanelHeader, 'ag-hidden', true);\n }\n this.addDestroyableEventListener(this.column, 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 = _.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 _.addOrRemoveCssClass(this.eFilterIcon, 'ag-hidden', !this.isFilterActive());\n this.dispatchEvent({ type: 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 = _.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 _.setDisplayed(this.eExpandChecked, true);\n _.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 _.setDisplayed(this.eExpandChecked, false);\n _.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 RefSelector('eFilterToolPanelHeader')\n ], ToolPanelFilterComp.prototype, \"eFilterToolPanelHeader\", void 0);\n __decorate([\n RefSelector('eFilterName')\n ], ToolPanelFilterComp.prototype, \"eFilterName\", void 0);\n __decorate([\n RefSelector('agFilterToolPanelBody')\n ], ToolPanelFilterComp.prototype, \"agFilterToolPanelBody\", void 0);\n __decorate([\n RefSelector('eFilterIcon')\n ], ToolPanelFilterComp.prototype, \"eFilterIcon\", void 0);\n __decorate([\n RefSelector('eExpand')\n ], ToolPanelFilterComp.prototype, \"eExpand\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ToolPanelFilterComp.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('filterManager')\n ], ToolPanelFilterComp.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('eventService')\n ], ToolPanelFilterComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ToolPanelFilterComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], ToolPanelFilterComp.prototype, \"columnController\", void 0);\n __decorate([\n PostConstruct\n ], ToolPanelFilterComp.prototype, \"postConstruct\", null);\n return ToolPanelFilterComp;\n}(Component));\nexport { ToolPanelFilterComp };\n","var __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};\nimport { _, Autowired, Column, Component, Events, OriginalColumnGroup, PostConstruct, PreConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { ToolPanelFilterComp } from \"./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 _.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 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 _.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) {\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 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, Column.EVENT_FILTER_CHANGED, function () {\n _.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, Events.EVENT_FILTER_OPENED, this.onFilterOpened.bind(this));\n this.addDestroyableEventListener(column_1, Column.EVENT_FILTER_CHANGED, function () {\n _.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 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 _.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 RefSelector('filterGroupComp')\n ], ToolPanelFilterGroupComp.prototype, \"filterGroupComp\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ToolPanelFilterGroupComp.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('filterManager')\n ], ToolPanelFilterGroupComp.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('eventService')\n ], ToolPanelFilterGroupComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ToolPanelFilterGroupComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], ToolPanelFilterGroupComp.prototype, \"columnController\", void 0);\n __decorate([\n PreConstruct\n ], ToolPanelFilterGroupComp.prototype, \"preConstruct\", null);\n __decorate([\n PostConstruct\n ], ToolPanelFilterGroupComp.prototype, \"init\", null);\n return ToolPanelFilterGroupComp;\n}(Component));\nexport { ToolPanelFilterGroupComp };\n","var __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};\nimport { _, Autowired, Component, Events, OriginalColumnGroup } from \"@ag-grid-community/core\";\nimport { ToolPanelFilterComp } from \"./toolPanelFilterComp\";\nimport { ToolPanelFilterGroupComp } from \"./toolPanelFilterGroupComp\";\nimport { EXPAND_STATE } from \"./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 _.mergeDeep(defaultParams, params);\n this.params = defaultParams;\n if (!this.params.suppressSyncLayoutWithGrid) {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_MOVED, function () { return _this.onColumnsChanged(); });\n }\n this.addDestroyableEventListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, function () { return _this.onColumnsChanged(); });\n this.addDestroyableEventListener(this.eventService, 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 (_.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 (_.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 _.flatten(tree.map(function (child) {\n if (child instanceof OriginalColumnGroup) {\n return _.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(hideFilterCompHeader);\n _this.getContext().wireBean(filterComp);\n filterComp.setColumn(column);\n if (depth > 0) {\n return filterComp;\n }\n var filterGroupComp = new 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 = _.flatten(this.recursivelyAddComps(columnGroup.getChildren(), newDepth));\n if (columnGroup.isPadding())\n return childFilterComps;\n var filterGroupComp = new 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 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 || _.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) {\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) {\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 || _.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) {\n updateExpandCounts(child);\n }\n });\n };\n this.filterGroupComps.forEach(updateExpandCounts);\n var state;\n if (expandedCount > 0 && notExpandedCount > 0) {\n state = EXPAND_STATE.INDETERMINATE;\n }\n else if (notExpandedCount > 0) {\n state = EXPAND_STATE.COLLAPSED;\n }\n else {\n state = 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 !_.exists(searchFilter) || groupName.toLowerCase().includes(searchFilter);\n };\n var recursivelySearch = function (filterItem, parentPasses) {\n if (!(filterItem instanceof 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 (!_.containsClass(filterGroup.getGui(), 'ag-hidden')) {\n firstVisible = idx;\n lastVisible = idx;\n }\n }\n else if (!_.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 _.removeCssClass(filterGroup.getGui(), 'ag-first-group-visible');\n _.removeCssClass(filterGroup.getGui(), 'ag-last-group-visible');\n if (idx === firstIdx) {\n _.addCssClass(filterGroup.getGui(), 'ag-first-group-visible');\n }\n if (idx === lastIdx) {\n _.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 _.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 Autowired(\"gridApi\")\n ], FiltersToolPanelListPanel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired(\"eventService\")\n ], FiltersToolPanelListPanel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('toolPanelColDefService')\n ], FiltersToolPanelListPanel.prototype, \"toolPanelColDefService\", void 0);\n __decorate([\n Autowired('columnController')\n ], FiltersToolPanelListPanel.prototype, \"columnController\", void 0);\n return FiltersToolPanelListPanel;\n}(Component));\nexport { FiltersToolPanelListPanel };\n","var __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};\nimport { _, Autowired, Component, RefSelector } from \"@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 _.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 RefSelector('filtersToolPanelHeaderPanel')\n ], FiltersToolPanel.prototype, \"filtersToolPanelHeaderPanel\", void 0);\n __decorate([\n RefSelector('filtersToolPanelListPanel')\n ], FiltersToolPanel.prototype, \"filtersToolPanelListPanel\", void 0);\n __decorate([\n Autowired(\"gridApi\")\n ], FiltersToolPanel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired(\"eventService\")\n ], FiltersToolPanel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnController')\n ], FiltersToolPanel.prototype, \"columnController\", void 0);\n return FiltersToolPanel;\n}(Component));\nexport { FiltersToolPanel };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { FiltersToolPanelHeaderPanel } from \"./filterToolPanel/filtersToolPanelHeaderPanel\";\nimport { FiltersToolPanelListPanel } from \"./filterToolPanel/filtersToolPanelListPanel\";\nimport { FiltersToolPanel } from \"./filterToolPanel/filtersToolPanel\";\nimport { SideBarModule } from \"@ag-grid-enterprise/side-bar\";\nexport var FiltersToolPanelModule = {\n moduleName: ModuleNames.FiltersToolPanelModule,\n beans: [],\n agStackComponents: [\n { componentName: 'AgFiltersToolPanelHeader', componentClass: FiltersToolPanelHeaderPanel },\n { componentName: 'AgFiltersToolPanelList', componentClass: FiltersToolPanelListPanel }\n ],\n userComponents: [\n { componentName: 'agFiltersToolPanel', componentClass: FiltersToolPanel },\n ],\n dependantModules: [\n SideBarModule,\n EnterpriseCoreModule\n ]\n};\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 */\nexport function 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}\n// Custom `Array.find` implementation for legacy browsers.\nexport function 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}\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 */\nexport function numericExtent(values) {\n var calculatedExtent = extent(values);\n if (typeof calculatedExtent === \"undefined\") {\n return undefined;\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}\nexport function sumPositiveValues(array) {\n return array.reduce(function (total, value) { return value > 0 ? total + value : total; }, 0);\n}\n","var __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};\nimport { _, Autowired, BeanStub, ModuleNames, ModuleRegistry, Optional } from \"@ag-grid-community/core\";\nimport { ChartModel } from \"./chartModel\";\nimport { find } from \"../../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 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[ChartModel.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 data[col.getId()] = _this.valueService.getValue(col, rowNode);\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 = _.values(groupsToRemove);\n extractedRowData = extractedRowData.filter(function (value, index) { return !_.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 = _.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 (ModuleRegistry.assertRegistered(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 Autowired('rowModel')\n ], ChartDatasource.prototype, \"gridRowModel\", void 0);\n __decorate([\n Autowired('valueService')\n ], ChartDatasource.prototype, \"valueService\", void 0);\n __decorate([\n Optional('aggregationStage')\n ], ChartDatasource.prototype, \"aggregationStage\", void 0);\n __decorate([\n Autowired('columnController')\n ], ChartDatasource.prototype, \"columnController\", void 0);\n return ChartDatasource;\n}(BeanStub));\nexport { ChartDatasource };\n","import { Matrix } from \"./matrix\";\nexport var PointerEvents;\n(function (PointerEvents) {\n PointerEvents[PointerEvents[\"All\"] = 0] = \"All\";\n PointerEvents[PointerEvents[\"None\"] = 1] = \"None\";\n})(PointerEvents || (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();\n this.inverseMatrix = new 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 /**\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.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.getBBox = function () { return; };\n Node.prototype.getBBoxCenter = function () {\n var bbox = this.getBBox && this.getBBox();\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.getBBoxCenter();\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}());\nexport { Node };\n","var __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};\nimport { _, Autowired, BeanStub, CellRangeType, ChartType, PostConstruct } from \"@ag-grid-community/core\";\nimport { ChartDatasource } from \"./chartDatasource\";\nvar ChartModel = /** @class */ (function (_super) {\n __extends(ChartModel, _super);\n function ChartModel(params) {\n var _this = _super.call(this) || this;\n _this.dimensionColState = [];\n _this.valueColState = [];\n _this.initialising = true;\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.getChartProxy = function () { return _this.chartProxy; };\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.cellRanges; };\n _this.getChartType = function () { return _this.chartType; };\n _this.getActivePalette = function () { return _this.activePalette; };\n _this.getPalettes = function () { return _this.palettes; };\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.getAllColumnsFromRanges = function () { return _.flatten(_this.cellRanges.map(function (range) { return range.columns; })); };\n _this.getColDisplayName = function (col) { return _this.columnController.getDisplayNameForColumn(col, 'chart'); };\n _this.isMultiCategoryChart = function () { return !_.includes([ChartType.Pie, ChartType.Doughnut, ChartType.Scatter, ChartType.Bubble], _this.chartType); };\n _this.generateId = function () { return 'id-' + Math.random().toString(36).substr(2, 16); };\n _this.pivotChart = params.pivotChart;\n _this.chartType = params.chartType;\n _this.aggFunc = params.aggFunc;\n _this.cellRanges = params.cellRanges;\n _this.palettes = params.palettes;\n _this.activePalette = params.activePalette;\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 ChartModel.prototype.init = function () {\n this.datasource = this.wireBean(new ChartDatasource());\n // use first range as a reference range to be used after removing all cols (via menu) so we can re-add later\n this.referenceCellRange = this.cellRanges[0];\n };\n ChartModel.prototype.updateData = function () {\n var _a = this.getRowIndexes(), startRow = _a.startRow, endRow = _a.endRow;\n var selectedDimension = this.getSelectedDimension();\n var selectedValueCols = this.getSelectedValueCols();\n this.grouping = this.isGrouping();\n var params = {\n aggFunc: this.aggFunc,\n dimensionCols: [selectedDimension],\n grouping: this.grouping,\n pivoting: this.isPivotActive(),\n multiCategories: this.isMultiCategoryChart(),\n valueCols: selectedValueCols,\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 ChartModel.prototype.resetColumnState = function () {\n var _this = this;\n var _a = this.getAllChartColumns(), dimensionCols = _a.dimensionCols, valueCols = _a.valueCols;\n var allCols = this.pivotChart ? this.columnController.getAllDisplayedColumns() : this.getAllColumnsFromRanges();\n this.valueColState = valueCols.map(function (column) {\n return {\n column: column,\n colId: column.getColId(),\n displayName: _this.getColDisplayName(column),\n selected: allCols.indexOf(column) > -1\n };\n });\n this.dimensionColState = dimensionCols.map(function (column) {\n return {\n column: column,\n colId: column.getColId(),\n displayName: _this.getColDisplayName(column),\n selected: false\n };\n });\n var dimensionsInCellRange = dimensionCols.filter(function (col) { return allCols.indexOf(col) > -1; });\n if (dimensionsInCellRange.length > 0) {\n // select the first dimension from the range\n var selectedDimensionId_1 = dimensionsInCellRange[0].getColId();\n this.dimensionColState.forEach(function (cs) { return cs.selected = cs.colId === selectedDimensionId_1; });\n }\n // if no dimensions in range select the default\n var defaultCategory = {\n colId: ChartModel.DEFAULT_CATEGORY,\n displayName: '(None)',\n selected: dimensionsInCellRange.length === 0\n };\n this.dimensionColState.unshift(defaultCategory);\n };\n ChartModel.prototype.updateColumnState = function (updatedCol) {\n var idsMatch = function (cs) { return cs.colId === updatedCol.colId; };\n var isDimensionCol = this.dimensionColState.filter(idsMatch).length > 0;\n var isValueCol = this.valueColState.filter(idsMatch).length > 0;\n if (isDimensionCol) {\n // only one dimension should be selected\n this.dimensionColState.forEach(function (cs) { return cs.selected = idsMatch(cs); });\n }\n else if (isValueCol) {\n // just update the selected value on the supplied value column\n this.valueColState.forEach(function (cs) { return cs.selected = idsMatch(cs) ? updatedCol.selected : cs.selected; });\n }\n };\n ChartModel.prototype.updateCellRanges = function (updatedCol) {\n var _a = this.getAllChartColumns(), dimensionCols = _a.dimensionCols, valueCols = _a.valueCols;\n var lastRange = _.last(this.cellRanges);\n if (lastRange) {\n // update the reference range\n this.referenceCellRange = lastRange;\n if (updatedCol) {\n var updatingStartCol = lastRange.columns[0] === updatedCol.column;\n this.referenceCellRange.startColumn = updatingStartCol ? lastRange.columns[1] : lastRange.columns[0];\n }\n }\n var allColsFromRanges = this.getAllColumnsFromRanges();\n // clear ranges\n this.cellRanges = [];\n var dimensionColsInRange = dimensionCols.filter(function (col) { return allColsFromRanges.indexOf(col) > -1; });\n if (this.initialising) {\n // first time in just take the first dimension from the range as the column state hasn't been updated yet\n if (dimensionColsInRange.length > 0) {\n this.addRange(CellRangeType.DIMENSION, [dimensionColsInRange[0]]);\n }\n this.initialising = false;\n }\n if (updatedCol && dimensionCols.indexOf(updatedCol.column) > -1) {\n // if updated col is dimension col and is not the default category\n if (updatedCol.colId !== ChartModel.DEFAULT_CATEGORY) {\n this.addRange(CellRangeType.DIMENSION, [updatedCol.column]);\n }\n }\n else {\n // otherwise use current selected dimension\n var selectedDimension = this.dimensionColState.filter(function (cs) { return cs.selected; })[0];\n if (selectedDimension && selectedDimension.colId !== ChartModel.DEFAULT_CATEGORY) {\n this.addRange(CellRangeType.DIMENSION, [selectedDimension.column]);\n }\n }\n var valueColsInRange = valueCols.filter(function (col) { return _.includes(allColsFromRanges, col); });\n if (updatedCol && _.includes(valueCols, updatedCol.column)) {\n if (updatedCol.selected) {\n valueColsInRange.push(updatedCol.column);\n valueColsInRange = this.getColumnInDisplayOrder(valueCols, valueColsInRange);\n }\n else {\n valueColsInRange = valueColsInRange.filter(function (col) { return col.getColId() !== updatedCol.colId; });\n }\n }\n if (valueColsInRange.length > 0) {\n this.addRange(CellRangeType.VALUE, valueColsInRange);\n }\n };\n ChartModel.prototype.getData = function () {\n // grouped data contains label fields rather than objects with toString\n if (this.grouping && this.isMultiCategoryChart()) {\n return this.chartData;\n }\n var colId = this.getSelectedDimension().colId;\n // replacing the selected dimension with a complex object to facilitate duplicated categories\n return this.chartData.map(function (d, index) {\n var value = d[colId];\n var valueString = value && value.toString ? value.toString() : '';\n d[colId] = { id: index, value: d[colId], toString: function () { return valueString; } };\n return d;\n });\n };\n ChartModel.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 ChartModel.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 ChartModel.prototype.setChartProxy = function (chartProxy) {\n this.chartProxy = chartProxy;\n };\n ChartModel.prototype.setActivePalette = function (palette) {\n this.activePalette = palette;\n };\n ChartModel.prototype.toggleDetached = function () {\n this.detached = !this.detached;\n };\n ChartModel.prototype.getColumnInDisplayOrder = function (allDisplayedColumns, listToSort) {\n return allDisplayedColumns.filter(function (col) { return _.includes(listToSort, col); });\n };\n ChartModel.prototype.addRange = function (cellRangeType, columns) {\n var newRange = {\n id: this.chartId,\n startRow: this.referenceCellRange.startRow,\n endRow: this.referenceCellRange.endRow,\n columns: columns,\n startColumn: this.referenceCellRange.startColumn,\n type: cellRangeType\n };\n cellRangeType === CellRangeType.DIMENSION ? this.cellRanges.unshift(newRange) : this.cellRanges.push(newRange);\n };\n ChartModel.prototype.getRowIndexes = function () {\n var startRow = 0, endRow = 0;\n var range = _.last(this.cellRanges);\n if (this.rangeController && range) {\n startRow = this.rangeController.getRangeStartRow(range).rowIndex;\n endRow = this.rangeController.getRangeEndRow(range).rowIndex;\n }\n return { startRow: startRow, endRow: endRow };\n };\n ChartModel.prototype.getAllChartColumns = function () {\n var _this = this;\n var displayedCols = this.columnController.getAllDisplayedColumns();\n var dimensionCols = [];\n var valueCols = [];\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.push(col);\n return;\n case 'series':\n valueCols.push(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.push(col);\n return;\n }\n if (!col.isPrimary()) {\n valueCols.push(col);\n return;\n }\n // if 'chartDataType' is not provided then infer type based data contained in first row\n _this.isNumberCol(col.getColId()) ? valueCols.push(col) : dimensionCols.push(col);\n });\n return { dimensionCols: dimensionCols, valueCols: valueCols };\n };\n ChartModel.prototype.isNumberCol = function (colId) {\n if (colId === '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 cellData;\n if (row.group) {\n cellData = this.extractAggregateValue(row, colId) || this.extractLeafData(row, colId);\n }\n else {\n var rowData = row.data;\n cellData = rowData ? rowData[colId] : null;\n }\n return typeof cellData === 'number';\n };\n ChartModel.prototype.extractAggregateValue = function (row, colId) {\n if (!row.aggData) {\n return null;\n }\n var aggDatum = row.aggData[colId];\n if (!aggDatum) {\n return null;\n }\n return typeof aggDatum.toNumber === 'function' ? aggDatum.toNumber() : aggDatum;\n };\n ChartModel.prototype.extractLeafData = function (row, colId) {\n var cellData = row.allLeafChildren.map(function (child) { return child.data; }).map(function (data) { return data[colId]; });\n for (var i = 0; i < cellData.length; i++) {\n if (cellData[i] !== null) {\n return cellData[i];\n }\n }\n return null;\n };\n ChartModel.prototype.displayNameMapper = function (col) {\n if (this.columnNames[col.colId]) {\n col.displayName = this.columnNames[col.colId].join(' - ');\n }\n else {\n col.displayName = this.getColDisplayName(col.column);\n }\n return col;\n };\n ChartModel.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.datasource) {\n this.datasource.destroy();\n }\n };\n ChartModel.DEFAULT_CATEGORY = 'AG-GRID-DEFAULT-CATEGORY';\n __decorate([\n Autowired('columnController')\n ], ChartModel.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ChartModel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('rangeController')\n ], ChartModel.prototype, \"rangeController\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], ChartModel.prototype, \"rowRenderer\", void 0);\n __decorate([\n PostConstruct\n ], ChartModel.prototype, \"init\", null);\n return ChartModel;\n}(BeanStub));\nexport { ChartModel };\n","var __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};\nimport { Autowired, BeanStub, ChartType, Events, PostConstruct, _ } from \"@ag-grid-community/core\";\nimport { ChartModel } from \"./chartModel\";\nvar ChartController = /** @class */ (function (_super) {\n __extends(ChartController, _super);\n function ChartController(chartModel) {\n var _this = _super.call(this) || this;\n _this.getChartType = function () { return _this.model.getChartType(); };\n _this.isPivotChart = function () { return _this.model.isPivotChart(); };\n _this.getActivePalette = function () { return _this.model.getActivePalette(); };\n _this.getPalettes = function () { return _this.model.getPalettes(); };\n _this.getChartProxy = function () { return _this.model.getChartProxy(); };\n _this.model = chartModel;\n return _this;\n }\n ChartController.prototype.init = function () {\n var _this = this;\n this.updateForGridChange();\n this.addDestroyableEventListener(this.eventService, Events.EVENT_CHART_RANGE_SELECTION_CHANGED, function (event) {\n if (event.id && event.id === _this.model.getChartId()) {\n _this.updateForGridChange();\n }\n });\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.updateForGridChange.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.updateForGridChange.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.updateForGridChange.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.updateForGridChange.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.updateForGridChange.bind(this));\n };\n ChartController.prototype.updateForGridChange = function () {\n // don't update chart if chart is detached from grid data\n if (this.model.isDetached()) {\n return;\n }\n // update the model with changes to the cell ranges from the grid before updating the column state\n this.model.updateCellRanges();\n this.model.resetColumnState();\n this.model.updateData();\n // updates ranges with raising a new EVENT_CHART_RANGE_SELECTION_CHANGED\n this.setChartRange();\n this.raiseChartUpdatedEvent();\n };\n ChartController.prototype.updateForMenuChange = function (updatedCol) {\n // update the column state before updating the cell ranges to be sent to the grid\n this.model.updateColumnState(updatedCol);\n this.model.updateCellRanges(updatedCol);\n this.model.updateData();\n // updates ranges with raising a new EVENT_CHART_RANGE_SELECTION_CHANGED\n this.setChartRange();\n this.raiseChartUpdatedEvent();\n };\n ChartController.prototype.setChartType = function (chartType) {\n this.model.setChartType(chartType);\n this.raiseChartUpdatedEvent();\n };\n ChartController.prototype.setChartWithPalette = function (chartType, palette) {\n this.model.setChartType(chartType);\n this.model.setActivePalette(palette);\n this.raiseChartUpdatedEvent();\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 === ChartModel.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 };\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 grid with chart range\n this.setChartRange();\n // update chart data may have changed\n this.updateForGridChange();\n }\n };\n ChartController.prototype.isActiveXYChart = function () {\n return _.includes([ChartType.Scatter, ChartType.Bubble], this.getChartType());\n };\n ChartController.prototype.raiseChartUpdatedEvent = function () {\n var event = {\n type: ChartController.EVENT_CHART_MODEL_UPDATED\n };\n this.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_MODEL_UPDATED = 'chartModelUpdated';\n __decorate([\n Autowired('eventService')\n ], ChartController.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('rangeController')\n ], ChartController.prototype, \"rangeController\", void 0);\n __decorate([\n PostConstruct\n ], ChartController.prototype, \"init\", null);\n return ChartController;\n}(BeanStub));\nexport { ChartController };\n","var __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};\nimport { _, AgAbstractField, AgCheckbox, AgGroupComponent, AgRadioButton, Autowired, Component, PostConstruct, ChartType } from \"@ag-grid-community/core\";\nimport { ChartController } from \"../../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.addPanels();\n this.addDestroyableEventListener(this.chartController, ChartController.EVENT_CHART_MODEL_UPDATED, this.addPanels.bind(this));\n };\n ChartDataPanel.prototype.destroy = function () {\n this.clearComponents();\n _super.prototype.destroy.call(this);\n };\n ChartDataPanel.prototype.addPanels = 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 (_.areEqual(_.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, AgAbstractField.EVENT_CHANGED, function () {\n columnState.selected = component.getValue();\n _this.chartController.updateForMenuChange(columnState);\n });\n };\n ChartDataPanel.prototype.createCategoriesGroupComponent = function (columns) {\n var _this = this;\n this.categoriesGroupComp = this.wireBean(new 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 AgRadioButton());\n comp.setLabel(_.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 AgGroupComponent({\n title: this.getSeriesGroupTitle(),\n enabled: true,\n suppressEnabledCheckbox: true,\n suppressOpenCloseIcons: false\n }));\n var getSeriesLabel = this.generateGetSeriesLabel();\n columns.forEach(function (col) {\n var comp = _this.seriesGroupComp.wireDependentBean(new AgCheckbox());\n comp.setLabel(getSeriesLabel(col));\n comp.setValue(col.selected);\n _this.addChangeListener(comp, col);\n _this.seriesGroupComp.addItem(comp);\n _this.columnComps.set(col.colId, comp);\n });\n this.addComponent(this.getGui(), this.seriesGroupComp);\n };\n ChartDataPanel.prototype.generateGetSeriesLabel = function () {\n if (!this.chartController.isActiveXYChart()) {\n return function (col) { return _.escape(col.displayName); };\n }\n var isBubble = this.chartType === ChartType.Bubble;\n var activeSeriesCount = 0;\n return function (col) {\n var escapedLabel = _.escape(col.displayName);\n if (!col.selected) {\n return escapedLabel;\n }\n activeSeriesCount++;\n var axisLabel;\n if (activeSeriesCount === 1) {\n axisLabel = \"X\";\n }\n else if (isBubble) {\n axisLabel = (activeSeriesCount - 1) % 2 === 1 ? \"Y\" : \"size\";\n }\n else {\n axisLabel = \"Y\";\n }\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.clearComponents = function () {\n _.clearElement(this.getGui());\n this.columnComps.clear();\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 };\n ChartDataPanel.TEMPLATE = \"
\";\n __decorate([\n Autowired('chartTranslator')\n ], ChartDataPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n PostConstruct\n ], ChartDataPanel.prototype, \"init\", null);\n return ChartDataPanel;\n}(Component));\nexport { ChartDataPanel };\n","var __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};\nimport { _, Autowired, Component, PostConstruct, RefSelector } from \"@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 = _.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 (!_.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 = _.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 = _.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 _.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 RefSelector('fontGroup')\n ], FontPanel.prototype, \"fontGroup\", void 0);\n __decorate([\n RefSelector('familySelect')\n ], FontPanel.prototype, \"familySelect\", void 0);\n __decorate([\n RefSelector('weightStyleSelect')\n ], FontPanel.prototype, \"weightStyleSelect\", void 0);\n __decorate([\n RefSelector('sizeSelect')\n ], FontPanel.prototype, \"sizeSelect\", void 0);\n __decorate([\n RefSelector('colorPicker')\n ], FontPanel.prototype, \"colorPicker\", void 0);\n __decorate([\n Autowired('chartTranslator')\n ], FontPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n PostConstruct\n ], FontPanel.prototype, \"init\", null);\n return FontPanel;\n}(Component));\nexport { FontPanel };\n","var __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};\nimport { _, Autowired, Component, PostConstruct, RefSelector, } from \"@ag-grid-community/core\";\nimport { FontPanel } from \"../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 _this.chartProxy = _this.chartController.getChartProxy();\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.chartProxy.getChartOption(\"legend.enabled\") || false)\n .toggleGroupExpand(false)\n .onEnableChange(function (enabled) {\n _this.chartProxy.setChartOption(\"legend.enabled\", enabled);\n _this.legendGroup.toggleGroupExpand(true);\n });\n };\n LegendPanel.prototype.initLegendPosition = function () {\n var _this = this;\n var chartProxy = this.chartController.getChartProxy();\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(chartProxy.getChartOption(\"legend.position\"))\n .onValueChange(function (newValue) { return chartProxy.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.chartProxy.getChartOption(\"legend.padding\"))\n .setTextFieldWidth(45)\n .setMaxValue(200)\n .onValueChange(function (newValue) { return _this.chartProxy.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.chartProxy.getChartOption(\"legend.\" + expression))\n .setMaxValue(maxValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartProxy.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, 200);\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 initialFont = {\n family: this.chartProxy.getChartOption(\"legend.item.label.fontFamily\"),\n style: this.chartProxy.getChartOption(\"legend.item.label.fontStyle\"),\n weight: this.chartProxy.getChartOption(\"legend.item.label.fontWeight\"),\n size: this.chartProxy.getChartOption(\"legend.item.label.fontSize\"),\n color: this.chartProxy.getChartOption(\"legend.item.label.color\")\n };\n var setFont = function (font) {\n if (font.family) {\n _this.chartProxy.setChartOption(\"legend.item.label.fontFamily\", font.family);\n }\n if (font.weight) {\n _this.chartProxy.setChartOption(\"legend.item.label.fontWeight\", font.weight);\n }\n if (font.style) {\n _this.chartProxy.setChartOption(\"legend.item.label.fontStyle\", font.style);\n }\n if (font.size) {\n _this.chartProxy.setChartOption(\"legend.item.label.fontSize\", font.size);\n }\n if (font.color) {\n _this.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(params));\n this.legendGroup.addItem(fontPanelComp);\n this.activePanels.push(fontPanelComp);\n };\n LegendPanel.prototype.destroyActivePanels = function () {\n this.activePanels.forEach(function (panel) {\n _.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 RefSelector('legendGroup')\n ], LegendPanel.prototype, \"legendGroup\", void 0);\n __decorate([\n RefSelector('legendPositionSelect')\n ], LegendPanel.prototype, \"legendPositionSelect\", void 0);\n __decorate([\n RefSelector('legendPaddingSlider')\n ], LegendPanel.prototype, \"legendPaddingSlider\", void 0);\n __decorate([\n RefSelector('markerSizeSlider')\n ], LegendPanel.prototype, \"markerSizeSlider\", void 0);\n __decorate([\n RefSelector('markerStrokeSlider')\n ], LegendPanel.prototype, \"markerStrokeSlider\", void 0);\n __decorate([\n RefSelector('markerPaddingSlider')\n ], LegendPanel.prototype, \"markerPaddingSlider\", void 0);\n __decorate([\n RefSelector('itemPaddingXSlider')\n ], LegendPanel.prototype, \"itemPaddingXSlider\", void 0);\n __decorate([\n RefSelector('itemPaddingYSlider')\n ], LegendPanel.prototype, \"itemPaddingYSlider\", void 0);\n __decorate([\n Autowired('chartTranslator')\n ], LegendPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n PostConstruct\n ], LegendPanel.prototype, \"init\", null);\n return LegendPanel;\n}(Component));\nexport { LegendPanel };\n","var __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};\nimport { Autowired, Component, PostConstruct, RefSelector, } from \"@ag-grid-community/core\";\nvar ShadowPanel = /** @class */ (function (_super) {\n __extends(ShadowPanel, _super);\n function ShadowPanel(chartProxy) {\n var _this = _super.call(this) || this;\n _this.chartProxy = chartProxy;\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.chartProxy.getShadowEnabled())\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(false)\n .onEnableChange(function (newValue) { return _this.chartProxy.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.chartProxy.setShadowProperty(\"color\", newValue); });\n var initInput = function (input, property, minValue, maxValue) {\n input.setLabel(_this.chartTranslator.translate(property))\n .setValue(_this.chartProxy.getShadowProperty(property))\n .setMinValue(minValue)\n .setMaxValue(maxValue)\n .onValueChange(function (newValue) { return _this.chartProxy.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 RefSelector('shadowGroup')\n ], ShadowPanel.prototype, \"shadowGroup\", void 0);\n __decorate([\n RefSelector('shadowColorPicker')\n ], ShadowPanel.prototype, \"shadowColorPicker\", void 0);\n __decorate([\n RefSelector('shadowBlurSlider')\n ], ShadowPanel.prototype, \"shadowBlurSlider\", void 0);\n __decorate([\n RefSelector('shadowXOffsetSlider')\n ], ShadowPanel.prototype, \"shadowXOffsetSlider\", void 0);\n __decorate([\n RefSelector('shadowYOffsetSlider')\n ], ShadowPanel.prototype, \"shadowYOffsetSlider\", void 0);\n __decorate([\n Autowired('chartTranslator')\n ], ShadowPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n PostConstruct\n ], ShadowPanel.prototype, \"init\", null);\n return ShadowPanel;\n}(Component));\nexport { ShadowPanel };\n","var __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};\nimport { _, Autowired, Component, PostConstruct, RefSelector, } from \"@ag-grid-community/core\";\nimport { ShadowPanel } from \"./shadowPanel\";\nimport { FontPanel } from \"../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 _this.chartProxy = _this.chartController.getChartProxy();\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.chartProxy.getSeriesOption(\"tooltip.enabled\") || false)\n .onValueChange(function (newValue) { return _this.chartProxy.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.chartProxy.getSeriesOption(\"stroke.width\"))\n .onValueChange(function (newValue) { return _this.chartProxy.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.chartProxy.getSeriesOption(\"stroke.opacity\") || \"1\")\n .onValueChange(function (newValue) { return _this.chartProxy.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.chartProxy.getSeriesOption(\"fill.opacity\") || \"1\")\n .onValueChange(function (newValue) { return _this.chartProxy.setSeriesOption(\"fill.opacity\", newValue); });\n };\n BarSeriesPanel.prototype.initLabelPanel = function () {\n var _this = this;\n var initialFont = {\n family: this.chartProxy.getSeriesOption(\"label.fontFamily\"),\n style: this.chartProxy.getSeriesOption(\"label.fontStyle\"),\n weight: this.chartProxy.getSeriesOption(\"label.fontWeight\"),\n size: this.chartProxy.getSeriesOption(\"label.fontSize\"),\n color: this.chartProxy.getSeriesOption(\"label.color\")\n };\n var setFont = function (font) {\n if (font.family) {\n _this.chartProxy.setSeriesOption(\"label.fontFamily\", font.family);\n }\n if (font.weight) {\n _this.chartProxy.setSeriesOption(\"label.fontWeight\", font.weight);\n }\n if (font.style) {\n _this.chartProxy.setSeriesOption(\"label.fontStyle\", font.style);\n }\n if (font.size) {\n _this.chartProxy.setSeriesOption(\"label.fontSize\", font.size);\n }\n if (font.color) {\n _this.chartProxy.setSeriesOption(\"label.color\", font.color);\n }\n };\n var params = {\n enabled: this.chartProxy.getSeriesOption(\"label.enabled\") || false,\n setEnabled: function (enabled) { return _this.chartProxy.setSeriesOption(\"label.enabled\", enabled); },\n suppressEnabledCheckbox: false,\n initialFont: initialFont,\n setFont: setFont\n };\n var labelPanelComp = this.wireBean(new 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(this.chartProxy));\n this.seriesGroup.addItem(shadowPanelComp);\n this.activePanels.push(shadowPanelComp);\n };\n BarSeriesPanel.prototype.destroyActivePanels = function () {\n this.activePanels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n panel.destroy();\n });\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 RefSelector('seriesGroup')\n ], BarSeriesPanel.prototype, \"seriesGroup\", void 0);\n __decorate([\n RefSelector('seriesTooltipsToggle')\n ], BarSeriesPanel.prototype, \"seriesTooltipsToggle\", void 0);\n __decorate([\n RefSelector('seriesStrokeWidthSlider')\n ], BarSeriesPanel.prototype, \"seriesStrokeWidthSlider\", void 0);\n __decorate([\n RefSelector('seriesLineOpacitySlider')\n ], BarSeriesPanel.prototype, \"seriesLineOpacitySlider\", void 0);\n __decorate([\n RefSelector('seriesFillOpacitySlider')\n ], BarSeriesPanel.prototype, \"seriesFillOpacitySlider\", void 0);\n __decorate([\n Autowired('chartTranslator')\n ], BarSeriesPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n PostConstruct\n ], BarSeriesPanel.prototype, \"init\", null);\n return BarSeriesPanel;\n}(Component));\nexport { BarSeriesPanel };\n","var __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};\nimport { Autowired, Component, PostConstruct, RefSelector } from \"@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.chartProxy = chartController.getChartProxy();\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.chartProxy.getAxisProperty(\"tick.color\"))\n .onValueChange(function (newColor) { return _this.chartProxy.setAxisProperty(\"tick.color\", newColor); });\n var initInput = function (expression, input, label, maxValue) {\n input.setLabel(label)\n .setValue(_this.chartProxy.getAxisProperty(expression))\n .setMaxValue(maxValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartProxy.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.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n
\";\n __decorate([\n RefSelector('axisTicksGroup')\n ], AxisTicksPanel.prototype, \"axisTicksGroup\", void 0);\n __decorate([\n RefSelector('axisTicksColorPicker')\n ], AxisTicksPanel.prototype, \"axisTicksColorPicker\", void 0);\n __decorate([\n RefSelector('axisTicksWidthSlider')\n ], AxisTicksPanel.prototype, \"axisTicksWidthSlider\", void 0);\n __decorate([\n RefSelector('axisTicksSizeSlider')\n ], AxisTicksPanel.prototype, \"axisTicksSizeSlider\", void 0);\n __decorate([\n Autowired('chartTranslator')\n ], AxisTicksPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n PostConstruct\n ], AxisTicksPanel.prototype, \"init\", null);\n return AxisTicksPanel;\n}(Component));\nexport { AxisTicksPanel };\n","var __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};\nimport { _, AgAngleSelect, AgSlider, Autowired, Component, PostConstruct, RefSelector, } from \"@ag-grid-community/core\";\nimport { AxisTicksPanel } from \"./axisTicksPanel\";\nimport { FontPanel } from \"../fontPanel\";\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 _this.chartProxy = chartController.getChartProxy();\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.chartProxy.getAxisProperty(\"line.color\"))\n .onValueChange(function (newColor) { return _this.chartProxy.setAxisProperty(\"line.color\", newColor); });\n this.axisLineWidthSlider\n .setLabel(this.chartTranslator.translate(\"thickness\"))\n .setMaxValue(10)\n .setTextFieldWidth(45)\n .setValue(this.chartProxy.getAxisProperty(\"line.width\"))\n .onValueChange(function (newValue) { return _this.chartProxy.setAxisProperty(\"line.width\", newValue); });\n };\n AxisPanel.prototype.initAxisTicks = function () {\n var axisTicksComp = this.wireBean(new 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 initialFont = {\n family: this.chartProxy.getAxisProperty(\"label.fontFamily\"),\n style: this.chartProxy.getAxisProperty(\"label.fontStyle\"),\n weight: this.chartProxy.getAxisProperty(\"label.fontWeight\"),\n size: this.chartProxy.getAxisProperty(\"label.fontSize\"),\n color: this.chartProxy.getAxisProperty(\"label.color\")\n };\n var setFont = function (font) {\n if (font.family) {\n _this.chartProxy.setAxisProperty(\"label.fontFamily\", font.family);\n }\n if (font.weight) {\n _this.chartProxy.setAxisProperty(\"label.fontWeight\", font.weight);\n }\n if (font.style) {\n _this.chartProxy.setAxisProperty(\"label.fontStyle\", font.style);\n }\n if (font.size) {\n _this.chartProxy.setAxisProperty(\"label.fontSize\", font.size);\n }\n if (font.color) {\n _this.chartProxy.setAxisProperty(\"label.color\", font.color);\n }\n _this.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(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 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 xRotationLabel = this.chartTranslator.translate(\"xRotation\") + \" \" + degreesSymbol;\n var xUpdateFunc = function (newValue) {\n _this.chartProxy.setChartOption(\"xAxis.label.rotation\", newValue);\n _this.chartProxy.getChart().performLayout();\n };\n createAngleComp(xRotationLabel, this.chartProxy.getChartOption(\"xAxis.label.rotation\"), xUpdateFunc);\n var yRotationLabel = this.chartTranslator.translate(\"yRotation\") + \" \" + degreesSymbol;\n var yUpdateFunc = function (newValue) {\n _this.chartProxy.setChartOption(\"yAxis.label.rotation\", newValue);\n _this.chartProxy.getChart().performLayout();\n };\n createAngleComp(yRotationLabel, this.chartProxy.getChartOption(\"yAxis.label.rotation\"), yUpdateFunc);\n var labelPaddingSlider = this.wireBean(new AgSlider());\n labelPaddingSlider.setLabel(this.chartTranslator.translate(\"padding\"))\n .setValue(this.chartProxy.getAxisProperty(\"label.padding\"))\n .setMaxValue(30)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartProxy.setAxisProperty(\"label.padding\", newValue); });\n labelPanelComp.addCompToPanel(labelPaddingSlider);\n };\n AxisPanel.prototype.destroyActivePanels = function () {\n this.activePanels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n panel.destroy();\n });\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 RefSelector('axisGroup')\n ], AxisPanel.prototype, \"axisGroup\", void 0);\n __decorate([\n RefSelector('axisLineWidthSlider')\n ], AxisPanel.prototype, \"axisLineWidthSlider\", void 0);\n __decorate([\n RefSelector('axisColorInput')\n ], AxisPanel.prototype, \"axisColorInput\", void 0);\n __decorate([\n Autowired('chartTranslator')\n ], AxisPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n PostConstruct\n ], AxisPanel.prototype, \"init\", null);\n return AxisPanel;\n}(Component));\nexport { AxisPanel };\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(options) {\n if (options === void 0) { options = {}; }\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 = options.document || window.document;\n this.tempCanvas = this.document.createElement('canvas');\n this.element = this.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 = options.width || 300, this._height = options.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}());\nexport { HdpiCanvas };\n","import { HdpiCanvas } from \"../canvas/hdpiCanvas\";\nvar Scene = /** @class */ (function () {\n function Scene(options) {\n var _this = this;\n if (options === void 0) { options = {}; }\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 ctx = _this.ctx;\n // start with a blank canvas, clear previous drawing\n ctx.clearRect(0, 0, _this.width, _this.height);\n if (_this.root) {\n ctx.save();\n if (_this.root.visible) {\n _this.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({\n width: options.width || 300,\n height: options.height || 150,\n document: options.document || window.document\n });\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}());\nexport { Scene };\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\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.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}());\nexport { BBox };\n","import { BBox } from \"./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(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}());\nexport { Matrix };\n","var __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})();\nimport { Node } from \"./node\";\nimport { BBox } from \"./bbox\";\nimport { Matrix } from \"./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 _this.getBBox = 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.getBBox();\n if (!bbox) {\n return;\n }\n if (!(child instanceof Group)) {\n if (child.dirtyTransform) {\n child.computeTransformMatrix();\n }\n var matrix = 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(left, top, right - left, bottom - top);\n };\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.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.getBBox().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));\nexport { Group };\n","var 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}());\nexport { Padding };\n","export function 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}\n","var __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})();\nimport { Node } from \"../node\";\nimport { chainObjects } from \"../../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._fillOpacity = 1;\n _this._strokeOpacity = 1;\n _this._fill = Shape.defaultStyles.fill; //| CanvasGradient | CanvasPattern;\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._fillShadow = Shape.defaultStyles.fillShadow;\n _this._strokeShadow = Shape.defaultStyles.strokeShadow;\n return _this;\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 _this = this;\n var fillShadow = this._fillShadow;\n if (fillShadow !== value) {\n if (fillShadow) {\n fillShadow.onChange = undefined;\n }\n if (value) {\n value.onChange = function () { return _this.dirty = true; };\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 _this = this;\n var strokeShadow = this._strokeShadow;\n if (strokeShadow !== value) {\n if (strokeShadow) {\n strokeShadow.onChange = undefined;\n }\n if (value) {\n value.onChange = function () { return _this.dirty = true; };\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 = 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));\nexport { Shape };\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 */\nexport function linearRoot(a, b) {\n var t = -b / a;\n return (a !== 0 && t >= 0 && t <= 1) ? [t] : [];\n}\n/**\n * Finds the roots of a parametric quadratic equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n */\nexport function 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}\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 */\nexport function 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}\n","import { cubicRoots } from \"./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 */\nexport function 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}\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 */\nexport function 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 = 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}\n/**\n * Returns the given coordinates vector multiplied by the coefficient matrix\n * of the parametric cubic Bézier equation.\n */\nexport function 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}\n","import { cubicSegmentIntersections, segmentIntersection } from \"./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 (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 (segmentIntersection(px, py, px = params[pi++], py = params[pi++], ox, oy, x, y)) {\n intersectionCount++;\n }\n break;\n case 'C':\n intersectionCount += 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 (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}());\nexport { Path2D };\n","var __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})();\nimport { Path } from \"./path\";\nimport { Shape } from \"./shape\";\nimport { BBox } from \"../bbox\";\nexport var RectSizing;\n(function (RectSizing) {\n RectSizing[RectSizing[\"Content\"] = 0] = \"Content\";\n RectSizing[RectSizing[\"Border\"] = 1] = \"Border\";\n})(RectSizing || (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.defaultStyles.strokeWidth;\n /**\n * Similar to https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing\n */\n _this._sizing = RectSizing.Content;\n _this.getBBox = function () {\n return new BBox(_this.x, _this.y, _this.width, _this.height);\n };\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.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.getBBox();\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));\nexport { Rect };\n","var __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})();\nimport { Shape } from \"./shape\";\nimport { Path2D } from \"../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();\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.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));\nexport { Path };\n","import { Group } from \"../scene/group\";\nimport { Selection } from \"../scene/selection\";\nimport { MarkerLabel } from \"./markerLabel\";\nexport var Orientation;\n(function (Orientation) {\n Orientation[Orientation[\"Vertical\"] = 0] = \"Vertical\";\n Orientation[Orientation[\"Horizontal\"] = 1] = \"Horizontal\";\n})(Orientation || (Orientation = {}));\nvar Legend = /** @class */ (function () {\n function Legend() {\n // that shouldn't happen on every `onLayoutChange` callback.\n this.group = new Group();\n this.itemSelection = Selection.select(this.group).selectAll();\n this.oldSize = [0, 0];\n this._size = [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.defaults.padding;\n this._labelColor = MarkerLabel.defaults.labelColor;\n this._labelFontStyle = MarkerLabel.defaults.labelFontStyle;\n this._labelFontWeight = MarkerLabel.defaults.labelFontWeight;\n this._labelFontSize = MarkerLabel.defaults.labelFontSize;\n this._labelFontFamily = MarkerLabel.defaults.labelFontFamily;\n this._markerSize = 14;\n this._markerStrokeWidth = 1;\n }\n Object.defineProperty(Legend.prototype, \"size\", {\n get: function () {\n return this._size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n set: function (data) {\n this._data = data;\n this.group.visible = this.enabled && data.length > 0;\n this.requestLayout();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.prototype, \"enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (value) {\n if (this._enabled !== value) {\n this._enabled = value;\n this.group.visible = value && this.data.length > 0;\n this.requestLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.prototype, \"orientation\", {\n get: function () {\n return this._orientation;\n },\n set: function (value) {\n if (this._orientation !== value) {\n this._orientation = value;\n this.requestLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.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 'right':\n case 'left':\n this.orientation = Orientation.Vertical;\n break;\n case 'bottom':\n case 'top':\n this.orientation = Orientation.Horizontal;\n break;\n }\n if (this.onPositionChange) {\n this.onPositionChange();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.prototype, \"padding\", {\n get: function () {\n return this._padding;\n },\n set: function (value) {\n value = isFinite(value) ? value : 20;\n if (this._padding !== value) {\n this._padding = value;\n this.requestLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.prototype, \"itemPaddingX\", {\n get: function () {\n return this._itemPaddingX;\n },\n set: function (value) {\n value = isFinite(value) ? value : 16;\n if (this._itemPaddingX !== value) {\n this._itemPaddingX = value;\n this.requestLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.prototype, \"itemPaddingY\", {\n get: function () {\n return this._itemPaddingY;\n },\n set: function (value) {\n value = isFinite(value) ? value : 8;\n if (this._itemPaddingY !== value) {\n this._itemPaddingY = value;\n this.requestLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.prototype, \"markerPadding\", {\n get: function () {\n return this._markerPadding;\n },\n set: function (value) {\n value = isFinite(value) ? value : MarkerLabel.defaults.padding;\n if (this._markerPadding !== value) {\n this._markerPadding = value;\n this.requestLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.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.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.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.requestLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.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.requestLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.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.requestLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.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.requestLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.prototype, \"markerSize\", {\n get: function () {\n return this._markerSize;\n },\n set: function (value) {\n value = isFinite(value) ? value : 14;\n if (this._markerSize !== value) {\n this._markerSize = value;\n this.requestLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.prototype, \"markerStrokeWidth\", {\n get: function () {\n return this._markerStrokeWidth;\n },\n set: function (value) {\n value = isFinite(value) ? value : 1;\n if (this._markerStrokeWidth !== value) {\n this._markerStrokeWidth = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Legend.prototype.requestLayout = function () {\n if (this.onLayoutChange) {\n this.onLayoutChange();\n }\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 notify\n * the parent component via the {@link onLayoutChange} callback that another layout is needed,\n * and the above process should be repeated.\n * @param width\n * @param height\n */\n Legend.prototype.performLayout = function (width, height) {\n var _this = this;\n var updateSelection = this.itemSelection.setData(this.data);\n updateSelection.exit.remove();\n var enterSelection = updateSelection.enter.append(MarkerLabel);\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.getBBox());\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 this.requestLayout();\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.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 return Legend;\n}());\nexport { Legend };\n","import { Node } from \"./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.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}());\nexport { 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.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.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.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.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.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}());\nexport { Selection };\n","var __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})();\nimport { Shape } from \"./shape\";\nimport { chainObjects } from \"../../util/object\";\nimport { BBox } from \"../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 // - getBBox 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.getBBox = 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(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(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.getBBox();\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.scene || !this.lines.length) {\n return;\n }\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n // this.matrix.transformBBox(this.getBBox!()).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 = chainObjects(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));\nexport { Text };\n","var __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})();\nimport { Group } from \"../scene/group\";\nimport { Rect } from \"../scene/shape/rect\";\nimport { Text } from \"../scene/shape/text\";\nvar MarkerLabel = /** @class */ (function (_super) {\n __extends(MarkerLabel, _super);\n function MarkerLabel() {\n var _this = _super.call(this) || this;\n _this.marker = new Rect();\n _this.label = new Text();\n _this._markerSize = MarkerLabel.defaults.markerSize;\n _this._padding = MarkerLabel.defaults.padding;\n _this.marker.crisp = true;\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, \"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, \"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.x = -markerSize / 2;\n marker.y = -markerSize / 2;\n marker.width = markerSize;\n marker.height = markerSize;\n this.label.x = markerSize / 2 + this.padding;\n };\n MarkerLabel.className = 'MarkerLabel';\n MarkerLabel.defaults = Object.freeze({\n padding: 4,\n markerSize: 14,\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));\nexport { MarkerLabel };\n","import { Scene } from \"../scene/scene\";\nimport { Group } from \"../scene/group\";\nimport { Padding } from \"../util/padding\";\nimport { Shape } from \"../scene/shape/shape\";\nimport { Rect } from \"../scene/shape/rect\";\nimport { Legend } from \"./legend\";\nimport { find } from \"../util/array\";\nvar Chart = /** @class */ (function () {\n function Chart(options) {\n var _this = this;\n if (options === void 0) { options = {}; }\n this.background = new Rect();\n this.legend = new Legend();\n this.legendAutoPadding = new Padding();\n this.captionAutoPadding = 0; // top padding only\n this.tooltipOffset = [20, 20];\n this.defaultTooltipClass = 'ag-chart-tooltip';\n this.onLayoutChange = function () {\n _this.layoutPending = true;\n };\n this.onLegendPositionChange = function () {\n _this.legendAutoPadding.clear();\n _this.layoutPending = true;\n };\n this._title = undefined;\n this._subtitle = undefined;\n this._series = [];\n this._data = [];\n this._padding = new Padding(20);\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.onLayoutDone) {\n _this.onLayoutDone();\n }\n };\n this.dataCallbackId = 0;\n this._processData = function () {\n _this.dataCallbackId = 0;\n _this.processData();\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) {\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 (event) {\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 = 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();\n var background = this.background;\n var document = options.document || window.document;\n background.fill = 'white';\n root.appendChild(background);\n var scene = new Scene({ document: document });\n this.scene = scene;\n scene.parent = options.parent;\n scene.root = root;\n this.legend.onLayoutChange = this.onLayoutChange;\n this.legend.onPositionChange = this.onLegendPositionChange;\n this.tooltipElement = document.createElement('div');\n this.tooltipClass = '';\n document.body.appendChild(this.tooltipElement);\n this.setupListeners(scene.canvas.element);\n }\n Chart.prototype.destroy = function () {\n var tooltipParent = this.tooltipElement.parentNode;\n if (tooltipParent) {\n tooltipParent.removeChild(this.tooltipElement);\n }\n this.legend.onLayoutChange = undefined;\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, \"parent\", {\n get: function () {\n return this.scene.parent;\n },\n set: function (value) {\n this.scene.parent = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.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.onChange = undefined;\n this.scene.root.removeChild(oldTitle.node);\n }\n if (value) {\n value.onChange = this.onLayoutChange;\n this.scene.root.appendChild(value.node);\n }\n this._title = value;\n this.layoutPending = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"subtitle\", {\n get: function () {\n return this._subtitle;\n },\n set: function (value) {\n var oldSubtitle = this._subtitle;\n if (oldSubtitle !== value) {\n if (oldSubtitle) {\n oldSubtitle.onChange = undefined;\n this.scene.root.removeChild(oldSubtitle.node);\n }\n if (value) {\n value.onChange = this.onLayoutChange;\n this.scene.root.appendChild(value.node);\n }\n this._subtitle = value;\n this.layoutPending = true;\n }\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 this._series = values;\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 series.chart = this;\n this.dataPending = true;\n return true;\n }\n return false;\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 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 allSeries.unshift(series);\n }\n series.chart = this;\n this.dataPending = 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 series.chart = undefined;\n this.seriesRoot.removeChild(series.group);\n this.dataPending = 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 series.chart = undefined;\n _this.seriesRoot.removeChild(series.group);\n });\n this._series = []; // using `_series` instead of `series` to prevent infinite recursion\n this.dataPending = true;\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, \"padding\", {\n get: function () {\n return this._padding;\n },\n set: function (value) {\n this._padding = value;\n this.layoutPending = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"size\", {\n get: function () {\n return this.scene.size;\n },\n set: function (value) {\n this.scene.size = value;\n this.layoutPending = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"width\", {\n get: function () {\n return this.scene.width;\n },\n /**\n * The width of the chart in CSS pixels.\n */\n set: function (value) {\n this.scene.width = value;\n this.layoutPending = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"height\", {\n get: function () {\n return this.scene.height;\n },\n /**\n * The height of the chart in CSS pixels.\n */\n set: function (value) {\n this.scene.height = value;\n this.layoutPending = true;\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 if (this.dataCallbackId) {\n clearTimeout(this.dataCallbackId);\n this.dataCallbackId = 0;\n }\n if (value) {\n // We don't want to render before the data is processed and then again after,\n // so we cancel the auto-scheduled render, if any.\n this.scene.cancelRender();\n this.dataCallbackId = window.setTimeout(this._processData, 0); // run on next tick\n }\n },\n enumerable: true,\n configurable: true\n });\n Chart.prototype.processData = function () {\n this.layoutPending = false;\n var legendData = [];\n this.series.forEach(function (series) {\n if (series.visible) {\n series.processData();\n }\n if (series.showInLegend) {\n series.listSeriesItems(legendData);\n }\n });\n this.legend.data = legendData;\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 = 5;\n var paddingTop = 0;\n if (title && title.enabled) {\n title.node.x = this.width / 2;\n title.node.y = 10;\n titleVisible = true;\n var bbox = title.node.getBBox();\n paddingTop += bbox ? bbox.y + bbox.height * 1.5 : 0;\n if (subtitle && subtitle.enabled) {\n var bbox_1 = subtitle.node.getBBox();\n subtitle.node.x = this.width / 2;\n subtitle.node.y = paddingTop;\n subtitleVisible = true;\n paddingTop += spacing + (bbox_1 ? bbox_1.height : 0);\n }\n }\n if (title) {\n title.node.visible = titleVisible;\n }\n if (subtitle) {\n subtitle.node.visible = subtitleVisible;\n }\n if (this.captionAutoPadding !== paddingTop) {\n this.captionAutoPadding = paddingTop;\n this.layoutPending = true;\n }\n };\n Chart.prototype.positionLegend = function () {\n if (!this.legend.enabled || !this.legend.data.length) {\n return;\n }\n var captionAutoPadding = this.captionAutoPadding;\n var width = this.width;\n var height = this.height - captionAutoPadding;\n var legend = this.legend;\n var legendGroup = legend.group;\n var legendPadding = this.legend.padding;\n var legendAutoPadding = this.legendAutoPadding;\n legendGroup.translationX = 0;\n legendGroup.translationY = 0;\n var legendBBox;\n switch (this.legend.position) {\n case 'bottom':\n legend.performLayout(width - legendPadding * 2, 0);\n legendBBox = legendGroup.getBBox();\n legendGroup.translationX = (width - legendBBox.width) / 2 - legendBBox.x;\n legendGroup.translationY = captionAutoPadding + height - legendBBox.height - legendBBox.y - legendPadding;\n if (legendAutoPadding.bottom !== legendBBox.height) {\n legendAutoPadding.bottom = legendBBox.height;\n this.layoutPending = true;\n }\n break;\n case 'top':\n legend.performLayout(width - legendPadding * 2, 0);\n legendBBox = legendGroup.getBBox();\n legendGroup.translationX = (width - legendBBox.width) / 2 - legendBBox.x;\n legendGroup.translationY = captionAutoPadding + legendPadding - legendBBox.y;\n if (legendAutoPadding.top !== legendBBox.height) {\n legendAutoPadding.top = legendBBox.height;\n this.layoutPending = true;\n }\n break;\n case 'left':\n legend.performLayout(0, height - legendPadding * 2);\n legendBBox = legendGroup.getBBox();\n legendGroup.translationX = legendPadding - legendBBox.x;\n legendGroup.translationY = captionAutoPadding + (height - legendBBox.height) / 2 - legendBBox.y;\n if (legendAutoPadding.left !== legendBBox.width) {\n legendAutoPadding.left = legendBBox.width;\n this.layoutPending = true;\n }\n break;\n default: // case 'right':\n legend.performLayout(0, height - legendPadding * 2);\n legendBBox = legendGroup.getBBox();\n legendGroup.translationX = width - legendBBox.width - legendBBox.x - legendPadding;\n legendGroup.translationY = captionAutoPadding + (height - legendBBox.height) / 2 - legendBBox.y;\n if (legendAutoPadding.right !== legendBBox.width) {\n legendAutoPadding.right = legendBBox.width;\n this.layoutPending = true;\n }\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 return Chart;\n}());\nexport { Chart };\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}());\nexport { BandScale };\n","var __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})();\nimport { Shape } from \"./shape\";\nimport { chainObjects } from \"../../util/object\";\nimport { BBox } from \"../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.getBBox = function () {\n return new BBox(_this.x1, _this.y1, _this.x2 - _this.x1, _this.y2 - _this.y1);\n };\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.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 = chainObjects(Shape.defaultStyles, {\n fill: undefined,\n strokeWidth: 1\n });\n return Line;\n}(Shape));\nexport { Line };\n","var __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})();\nexport default function (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}\nvar e10 = Math.sqrt(50);\nvar e5 = Math.sqrt(10);\nvar e2 = Math.sqrt(2);\nexport function 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}\nexport function 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}\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));\nexport { 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","var twoPi = Math.PI * 2;\n/**\n * Normalize the given angle to be in the [0, 2π) interval.\n * @param radians Angle in radians.\n */\nexport function normalizeAngle360(radians) {\n radians %= twoPi;\n radians += twoPi;\n radians %= twoPi;\n return radians;\n}\nexport function normalizeAngle360Inclusive(radians) {\n radians %= twoPi;\n radians += twoPi;\n if (radians !== twoPi) {\n radians %= twoPi;\n }\n return radians;\n}\n/**\n * Normalize the given angle to be in the [-π, π) interval.\n * @param radians Angle in radians.\n */\nexport function 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}\nexport function toRadians(degrees) {\n return degrees / 180 * Math.PI;\n}\nexport function toDegrees(radians) {\n return radians / Math.PI * 180;\n}\n","export function isEqual(a, b, epsilon) {\n if (epsilon === void 0) { epsilon = 1e-10; }\n return Math.abs(a - b) < epsilon;\n}\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 */\nexport function 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}\nvar numberUnits = [\"\", \"K\", \"M\", \"B\", \"T\"];\nexport function 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}\n","var __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})();\nimport { Shape } from \"./shape\";\nimport { Path } from \"./path\";\nimport { BBox } from \"../bbox\";\nimport { normalizeAngle360 } from \"../../util/angle\";\nimport { chainObjects } from \"../../util/object\";\nimport { isEqual } from \"../../util/number\";\nexport var ArcType;\n(function (ArcType) {\n ArcType[ArcType[\"Open\"] = 0] = \"Open\";\n ArcType[ArcType[\"Chord\"] = 1] = \"Chord\";\n ArcType[ArcType[\"Round\"] = 2] = \"Round\";\n})(ArcType || (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.getBBox = function () {\n // Only works with full arcs (circles) and untransformed ellipses.\n return new BBox(_this.centerX - _this.radiusX, _this.centerY - _this.radiusY, _this.radiusX * 2, _this.radiusY * 2);\n };\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 isEqual(normalizeAngle360(this.startAngle), 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.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.getBBox();\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 = chainObjects(Shape.defaultStyles, {\n lineWidth: 1,\n fillStyle: null\n });\n return Arc;\n}(Path));\nexport { Arc };\n","var __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})();\nimport { Group } from \"./scene/group\";\nimport { Selection } from \"./scene/selection\";\nimport { Line } from \"./scene/shape/line\";\nimport { NumericTicks } from \"./util/ticks\";\nimport { normalizeAngle360, normalizeAngle360Inclusive, toRadians } from \"./util/angle\";\nimport { Text } from \"./scene/shape/text\";\nimport { Arc } from \"./scene/shape/arc\";\nimport { BBox } from \"./scene/bbox\";\nimport { Matrix } from \"./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 return AxisTick;\n}());\nexport { AxisTick };\nvar FormattableAxisTick = /** @class */ (function (_super) {\n __extends(FormattableAxisTick, _super);\n function FormattableAxisTick() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\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 return _this;\n }\n Object.defineProperty(FormattableAxisTick.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 FormattableAxisTick;\n}(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 return AxisLabel;\n}());\nexport { 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.group = new Group();\n this.lineNode = new Line();\n // onLayoutChange?: () => void;\n this.line = {\n width: 1,\n color: 'rgba(195, 195, 195, 1)'\n };\n this.tick = new FormattableAxisTick();\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.select(this.group).selectAll();\n this.tick.onFormatChange = this.onTickFormatChange.bind(this);\n this.group.append(this.lineNode);\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 this.tickFormatter = undefined;\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, \"gridStyle\", {\n get: function () {\n return this._gridStyle;\n },\n set: function (value) {\n if (value.length) {\n this._gridStyle = value;\n }\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;\n var rotation = toRadians(this.rotation);\n var parallelLabels = label.parallel;\n var labelRotation = normalizeAngle360(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 = normalizeAngle360(rotation);\n var parallelFlipFlag = !labelRotation && parallelFlipRotation >= 0 && parallelFlipRotation <= Math.PI ? -1 : 1;\n var regularFlipRotation = 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);\n // Line auto-snaps to pixel grid if vertical or horizontal.\n enter.append(Line).each(function (node) { return node.tag = Tags.Tick; });\n if (this.gridLength) {\n if (this.radialGrid) {\n enter.append(Arc).each(function (node) { return node.tag = Tags.GridLine; });\n }\n else {\n enter.append(Line).each(function (node) { return node.tag = Tags.GridLine; });\n }\n }\n enter.append(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) {\n var styles_1 = this.gridStyle;\n var styleCount_1 = styles_1.length;\n var gridLines = void 0;\n if (this.radialGrid) {\n var angularGridLength_1 = normalizeAngle360Inclusive(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 = styles_1[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 NumericTicks ? ticks.fractionDigits : 0;\n var labelSelection = groupSelection.selectByClass(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.getBBox(false);\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.getBBox();\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.getBBox = function (includeTitle) {\n if (includeTitle === void 0) { includeTitle = true; }\n var lineNode = this.lineNode;\n var labels = this.groupSelection.selectByClass(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.getBBox()` 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.flyweight(label.matrix);\n var group = label.parent;\n group.computeTransformMatrix();\n matrix.preMultiplySelf(group.matrix);\n var labelBBox = label.getBBox();\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 (includeTitle && this.title) {\n var label = this.title.node;\n label.computeTransformMatrix();\n var matrix = Matrix.flyweight(label.matrix);\n var labelBBox = label.getBBox();\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(left, top, right - left, bottom - top);\n };\n return Axis;\n}());\nexport { Axis };\n","var __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})();\nimport { BandScale } from \"../../scale/bandScale\";\nimport { Axis } from \"../../axis\";\nvar CategoryAxis = /** @class */ (function (_super) {\n __extends(CategoryAxis, _super);\n function CategoryAxis() {\n var _this = this;\n var scale = new 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}(Axis));\nexport { CategoryAxis };\n","import { find } from \"../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 */\nexport function 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}\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 = 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}\nexport function treeLayout(root) {\n var layout = new TreeLayout;\n firstWalk(root, 1);\n secondWalk(root, -root.prelim, layout);\n thirdWalk(root);\n return layout;\n}\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}());\nexport { 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","var __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})();\nimport { Group } from \"../../scene/group\";\nimport { Selection } from \"../../scene/selection\";\nimport { Line } from \"../../scene/shape/line\";\nimport { normalizeAngle360, toRadians } from \"../../util/angle\";\nimport { Text } from \"../../scene/shape/text\";\nimport { BBox } from \"../../scene/bbox\";\nimport { Matrix } from \"../../scene/matrix\";\n// import { Rect } from \"../../scene/shape/rect\"; debug (bbox)\nimport { BandScale } from \"../../scale/bandScale\";\nimport { ticksToTree, treeLayout } from \"../../layout/tree\";\nimport { AxisLabel, AxisTick } from \"../../axis\";\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}(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 () {\n function GroupedCategoryAxis() {\n this.id = this.createId();\n this.scale = new BandScale();\n this.tickScale = new BandScale();\n this.group = new 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 this.tick = new AxisTick();\n this.label = new GroupedCategoryAxisLabel();\n this.title = undefined;\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 /**\n * The length of the grid. The grid is only visible in case of a non-zero value.\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 var scale = this.scale;\n scale.paddingOuter = 0.1;\n scale.paddingInner = scale.paddingOuter * 2;\n var tickScale = this.tickScale;\n tickScale.paddingInner = 1;\n tickScale.paddingOuter = 0;\n this.gridLineSelection = Selection.select(this.group).selectAll();\n this.axisLineSelection = Selection.select(this.group).selectAll();\n this.separatorSelection = Selection.select(this.group).selectAll();\n this.labelSelection = Selection.select(this.group).selectAll();\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 = ticksToTree(value);\n this.tickTreeLayout = 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 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 Object.defineProperty(GroupedCategoryAxis.prototype, \"gridStyle\", {\n get: function () {\n return this._gridStyle;\n },\n set: function (value) {\n if (value.length) {\n this._gridStyle = value;\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 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 = toRadians(this.rotation);\n var isHorizontal = Math.abs(Math.cos(rotation)) < 1e-8;\n var labelRotation = normalizeAngle360(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 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 = normalizeAngle360(rotation);\n var parallelFlipFlag = (!labelRotation && parallelFlipRotation >= 0 && parallelFlipRotation <= Math.PI) ? -1 : 1;\n var regularFlipRotation = 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);\n var gridLineSelection = updateGridLines.merge(enterGridLines);\n var updateLabels = this.labelSelection.setData(treeLabels);\n updateLabels.exit.remove();\n var enterLabels = updateLabels.enter.append(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 }\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.getBBox();\n if (bbox && bbox.width > maxLeafLabelWidth) {\n maxLeafLabelWidth = bbox.width;\n }\n });\n var labelX = sideFlag * label.padding; // label padding from the axis line\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 separatorData.push({\n y: y,\n x1: -maxLeafLabelWidth + datum.screenY + lineHeight / 2,\n x2: -maxLeafLabelWidth + datum.screenY - lineHeight / 2,\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);\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);\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.getBBox();\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.getBBox = function (includeTitle) {\n if (includeTitle === void 0) { includeTitle = true; }\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.getBBox()` 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.flyweight(label.matrix);\n var group = label.parent;\n group.computeTransformMatrix();\n matrix.preMultiplySelf(group.matrix);\n var labelBBox = label.getBBox();\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(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}());\nexport { GroupedCategoryAxis };\n","var __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})();\nimport { Chart } from \"./chart\";\nimport { numericExtent } from \"../util/array\";\nimport { Padding } from \"../util/padding\";\nimport { Group } from \"../scene/group\";\nimport { CategoryAxis } from \"./axis/categoryAxis\";\nimport { GroupedCategoryAxis } from \"./axis/groupedCategoryAxis\";\n/** Defines the orientation used when rendering data series */\nexport var CartesianChartLayout;\n(function (CartesianChartLayout) {\n CartesianChartLayout[CartesianChartLayout[\"Vertical\"] = 0] = \"Vertical\";\n CartesianChartLayout[CartesianChartLayout[\"Horizontal\"] = 1] = \"Horizontal\";\n})(CartesianChartLayout || (CartesianChartLayout = {}));\nvar CartesianChart = /** @class */ (function (_super) {\n __extends(CartesianChart, _super);\n function CartesianChart(options) {\n var _this = _super.call(this, options) || this;\n _this.axisAutoPadding = new Padding();\n _this._seriesRoot = new Group();\n _this._layout = CartesianChartLayout.Vertical;\n var xAxis = options.xAxis, yAxis = options.yAxis;\n _this._xAxis = xAxis;\n _this._yAxis = yAxis;\n _this.scene.root.append([xAxis.group, yAxis.group, _this._seriesRoot]);\n _this.scene.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 Object.defineProperty(CartesianChart.prototype, \"xAxis\", {\n get: function () {\n return this._xAxis;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CartesianChart.prototype, \"yAxis\", {\n get: function () {\n return this._yAxis;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CartesianChart.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 CartesianChart.prototype.performLayout = function () {\n if (this.dataPending || !(this.xAxis && this.yAxis)) {\n return;\n }\n var _a = this, width = _a.width, height = _a.height, legend = _a.legend;\n var shrinkRect = {\n x: 0,\n y: 0,\n width: width,\n height: height\n };\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, xAxis = _b.xAxis, yAxis = _b.yAxis;\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 xAxis.scale.range = [0, shrinkRect.width];\n xAxis.rotation = -90;\n xAxis.translation.x = Math.floor(shrinkRect.x); // TODO: remove the CartesianChart generic (possibly get rid of xAxis, yAxis too)\n xAxis.translation.y = Math.floor(shrinkRect.y + shrinkRect.height + 1);\n xAxis.label.parallel = true;\n xAxis.gridLength = shrinkRect.height;\n if (yAxis instanceof CategoryAxis || yAxis instanceof GroupedCategoryAxis) {\n yAxis.scale.range = [0, shrinkRect.height];\n }\n else {\n yAxis.scale.range = [shrinkRect.height, 0];\n }\n yAxis.translation.x = Math.floor(shrinkRect.x); // TODO: remove the CartesianChart generic (possibly get rid of xAxis, yAxis too)\n yAxis.translation.y = Math.floor(shrinkRect.y);\n yAxis.gridLength = shrinkRect.width;\n this.updateAxes();\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.positionCaptions();\n this.positionLegend();\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.updateAxes = function () {\n var _a, _b;\n var isHorizontal = this.layout === CartesianChartLayout.Horizontal;\n var xAxis = isHorizontal ? this.yAxis : this.xAxis;\n var yAxis = isHorizontal ? this.xAxis : this.yAxis;\n if (!(xAxis && yAxis)) {\n return;\n }\n var xDomains = [];\n var yDomains = [];\n this.series.filter(function (s) { return s.visible; }).forEach(function (series) {\n xDomains.push(series.getDomainX());\n yDomains.push(series.getDomainY());\n });\n var xDomain = (_a = new Array()).concat.apply(_a, xDomains);\n var yDomain = (_b = new Array()).concat.apply(_b, yDomains);\n xAxis.domain = numericExtent(xDomain) || xDomain;\n yAxis.domain = numericExtent(yDomain) || yDomain;\n xAxis.update();\n yAxis.update();\n // The `xAxis` and `yAxis` have `.this` prefix on purpose here,\n // because the local `xAxis` and `yAxis` variables may be swapped.\n var xAxisBBox = this.xAxis.getBBox();\n var yAxisBBox = this.yAxis.getBBox();\n {\n var axisThickness = Math.floor(xAxisBBox.width);\n if (this.axisAutoPadding.bottom !== axisThickness) {\n this.axisAutoPadding.bottom = axisThickness;\n this.layoutPending = true;\n }\n }\n {\n var axisThickness = Math.floor(yAxisBBox.width);\n if (this.axisAutoPadding.left !== axisThickness) {\n this.axisAutoPadding.left = axisThickness;\n this.layoutPending = true;\n }\n }\n };\n return CartesianChart;\n}(Chart));\nexport { CartesianChart };\n","var __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})();\nimport { Chart } from \"./chart\";\nimport { Padding } from \"../util/padding\";\nvar PolarChart = /** @class */ (function (_super) {\n __extends(PolarChart, _super);\n function PolarChart(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, options) || this;\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 _this._padding = new Padding(50);\n _this._series = [];\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 Object.defineProperty(PolarChart.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) {\n _this.addSeries(series);\n });\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 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 this.centerX = shrinkRect.x + shrinkRect.width / 2;\n this.centerY = shrinkRect.y + shrinkRect.height / 2;\n this.radius = Math.min(shrinkRect.width, shrinkRect.height) / 2;\n this.series.forEach(function (series) {\n series.update();\n });\n this.positionCaptions();\n this.positionLegend();\n };\n return PolarChart;\n}(Chart));\nexport { PolarChart };\n","export function ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default (function (x) { return function () { return x; }; });\n","export default function (a, b) {\n a = +a;\n b -= a;\n return function (t) { return a + b * t; };\n}\n","export default function (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}\n","import value from \"./value\";\nexport default function (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(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}\n","import value from \"./value\";\nexport default function (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(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}\n","import constant from \"./constant\";\nimport number from \"./number\";\nimport date from \"./date\";\nimport array from \"./array\";\nimport object from \"./object\";\nexport default function (a, b) {\n var t = typeof b;\n // let c;\n return b == null || t === 'boolean' ? constant(b)\n : (t === 'number' ? number\n // : t === 'string' ? ((c = color(b)) ? (b = c, rgb) : string)\n // : b instanceof color ? rgb\n : b instanceof Date ? date\n : Array.isArray(b) ? array\n : typeof b.valueOf !== 'function' && typeof b.toString !== 'function' || isNaN(b) ? object\n : number)(a, b);\n}\n","import { ascending } from \"../util/compare\";\nimport interpolateValue from \"../interpolate/value\";\nimport interpolateNumber from \"../interpolate/number\";\nimport { bisectRight } from \"../util/bisect\";\nexport var constant = function (x) { return function () { return x; }; };\nexport var 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 = identity;\n this._domain = [0, 1];\n this._range = [0, 1];\n this.transform = identity; // transforms domain value\n this.untransform = identity; // untransforms domain value\n this._interpolate = interpolateValue;\n this.rescale();\n }\n Object.defineProperty(ContinuousScale.prototype, \"clamp\", {\n get: function () {\n return this._clamp !== identity;\n },\n set: function (value) {\n this._clamp = value ? clamper(this.domain) : 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 !== 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 : 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 = bisectRight(domain, x, 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), interpolateNumber);\n }\n return this._clamp(this.untransform(this.input(y)));\n };\n return ContinuousScale;\n}());\nexport default ContinuousScale;\n","import { ascending } from \"./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 */\nexport function 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}\nexport function 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}\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 */\nexport function 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}\nexport function 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}\nfunction ascendingComparator(map) {\n return function (item, x) {\n return ascending(map(item), x);\n };\n}\n","export var 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};\nexport var 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};\nexport var 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};\nexport var 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};\nexport var 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};\nexport default borneo;\nexport var palettes = [\n borneo,\n material,\n pastel,\n bright,\n flat\n];\n","var 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}());\nexport { Color };\n","import { Group } from \"../../scene/group\";\nimport { Color } from \"../../util/color\";\nimport palette from \"../palettes\";\nvar SeriesMarker = /** @class */ (function () {\n function SeriesMarker() {\n /**\n * Marker constructor function. A series will create one marker instance per data point.\n */\n this._type = undefined;\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._size = 6;\n this._minSize = 6;\n this._enabled = true;\n // private _xOffset: number = 0;\n // set xOffset(value: number) {\n // if (this._xOffset !== value) {\n // this._xOffset = value;\n // this.update();\n // }\n // }\n // get xOffset(): number {\n // return this._xOffset;\n // }\n // private _yOffset: number = 0;\n // set yOffset(value: number) {\n // if (this._yOffset !== value) {\n // this._yOffset = value;\n // this.update();\n // }\n // }\n // get yOffset(): number {\n // return this._yOffset;\n // }\n this._fill = palette.fills[0];\n this._stroke = palette.strokes[0];\n this._strokeWidth = undefined;\n this._fillOpacity = 1;\n this._strokeOpacity = 1;\n }\n Object.defineProperty(SeriesMarker.prototype, \"type\", {\n get: function () {\n return this._type;\n },\n set: function (value) {\n if (this._type !== value) {\n this._type = value;\n if (this.onTypeChange) {\n this.onTypeChange();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SeriesMarker.prototype, \"size\", {\n get: function () {\n return this._size;\n },\n set: function (value) {\n if (this._size !== value) {\n this._size = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SeriesMarker.prototype, \"minSize\", {\n get: function () {\n return this._minSize;\n },\n set: function (value) {\n if (this._minSize !== value) {\n this._minSize = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SeriesMarker.prototype, \"enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (value) {\n if (this._enabled !== value) {\n this._enabled = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SeriesMarker.prototype, \"fill\", {\n get: function () {\n return this._fill;\n },\n set: function (value) {\n if (this._fill !== value) {\n this._fill = value;\n if (value) {\n this.stroke = Color.fromString(value).darker().toHexString();\n }\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SeriesMarker.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.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SeriesMarker.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(SeriesMarker.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.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SeriesMarker.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.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n SeriesMarker.prototype.update = function () {\n if (this.onChange) {\n this.onChange();\n }\n };\n return SeriesMarker;\n}());\nexport { SeriesMarker };\nvar Series = /** @class */ (function () {\n function Series() {\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();\n this._data = [];\n this._visible = true;\n this.tooltipEnabled = false;\n this.marker = new SeriesMarker();\n this._showInLegend = true;\n }\n // Uniquely identify series.\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 Object.defineProperty(Series.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n set: function (data) {\n this._data = data;\n this.scheduleData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Series.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.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Series.prototype.toggleSeriesItem = function (itemId, enabled) {\n this.visible = enabled;\n };\n Object.defineProperty(Series.prototype, \"showInLegend\", {\n get: function () {\n return this._showInLegend;\n },\n set: function (value) {\n if (this._showInLegend !== value) {\n this._showInLegend = value;\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Series.prototype.scheduleLayout = function () {\n if (this.chart) {\n this.chart.layoutPending = true;\n }\n };\n Series.prototype.scheduleData = function () {\n if (this.chart) {\n this.chart.dataPending = true;\n }\n };\n return Series;\n}());\nexport { Series };\n","var __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})();\nimport { Path } from \"../../scene/shape/path\";\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 return Marker;\n}(Path));\nexport { Marker };\n","var __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})();\nimport { Path } from \"../../scene/shape/path\";\nimport ContinuousScale from \"../../scale/continuousScale\";\nimport { Selection } from \"../../scene/selection\";\nimport { Group } from \"../../scene/group\";\nimport palette from \"../palettes\";\nimport { Series } from \"./series\";\nimport { numericExtent } from \"../../util/array\";\nimport { Color } from \"../../util/color\";\nimport { toFixed } from \"../../util/number\";\nimport { PointerEvents } from \"../../scene/node\";\nimport { Marker } from \"../marker/marker\";\nvar LineSeries = /** @class */ (function (_super) {\n __extends(LineSeries, _super);\n function LineSeries() {\n var _this = _super.call(this) || this;\n _this.domainX = [];\n _this.domainY = [];\n _this.xData = [];\n _this.yData = [];\n _this.lineNode = new Path();\n _this.groupSelection = Selection.select(_this.group).selectAll();\n _this._xKey = '';\n _this._xName = '';\n _this._yKey = '';\n _this._yName = '';\n _this._fill = palette.fills[0];\n _this._stroke = palette.strokes[0];\n _this._strokeWidth = 3;\n _this.highlightStyle = {\n fill: 'yellow'\n };\n var lineNode = _this.lineNode;\n lineNode.fill = undefined;\n lineNode.lineJoin = 'round';\n lineNode.pointerEvents = PointerEvents.None;\n _this.group.append(lineNode);\n _this.marker.onChange = _this.update.bind(_this);\n _this.marker.onTypeChange = _this.onMarkerTypeChange.bind(_this);\n return _this;\n }\n LineSeries.prototype.onMarkerTypeChange = function () {\n this.groupSelection = this.groupSelection.setData([]);\n this.groupSelection.exit.remove();\n this.update();\n };\n Object.defineProperty(LineSeries.prototype, \"chart\", {\n get: function () {\n return this._chart;\n },\n set: function (chart) {\n if (this._chart !== chart) {\n this._chart = chart;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\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, chart = _a.chart, xKey = _a.xKey, yKey = _a.yKey;\n if (!(chart && chart.xAxis && chart.yAxis)) {\n return false;\n }\n if (!(xKey && yKey)) {\n this._data = [];\n }\n this.xData = this.data.map(function (datum) { return datum[xKey]; });\n this.yData = this.data.map(function (datum) { return datum[yKey]; });\n var isContinuousX = chart.xAxis.scale instanceof ContinuousScale;\n var domainX = isContinuousX ? (numericExtent(this.xData) || [0, 1]) : this.xData;\n var domainY = numericExtent(this.yData) || [0, 1];\n if (isContinuousX) {\n var _b = domainX, min_1 = _b[0], max_1 = _b[1];\n if (min_1 === max_1) {\n domainX[0] = min_1 - 1;\n domainX[1] = max_1 + 1;\n }\n }\n var min = domainY[0], max = domainY[1];\n if (min === max) {\n domainY[0] = min - 1;\n domainY[1] = max + 1;\n }\n this.domainX = domainX;\n this.domainY = domainY;\n return true;\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.stroke = Color.fromString(value).darker().toHexString();\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 LineSeries.prototype.highlightNode = function (node) {\n if (!(node instanceof 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 chart = this.chart;\n var visible = this.group.visible = this.visible;\n if (!chart || !visible || chart.dataPending || chart.layoutPending || !(chart.xAxis && chart.yAxis)) {\n return;\n }\n var xScale = chart.xAxis.scale, yScale = chart.yAxis.scale;\n var xOffset = (xScale.bandwidth || 0) / 2;\n var yOffset = (yScale.bandwidth || 0) / 2;\n var _a = this, data = _a.data, xData = _a.xData, yData = _a.yData, fill = _a.fill, marker = _a.marker, lineNode = _a.lineNode;\n var linePath = lineNode.path;\n var Marker = marker.type;\n var markerSize = marker.size;\n var markerFill = this.fill;\n var markerStroke = this.stroke;\n var markerStrokeWidth = marker.strokeWidth;\n linePath.clear();\n var groupSelectionData = [];\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 fill: markerFill,\n stroke: markerStroke,\n strokeWidth: markerStrokeWidth,\n size: markerSize\n });\n }\n });\n lineNode.stroke = fill; // use fill colour for the line\n lineNode.strokeWidth = this.strokeWidth;\n var updateGroups = this.groupSelection.setData(groupSelectionData);\n updateGroups.exit.remove();\n var enterGroups = updateGroups.enter.append(Group);\n enterGroups.append(Marker);\n var highlightedNode = this.highlightedNode;\n var groupSelection = updateGroups.merge(enterGroups);\n var _b = this.highlightStyle, highlightFill = _b.fill, highlightStroke = _b.stroke;\n groupSelection.selectByClass(Marker)\n .each(function (node, datum) {\n node.translationX = datum.x;\n node.translationY = datum.y;\n node.size = datum.size;\n node.fill = node === highlightedNode && highlightFill !== undefined ? highlightFill : datum.fill;\n node.stroke = node === highlightedNode && highlightStroke !== undefined ? highlightStroke : datum.stroke;\n node.fillOpacity = marker.fillOpacity;\n node.strokeOpacity = marker.strokeOpacity;\n node.strokeWidth = datum.strokeWidth;\n node.visible = marker.enabled && datum.size > 0;\n });\n this.groupSelection = groupSelection;\n };\n LineSeries.prototype.getDomainX = function () {\n return this.domainX;\n };\n LineSeries.prototype.getDomainY = function () {\n return this.domainY;\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' ? toFixed(xValue) : String(xValue);\n var yString = typeof yValue === 'number' ? toFixed(yValue) : String(yValue);\n return titleString + \"
\" + xString + \": \" + yString + \"
\";\n }\n };\n LineSeries.prototype.listSeriesItems = function (data) {\n if (this.data.length && this.xKey && this.yKey) {\n data.push({\n id: this.id,\n itemId: undefined,\n enabled: this.visible,\n label: {\n text: this.title || this.yKey\n },\n marker: {\n fill: this.fill,\n stroke: this.stroke\n }\n });\n }\n };\n LineSeries.className = 'LineSeries';\n return LineSeries;\n}(Series));\nexport { LineSeries };\n","var __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})();\nimport ContinuousScale from \"./continuousScale\";\nimport ticks, { tickIncrement } from \"../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(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 = tickIncrement(start, stop, count);\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = 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 = 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));\nexport { LinearScale };\n/**\n * Creates a continuous scale with the default interpolator and no clamping.\n */\nexport default function scaleLinear() {\n return new LinearScale();\n}\n","var __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})();\nimport { Selection } from \"../../scene/selection\";\nimport { Group } from \"../../scene/group\";\nimport { Series } from \"./series\";\nimport { numericExtent } from \"../../util/array\";\nimport { toFixed } from \"../../util/number\";\nimport linearScale from \"../../scale/linearScale\";\nimport { Marker } from \"../marker/marker\";\nvar ScatterSeries = /** @class */ (function (_super) {\n __extends(ScatterSeries, _super);\n function ScatterSeries() {\n var _this = _super.call(this) || this;\n _this.domainX = [];\n _this.domainY = [];\n _this.xData = [];\n _this.yData = [];\n _this.sizeData = [];\n _this.sizeScale = linearScale();\n _this.groupSelection = Selection.select(_this.group).selectAll();\n _this._xKey = '';\n _this._yKey = '';\n _this.xName = 'X';\n _this.yName = 'Y';\n _this.sizeName = 'Size';\n _this.labelName = 'Label';\n _this.highlightStyle = {\n fill: 'yellow'\n };\n _this.marker.onChange = _this.update.bind(_this);\n _this.marker.onTypeChange = _this.onMarkerTypeChange.bind(_this);\n return _this;\n }\n ScatterSeries.prototype.onMarkerTypeChange = function () {\n this.groupSelection = this.groupSelection.setData([]);\n this.groupSelection.exit.remove();\n this.update();\n };\n Object.defineProperty(ScatterSeries.prototype, \"chart\", {\n get: function () {\n return this._chart;\n },\n set: function (chart) {\n if (this._chart !== chart) {\n this._chart = chart;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScatterSeries.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(ScatterSeries.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(ScatterSeries.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(ScatterSeries.prototype, \"sizeKey\", {\n get: function () {\n return this._sizeKey;\n },\n set: function (value) {\n if (this._sizeKey !== value) {\n this._sizeKey = value;\n this.sizeData = [];\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScatterSeries.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 ScatterSeries.prototype.processData = function () {\n var _a = this, chart = _a.chart, xKey = _a.xKey, yKey = _a.yKey, sizeKey = _a.sizeKey;\n if (!(chart && chart.xAxis && chart.yAxis)) {\n return false;\n }\n if (!(xKey && yKey)) {\n this._data = [];\n }\n this.xData = this.data.map(function (d) { return d[xKey]; });\n this.yData = this.data.map(function (d) { return d[yKey]; });\n if (sizeKey) {\n this.sizeData = this.data.map(function (d) { return d[sizeKey]; });\n }\n else {\n this.sizeData = [];\n }\n this.sizeScale.domain = numericExtent(this.sizeData) || [1, 1];\n this.domainX = this.calculateDomain(this.xData);\n this.domainY = this.calculateDomain(this.yData);\n return true;\n };\n ScatterSeries.prototype.calculateDomain = function (data) {\n var domain = numericExtent(data) || [0, 1];\n var min = domain[0], max = domain[1];\n if (min === max) {\n domain[0] = min - 1;\n domain[1] = max + 1;\n }\n return domain;\n };\n ScatterSeries.prototype.highlightNode = function (node) {\n if (!(node instanceof 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 chart = this.chart;\n var visible = this.group.visible = this.visible;\n if (!chart || !visible || chart.dataPending || chart.layoutPending || !(chart.xAxis && chart.yAxis)) {\n return;\n }\n var xAxis = chart.xAxis, yAxis = chart.yAxis;\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 _a = this, data = _a.data, xData = _a.xData, yData = _a.yData, sizeData = _a.sizeData, sizeScale = _a.sizeScale, marker = _a.marker, highlightedNode = _a.highlightedNode;\n var Marker = marker.type;\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 fill: marker.fill,\n stroke: marker.stroke,\n strokeWidth: marker.strokeWidth,\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);\n enterGroups.append(Marker);\n var groupSelection = updateGroups.merge(enterGroups);\n var _b = this.highlightStyle, highlightFill = _b.fill, highlightStroke = _b.stroke;\n groupSelection.selectByClass(Marker)\n .each(function (node, datum) {\n node.translationX = datum.x;\n node.translationY = datum.y;\n node.size = datum.size;\n node.fill = node === highlightedNode && highlightFill !== undefined ? highlightFill : datum.fill;\n node.stroke = node === highlightedNode && highlightStroke !== undefined ? highlightStroke : datum.stroke;\n node.fillOpacity = marker.fillOpacity;\n node.strokeOpacity = marker.strokeOpacity;\n node.strokeWidth = datum.strokeWidth;\n node.visible = marker.enabled && datum.size > 0;\n });\n this.groupSelection = groupSelection;\n };\n ScatterSeries.prototype.getDomainX = function () {\n return this.domainX;\n };\n ScatterSeries.prototype.getDomainY = function () {\n return this.domainY;\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;\n var color = this.marker.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 + \": \" + toFixed(xValue) + \"
\" + yName + \": \" + 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 if (this.data.length && this.xKey && this.yKey) {\n data.push({\n id: this.id,\n itemId: undefined,\n enabled: this.visible,\n label: {\n text: this.title || this.yKey\n },\n marker: {\n fill: this.marker.fill || 'gray',\n stroke: this.marker.stroke || 'black'\n }\n });\n }\n };\n ScatterSeries.className = 'ScatterSeries';\n return ScatterSeries;\n}(Series));\nexport { ScatterSeries };\n","var __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};\nimport { Group } from \"../../scene/group\";\nimport { Selection } from \"../../scene/selection\";\nimport { Rect } from \"../../scene/shape/rect\";\nimport { Text } from \"../../scene/shape/text\";\nimport { BandScale } from \"../../scale/bandScale\";\nimport palette from \"../palettes\";\nimport { Series } from \"./series\";\nimport { Label } from \"../label\";\nimport { PointerEvents } from \"../../scene/node\";\nimport { sumPositiveValues } from \"../../util/array\";\nimport { Color } from \"../../util/color\";\nimport { toFixed } from \"../../util/number\";\nimport { NumberAxis } from \"../axis/numberAxis\";\nvar BarSeriesNodeTag;\n(function (BarSeriesNodeTag) {\n BarSeriesNodeTag[BarSeriesNodeTag[\"Bar\"] = 0] = \"Bar\";\n BarSeriesNodeTag[BarSeriesNodeTag[\"Label\"] = 1] = \"Label\";\n})(BarSeriesNodeTag || (BarSeriesNodeTag = {}));\nvar BarSeriesLabel = /** @class */ (function (_super) {\n __extends(BarSeriesLabel, _super);\n function BarSeriesLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(BarSeriesLabel.prototype, \"formatter\", {\n get: function () {\n return this._formatter;\n },\n set: function (value) {\n if (this._formatter !== value) {\n this._formatter = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n return BarSeriesLabel;\n}(Label));\nvar BarSeries = /** @class */ (function (_super) {\n __extends(BarSeries, _super);\n function BarSeries() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // Need to put bar and label nodes into separate groups, because even though label nodes are\n // created after the bar nodes, this only guarantees that labels will always be on top of bars\n // on the first run. If on the next run more bars are added, they might clip the labels\n // rendered during the previous run.\n _this.rectGroup = _this.group.appendChild(new Group);\n _this.textGroup = _this.group.appendChild(new Group);\n _this.rectSelection = Selection.select(_this.rectGroup).selectAll();\n _this.textSelection = Selection.select(_this.textGroup).selectAll();\n _this.label = (function () {\n var label = new BarSeriesLabel();\n label.enabled = false;\n label.onChange = _this.update.bind(_this);\n return label;\n })();\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 = palette.fills;\n _this._strokes = palette.strokes;\n _this._fillOpacity = 1;\n _this._strokeOpacity = 1;\n _this.xData = [];\n _this.yData = [];\n _this.domainY = [];\n /**\n * Used to get the position of bars within each group.\n */\n _this.groupScale = new BandScale();\n _this._xKey = '';\n _this._xName = '';\n /**\n * With a single value in the `yKeys` array we get the regular bar series.\n * With multiple values, we get the stacked bar series.\n * If the {@link grouped} set to `true`, we get the grouped bar 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 return _this;\n }\n Object.defineProperty(BarSeries.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.fromString(color).darker().toHexString(); });\n this.scheduleData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BarSeries.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(BarSeries.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(BarSeries.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(BarSeries.prototype, \"chart\", {\n get: function () {\n return this._chart;\n },\n set: function (chart) {\n if (this._chart !== chart) {\n this._chart = chart;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BarSeries.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(BarSeries.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(BarSeries.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(BarSeries.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(BarSeries.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(BarSeries.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(BarSeries.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(BarSeries.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 BarSeries.prototype.highlightNode = function (node) {\n if (!(node instanceof Rect)) {\n return;\n }\n this.highlightedNode = node;\n this.scheduleLayout();\n };\n BarSeries.prototype.dehighlightNode = function () {\n this.highlightedNode = undefined;\n this.scheduleLayout();\n };\n BarSeries.prototype.processData = function () {\n var _a = this, xKey = _a.xKey, yKeys = _a.yKeys;\n if (!(xKey && yKeys.length)) {\n this._data = [];\n }\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 _b = this, yKeyEnabled = _b.yKeyEnabled, data = _b.data;\n this.xData = data.map(function (datum) { return datum[xKey]; });\n this.yData = data.map(function (datum) { return yKeys.map(function (key) {\n var value = datum[key];\n return isFinite(value) && yKeyEnabled.get(key) ? 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 sumPositiveValues(values); }); // used for normalization of stacked bars\n var _c = this, yData = _c.yData, normalizedTo = _c.normalizedTo;\n var yMin = Infinity;\n var yMax = -Infinity;\n if (this.grouped) {\n // Find the tallest positive/negative bar in each group,\n // then find the tallest positive/negative bar overall.\n // The `yMin` should always be <= 0,\n // otherwise with the `yData` like [300, 200, 100] the last bar\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 if (yMin === yMax || !isFinite(yMin) || !isFinite(yMax)) {\n yMin = 0;\n yMax = 1;\n // console.warn('Zero or infinite y-range.');\n }\n this.domainY = [yMin, yMax];\n var chart = this.chart;\n if (chart) {\n chart.updateAxes();\n }\n return true;\n };\n BarSeries.prototype.getDomainX = function () {\n return this.xData;\n };\n BarSeries.prototype.getDomainY = function () {\n return this.domainY;\n };\n BarSeries.prototype.update = function () {\n var chart = this.chart;\n var visible = this.group.visible = this.visible;\n if (!chart || !visible || chart.dataPending || chart.layoutPending || !(chart.xAxis && chart.yAxis)) {\n return;\n }\n var selectionData = this.generateSelectionData();\n this.updateRectSelection(selectionData);\n this.updateTextSelection(selectionData);\n };\n BarSeries.prototype.generateSelectionData = function () {\n var _a = this.chart, xAxis = _a.xAxis, yAxis = _a.yAxis;\n var flipXY = xAxis instanceof NumberAxis;\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 barWidth = 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 barX = 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) : barX,\n y: flipXY ? barX : Math.min(y, bottomY),\n width: flipXY ? Math.abs(bottomY - y) : barWidth,\n height: flipXY ? barWidth : 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 : barX + barWidth / 2,\n y: flipXY ? barX + barWidth / 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 BarSeries.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).each(function (rect) {\n rect.tag = BarSeriesNodeTag.Bar;\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 BarSeries.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).each(function (text) {\n text.tag = BarSeriesNodeTag.Label;\n text.pointerEvents = 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 BarSeries.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' ? toFixed(xValue) : String(xValue);\n var yString = typeof yValue === 'number' ? toFixed(yValue) : String(yValue);\n return titleString + \"
\" + xString + \": \" + yString + \"
\";\n }\n };\n BarSeries.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 }\n });\n });\n }\n };\n BarSeries.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 BarSeries.className = 'BarSeries';\n return BarSeries;\n}(Series));\nexport { BarSeries };\n","var Label = /** @class */ (function () {\n function Label() {\n this._enabled = true;\n this._fontSize = 12;\n this._fontFamily = 'Verdana, sans-serif';\n this._color = 'black';\n }\n Object.defineProperty(Label.prototype, \"enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (value) {\n if (this._enabled !== value) {\n this._enabled = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.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.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.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.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.prototype, \"fontSize\", {\n get: function () {\n return this._fontSize;\n },\n set: function (value) {\n if (this._fontSize !== value) {\n this._fontSize = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.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.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.prototype, \"color\", {\n get: function () {\n return this._color;\n },\n set: function (value) {\n if (this._color !== value) {\n this._color = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Label.prototype.update = function () {\n if (this.onChange) {\n this.onChange();\n }\n };\n return Label;\n}());\nexport { Label };\n","var __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})();\nimport { Axis } from \"../../axis\";\nimport linearScale from \"../../scale/linearScale\";\nvar NumberAxis = /** @class */ (function (_super) {\n __extends(NumberAxis, _super);\n function NumberAxis() {\n var _this = _super.call(this, 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}(Axis));\nexport { NumberAxis };\n","var __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})();\nimport { Group } from \"../../scene/group\";\nimport { Line } from \"../../scene/shape/line\";\nimport { Text } from \"../../scene/shape/text\";\nimport { Selection } from \"../../scene/selection\";\nimport { LinearScale } from \"../../scale/linearScale\";\nimport palette from \"../palettes\";\nimport { Sector } from \"../../scene/shape/sector\";\nimport { Series } from \"./series\";\nimport { Label } from \"../label\";\nimport { PointerEvents } from \"../../scene/node\";\nimport { normalizeAngle180, toRadians } from \"../../util/angle\";\nimport { Color } from \"../../util/color\";\nimport { toFixed } from \"../../util/number\";\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 Object.defineProperty(PieSeriesLabel.prototype, \"enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (value) {\n if (this._enabled !== value) {\n this._enabled = value;\n this.update();\n if (this.onDataChange) {\n this.onDataChange();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeriesLabel.prototype, \"offset\", {\n get: function () {\n return this._offset;\n },\n set: function (value) {\n if (this._offset !== value) {\n this._offset = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeriesLabel.prototype, \"minAngle\", {\n get: function () {\n return this._minAngle;\n },\n set: function (value) {\n if (this._minAngle !== value) {\n this._minAngle = value;\n if (this.onDataChange) {\n this.onDataChange();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n return PieSeriesLabel;\n}(Label));\nvar PieSeries = /** @class */ (function (_super) {\n __extends(PieSeries, _super);\n function PieSeries() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.radiusScale = new LinearScale();\n _this.groupSelection = 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();\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 = palette.strokes;\n _this._calloutStrokeWidth = 1;\n _this._calloutLength = 10;\n _this.label = (function () {\n var label = new PieSeriesLabel();\n label.onChange = _this.scheduleLayout.bind(_this);\n label.onDataChange = _this.scheduleData.bind(_this);\n return label;\n })();\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 = palette.fills;\n _this._strokes = palette.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 return _this;\n }\n Object.defineProperty(PieSeries.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n set: function (data) {\n this._data = data;\n this.dataEnabled = data.map(function () { return true; });\n this.scheduleData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"title\", {\n get: function () {\n return this._title;\n },\n set: function (value) {\n var _this = this;\n var oldTitle = this._title;\n if (oldTitle !== value) {\n if (oldTitle) {\n oldTitle.onChange = undefined;\n this.group.removeChild(oldTitle.node);\n }\n if (value) {\n value.node.textBaseline = 'bottom';\n value.onChange = function () { return _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, \"chart\", {\n get: function () {\n return this._chart;\n },\n set: function (chart) {\n if (this._chart !== chart) {\n this._chart = chart;\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.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)) {\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.getDomainX = function () {\n return this.angleScale.domain;\n };\n PieSeries.prototype.getDomainY = function () {\n return this.radiusScale.domain;\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 = 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 = toRadians(_this.label.minAngle);\n var labelVisible = labelKey && span > labelMinAngle;\n var midAngle180 = 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 (!chart || !visible || 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, chart.radius];\n this.group.translationX = chart.centerX;\n this.group.translationY = chart.centerY;\n if (title) {\n title.node.translationY = -chart.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);\n enterGroups.append(Sector).each(function (node) { return node.tag = PieSeriesNodeTag.Sector; });\n enterGroups.append(Line).each(function (node) {\n node.tag = PieSeriesNodeTag.Callout;\n node.pointerEvents = PointerEvents.None;\n });\n enterGroups.append(Text).each(function (node) {\n node.tag = PieSeriesNodeTag.Label;\n node.pointerEvents = 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_1 = _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_1;\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' ? 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 }\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}(Series));\nexport { PieSeries };\n","var __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};\nimport { Group } from \"../../scene/group\";\nimport { Selection } from \"../../scene/selection\";\nimport { Series } from \"./series\";\nimport ContinuousScale from \"../../scale/continuousScale\";\nimport { PointerEvents } from \"../../scene/node\";\nimport { sumPositiveValues } from \"../../util/array\";\nimport { toFixed } from \"../../util/number\";\nimport { Path } from \"../../scene/shape/path\";\nimport palette from \"../palettes\";\nimport { numericExtent } from \"../../util/array\";\nimport { Marker } from \"../marker/marker\";\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);\n _this.strokeGroup = _this.group.appendChild(new Group);\n _this.markerGroup = _this.group.appendChild(new Group);\n _this.areaSelection = Selection.select(_this.areaGroup).selectAll();\n _this.strokeSelection = Selection.select(_this.strokeGroup).selectAll();\n _this.markerSelection = 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._fills = palette.fills;\n _this._strokes = ['white'];\n _this._fillOpacity = 1;\n _this._strokeOpacity = 1;\n _this.xData = [];\n _this.yData = [];\n _this.domainY = [];\n _this._xKey = '';\n _this._xName = '';\n _this._yKeys = [];\n _this._yNames = [];\n _this._strokeWidth = 3;\n _this.highlightStyle = {\n fill: 'yellow'\n };\n _this.marker.onChange = _this.update.bind(_this);\n _this.marker.onTypeChange = _this.onMarkerTypeChange.bind(_this);\n return _this;\n }\n AreaSeries.prototype.onMarkerTypeChange = function () {\n this.markerSelection = this.markerSelection.setData([]);\n this.markerSelection.exit.remove();\n this.update();\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, \"chart\", {\n get: function () {\n return this._chart;\n },\n set: function (chart) {\n if (this._chart !== chart) {\n this._chart = chart;\n this.scheduleData();\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)) {\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, chart = _a.chart, xKey = _a.xKey, yKeys = _a.yKeys;\n if (!(chart && chart.xAxis && chart.yAxis)) {\n return false;\n }\n if (!(xKey && yKeys.length)) {\n this._data = [];\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 _b = this, yKeyEnabled = _b.yKeyEnabled, data = _b.data;\n this.xData = data.map(function (datum) { return datum[xKey]; });\n this.yData = data.map(function (datum) { return yKeys.map(function (yKey) {\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 ySums = this.yData.map(function (values) { return sumPositiveValues(values); }); // used for normalization\n var _c = this, xData = _c.xData, yData = _c.yData, normalizedTo = _c.normalizedTo;\n var isContinuousX = chart.xAxis.scale instanceof ContinuousScale;\n var domainX = isContinuousX ? (numericExtent(xData) || [0, 1]) : xData;\n if (isContinuousX) {\n var _d = domainX, min = _d[0], max = _d[1];\n if (min === max) {\n domainX[0] = min - 1;\n domainX[1] = max + 1;\n }\n }\n var yMin = Infinity;\n var yMax = -Infinity;\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 === yMax || !isFinite(yMin) || !isFinite(yMax)) {\n yMin = 0;\n yMax = 1;\n // console.warn('Zero or infinite y-range.');\n }\n this.domainY = [yMin, yMax];\n if (chart) {\n chart.updateAxes();\n }\n return true;\n };\n AreaSeries.prototype.getDomainX = function () {\n return this.xData;\n };\n AreaSeries.prototype.getDomainY = function () {\n return this.domainY;\n };\n AreaSeries.prototype.update = function () {\n var chart = this.chart;\n var visible = this.group.visible = this.visible;\n if (!chart || !visible || chart.dataPending || chart.layoutPending || !(chart.xAxis && chart.yAxis)) {\n return;\n }\n var _a = this.generateSelectionData(), areaSelectionData = _a.areaSelectionData, markerSelectionData = _a.markerSelectionData;\n this.updateAreaSelection(areaSelectionData);\n this.updateStrokeSelection(areaSelectionData);\n this.updateMarkerSelection(markerSelectionData);\n };\n AreaSeries.prototype.generateSelectionData = function () {\n var _this = this;\n var _a = this, yKeys = _a.yKeys, fills = _a.fills, strokes = _a.strokes, data = _a.data, xData = _a.xData, yData = _a.yData, marker = _a.marker, chart = _a.chart;\n var _b = chart, xScale = _b.xAxis.scale, yScale = _b.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 var markerSize = this.marker.size;\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 size: markerSize,\n text: _this.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)\n .each(function (path) {\n path.stroke = undefined;\n path.pointerEvents = 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)\n .each(function (path) {\n path.fill = undefined;\n path.lineJoin = path.lineCap = 'round';\n path.pointerEvents = 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 _this = this;\n var marker = this.marker;\n var Marker = marker.type;\n if (!Marker) {\n return;\n }\n var _a = this, yKeyEnabled = _a.yKeyEnabled, highlightedNode = _a.highlightedNode, _b = _a.highlightStyle, fill = _b.fill, stroke = _b.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 node.translationX = datum.x;\n node.translationY = datum.y;\n node.size = datum.size;\n node.fill = node === highlightedNode && fill !== undefined ? fill : datum.fill;\n node.stroke = node === highlightedNode && stroke !== undefined ? stroke : datum.stroke;\n node.fillOpacity = marker.fillOpacity;\n node.strokeOpacity = marker.strokeOpacity;\n node.strokeWidth = marker.strokeWidth !== undefined ? marker.strokeWidth : _this.strokeWidth;\n node.visible = marker.enabled && datum.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' ? toFixed(xValue) : String(xValue);\n var yString = typeof yValue === 'number' ? toFixed(yValue) : String(yValue);\n return title + \"
\" + xString + \": \" + yString + \"
\";\n }\n };\n AreaSeries.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 }\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}(Series));\nexport { AreaSeries };\n","var __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})();\nimport { Shape } from \"./shape\";\nimport { Path2D } from \"../path2D\";\nimport { normalizeAngle360 } from \"../../util/angle\";\nimport { isEqual } from \"../../util/number\";\nimport { BBox } from \"../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();\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 _this.getBBox = function () {\n var radius = _this.outerRadius;\n return new BBox(_this.centerX - radius, _this.centerY - radius, radius * 2, radius * 2);\n };\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.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 isEqual(normalizeAngle360(this.startAngle), 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));\nexport { Sector };\n","import { Constants, Promise, TextFilter, _ } from \"@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___';\nexport var 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 || (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() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = rowModel;\n }\n this.filterParams = this.colDef.filterParams ? this.colDef.filterParams : {};\n if (_.exists(this.filterParams) && _.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 : 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 = Promise.resolve([]);\n }\n else {\n this.filterValuesExternalPromise = 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 = _.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 = _.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 = _.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(_.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 = _.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 _.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}());\nexport { SetValueModel };\n","var DropShadow = /** @class */ (function () {\n function DropShadow() {\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 }\n Object.defineProperty(DropShadow.prototype, \"enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (value) {\n if (this._enabled !== value) {\n this._enabled = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropShadow.prototype, \"color\", {\n get: function () {\n return this._color;\n },\n set: function (value) {\n if (this._color !== value) {\n this._color = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropShadow.prototype, \"xOffset\", {\n get: function () {\n return this._xOffset;\n },\n set: function (value) {\n if (this._xOffset !== value) {\n this._xOffset = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropShadow.prototype, \"yOffset\", {\n get: function () {\n return this._yOffset;\n },\n set: function (value) {\n if (this._yOffset !== value) {\n this._yOffset = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropShadow.prototype, \"blur\", {\n get: function () {\n return this._blur;\n },\n set: function (value) {\n if (this._blur !== value) {\n this._blur = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n DropShadow.prototype.update = function () {\n if (this.onChange) {\n this.onChange();\n }\n };\n return DropShadow;\n}());\nexport { DropShadow };\n","import { Padding } from \"./util/padding\";\nimport { Text } from \"./scene/shape/text\";\nimport { PointerEvents } from \"./scene/node\";\nvar Caption = /** @class */ (function () {\n function Caption() {\n this.node = new Text();\n this._enabled = true;\n this._padding = new Padding(10);\n var node = this.node;\n node.textAlign = 'center';\n node.textBaseline = 'top';\n node.pointerEvents = PointerEvents.None;\n }\n Object.defineProperty(Caption.prototype, \"text\", {\n get: function () {\n return this.node.text;\n },\n set: function (value) {\n if (this.node.text !== value) {\n this.node.text = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Caption.prototype, \"fontStyle\", {\n get: function () {\n return this.node.fontStyle;\n },\n set: function (value) {\n if (this.node.fontStyle !== value) {\n this.node.fontStyle = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Caption.prototype, \"fontWeight\", {\n get: function () {\n return this.node.fontWeight;\n },\n set: function (value) {\n if (this.node.fontWeight !== value) {\n this.node.fontWeight = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Caption.prototype, \"fontSize\", {\n get: function () {\n return this.node.fontSize;\n },\n set: function (value) {\n if (this.node.fontSize !== value) {\n this.node.fontSize = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Caption.prototype, \"fontFamily\", {\n get: function () {\n return this.node.fontFamily;\n },\n set: function (value) {\n if (this.node.fontFamily !== value) {\n this.node.fontFamily = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Caption.prototype, \"color\", {\n get: function () {\n return this.node.fill || '';\n },\n set: function (value) {\n if (this.node.fill !== value) {\n this.node.fill = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Caption.prototype, \"enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (value) {\n if (this._enabled !== value) {\n this._enabled = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Caption.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 Caption.prototype.update = function () {\n if (this.onChange) {\n this.onChange();\n }\n };\n return Caption;\n}());\nexport { Caption };\n","var __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})();\nimport { CartesianChartLayout, CartesianChart } from \"./cartesianChart\";\nimport { numericExtent } from \"../util/array\";\nvar GroupedCategoryChart = /** @class */ (function (_super) {\n __extends(GroupedCategoryChart, _super);\n function GroupedCategoryChart(options) {\n return _super.call(this, options) || this;\n }\n GroupedCategoryChart.prototype.updateAxes = function () {\n var _a, _b;\n var isHorizontal = this.layout === CartesianChartLayout.Horizontal;\n var xAxis = isHorizontal ? this.yAxis : this.xAxis;\n var yAxis = isHorizontal ? this.xAxis : this.yAxis;\n if (!(xAxis && yAxis)) {\n return;\n }\n var xDomains = [];\n var yDomains = [];\n var isNumericXAxis = undefined;\n this.series.filter(function (s) { return s.visible; }).forEach(function (series) {\n var xDomain = series.getDomainX();\n if (isNumericXAxis === undefined) {\n // always add first X domain\n xDomains.push(xDomain);\n isNumericXAxis = typeof xDomain[0] === 'number';\n }\n else if (isNumericXAxis) {\n // only add further X domains if the axis is numeric\n xDomains.push(xDomain);\n }\n yDomains.push(series.getDomainY());\n });\n var xDomain = (_a = new Array()).concat.apply(_a, xDomains);\n var yDomain = (_b = new Array()).concat.apply(_b, yDomains);\n xAxis.domain = numericExtent(xDomain) || xDomain;\n yAxis.domain = numericExtent(yDomain) || yDomain;\n xAxis.update();\n yAxis.update();\n // The `xAxis` and `yAxis` have `.this` prefix on purpose here,\n // because the local `xAxis` and `yAxis` variables may be swapped.\n var xAxisBBox = this.xAxis.getBBox();\n var yAxisBBox = this.yAxis.getBBox();\n {\n var axisThickness = Math.floor(yAxisBBox.width);\n if (this.axisAutoPadding.left !== axisThickness) {\n this.axisAutoPadding.left = axisThickness;\n this.layoutPending = true;\n }\n }\n {\n var axisThickness = Math.floor(isHorizontal ? xAxisBBox.width : xAxisBBox.height);\n if (this.axisAutoPadding.bottom !== axisThickness) {\n this.axisAutoPadding.bottom = axisThickness;\n this.layoutPending = true;\n }\n }\n };\n return GroupedCategoryChart;\n}(CartesianChart));\nexport { GroupedCategoryChart };\n","var __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})();\nimport { Marker } from \"./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 size = this.size * 1.2;\n var x = this.x;\n var y = this.y;\n var path = this.path;\n path.clear();\n path.cubicArc(x, y, size, size, 0, 0, Math.PI * 2, 0);\n path.closePath();\n };\n Circle.className = 'Circle';\n return Circle;\n}(Marker));\nexport { Circle };\n","import { CartesianChart, CartesianChartLayout } from \"./chart/cartesianChart\";\nimport { PolarChart } from \"./chart/polarChart\";\nimport { LineSeries } from \"./chart/series/lineSeries\";\nimport { ScatterSeries } from \"./chart/series/scatterSeries\";\nimport { BarSeries } from \"./chart/series/barSeries\";\nimport { AreaSeries } from \"./chart/series/areaSeries\";\nimport { PieSeries } from \"./chart/series/pieSeries\";\nimport { DropShadow } from \"./scene/dropShadow\";\nimport { CategoryAxis } from \"./chart/axis/categoryAxis\";\nimport { NumberAxis } from \"./chart/axis/numberAxis\";\nimport { Padding } from \"./util/padding\";\nimport { Caption } from \"./caption\";\nimport { GroupedCategoryAxis } from \"./chart/axis/groupedCategoryAxis\";\nimport { GroupedCategoryChart } from \"./chart/groupedCategoryChart\";\nimport { Circle } from \"./chart/marker/circle\";\nvar ChartBuilder = /** @class */ (function () {\n function ChartBuilder() {\n }\n ChartBuilder.createCartesianChart = function (parent, xAxis, yAxis, document) {\n return new CartesianChart({\n parent: parent,\n xAxis: xAxis,\n yAxis: yAxis,\n document: document,\n });\n };\n ChartBuilder.createGroupedCategoryChart = function (parent, xAxis, yAxis, document) {\n return new GroupedCategoryChart({\n parent: parent,\n xAxis: xAxis,\n yAxis: yAxis,\n document: document,\n });\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 = CartesianChartLayout.Horizontal;\n ChartBuilder.initChart(chart, options);\n if (options.series) {\n chart.series = options.series.map(function (s) { return ChartBuilder.initBarSeries(new BarSeries(), 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 BarSeries(), s); });\n }\n return chart;\n };\n ChartBuilder.createLineChart = 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.initLineSeries(new LineSeries(), s); });\n }\n return chart;\n };\n ChartBuilder.createScatterChart = function (parent, options) {\n var chart = this.createCartesianChart(parent, ChartBuilder.createNumberAxis(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.initScatterSeries(new 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(), s); });\n }\n return chart;\n };\n ChartBuilder.createPolarChart = function (parent) {\n return new PolarChart({ parent: parent });\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(), 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 BarSeries(), 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 = CartesianChartLayout.Horizontal;\n ChartBuilder.initChart(chart, options);\n if (options.series) {\n chart.series = options.series.map(function (s) { return ChartBuilder.initBarSeries(new BarSeries(), 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(), 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(), 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(), options);\n case 'scatter':\n return ChartBuilder.initScatterSeries(new ScatterSeries(), options);\n case 'bar':\n return ChartBuilder.initBarSeries(new BarSeries(), options);\n case 'area':\n return ChartBuilder.initAreaSeries(new AreaSeries(), options);\n case 'pie':\n return ChartBuilder.initPieSeries(new 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(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, 'yKey', field.yKey);\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 this.setValueIfExists(series.marker, 'fillOpacity', fill.opacity);\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 this.setValueIfExists(series.marker, 'strokeOpacity', stroke.opacity);\n }\n if (highlightStyle) {\n this.setValueIfExists(series.highlightStyle, 'fill', highlightStyle.fill && highlightStyle.fill.color);\n this.setValueIfExists(series.highlightStyle, 'stroke', highlightStyle.stroke && highlightStyle.stroke.color);\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 this.setValueIfExists(series.marker, 'fillOpacity', fill.opacity);\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 this.setValueIfExists(series.marker, 'strokeOpacity', stroke.opacity);\n }\n if (highlightStyle) {\n this.setValueIfExists(series.highlightStyle, 'fill', highlightStyle.fill && highlightStyle.fill.color);\n this.setValueIfExists(series.highlightStyle, 'stroke', highlightStyle.stroke && highlightStyle.stroke.color);\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.setValueIfExists(series.highlightStyle, 'fill', highlightStyle.fill && highlightStyle.fill.color);\n this.setValueIfExists(series.highlightStyle, 'stroke', highlightStyle.stroke && highlightStyle.stroke.color);\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.setValueIfExists(series.highlightStyle, 'fill', highlightStyle.fill && highlightStyle.fill.color);\n this.setValueIfExists(series.highlightStyle, 'stroke', highlightStyle.stroke && highlightStyle.stroke.color);\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.setValueIfExists(series.highlightStyle, 'fill', highlightStyle.fill && highlightStyle.fill.color);\n this.setValueIfExists(series.highlightStyle, 'stroke', highlightStyle.stroke && highlightStyle.stroke.color);\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.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, '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 = Circle;\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, 'fillOpacity', options.fillOpacity);\n this.setValueIfExists(marker, 'stroke', options.stroke);\n this.setValueIfExists(marker, 'strokeWidth', options.strokeWidth);\n this.setValueIfExists(marker, 'strokeOpacity', options.strokeOpacity);\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();\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.populateAxisProperties = 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, 'formatter', label.formatter);\n }\n };\n ChartBuilder.createNumberAxis = function (options) {\n var axis = new NumberAxis();\n this.populateAxisProperties(axis, options);\n return axis;\n };\n ChartBuilder.createCategoryAxis = function (options) {\n var axis = new CategoryAxis();\n this.populateAxisProperties(axis, options);\n return axis;\n };\n ChartBuilder.createGroupedAxis = function (options) {\n var axis = new GroupedCategoryAxis();\n this.populateAxisProperties(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.createDropShadow = function (options) {\n if (options === void 0) { options = {}; }\n var shadow = new 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}());\nexport { ChartBuilder };\n","var __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};\nimport { _, Events, } from \"@ag-grid-community/core\";\nimport { DropShadow } from \"../../../charts/scene/dropShadow\";\nimport { Padding } from \"../../../charts/util/padding\";\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.getLabelColor = 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.initChartOptions = function () {\n var options = this.getDefaultOptions();\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: options };\n var overriddenOptions = processChartOptions(params);\n this.overridePalette(overriddenOptions);\n this.chartOptions = overriddenOptions;\n }\n else {\n this.chartOptions = options;\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 var palette = this.chartProxyParams.getSelectedPalette();\n var defaultFills = palette.fills;\n var defaultStrokes = palette.strokes;\n var seriesDefaults = chartOptions.seriesDefaults;\n var fills = seriesDefaults.fill.colors, strokes = seriesDefaults.stroke.colors;\n var fillsOverridden = fills !== defaultFills;\n var strokesOverridden = strokes !== defaultStrokes;\n if (fillsOverridden || strokesOverridden) {\n this.overriddenPalette = {\n fills: fillsOverridden && fills ? fills : defaultFills,\n strokes: strokesOverridden && strokes ? strokes : defaultStrokes\n };\n }\n };\n ChartProxy.prototype.getChartOption = function (expression) {\n return _.get(this.chartOptions, expression, undefined);\n };\n ChartProxy.prototype.setChartOption = function (expression, value) {\n _.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.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 _.set(this.chart, mappings[expression] || expression, value);\n this.raiseChartOptionsChangedEvent();\n };\n ChartProxy.prototype.getSeriesOption = function (expression) {\n return _.get(this.chartOptions.seriesDefaults, expression, undefined);\n };\n ChartProxy.prototype.setSeriesOption = function (expression, value) {\n _.set(this.chartOptions.seriesDefaults, expression, value);\n var mappings = {\n 'stroke.width': 'strokeWidth',\n 'stroke.opacity': 'strokeOpacity',\n 'fill.opacity': 'fillOpacity',\n 'marker.enabled': 'marker.enabled',\n 'marker.size': 'marker.size',\n 'marker.minSize': 'marker.minSize',\n 'marker.strokeWidth': 'marker.strokeWidth',\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 _.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', _.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(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();\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 = {\n type: Events.EVENT_CHART_OPTIONS_CHANGED,\n chartType: this.chartType,\n chartOptions: this.chartOptions\n };\n this.chartProxyParams.eventService.dispatchEvent(event);\n };\n ChartProxy.prototype.getDefaultFontOptions = function () {\n return {\n fontSize: 12,\n fontFamily: 'Verdana, sans-serif',\n color: this.getLabelColor()\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.getDefaultChartOptions = function () {\n var _a = this.chartProxyParams.getSelectedPalette(), fills = _a.fills, strokes = _a.strokes;\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: {\n enabled: false,\n fontFamily: 'Verdana, sans-serif',\n fontWeight: 'bold',\n fontSize: 16,\n color: 'black',\n },\n subtitle: {\n enabled: false,\n fontFamily: 'Verdana, sans-serif',\n fontWeight: 'bold',\n fontSize: 12,\n color: 'black',\n },\n legend: {\n enabled: true,\n padding: 20,\n position: 'right',\n item: {\n label: __assign({}, this.getDefaultFontOptions()),\n marker: {\n padding: 4,\n size: 14,\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 }\n };\n };\n ChartProxy.prototype.destroy = function () {\n this.chart.destroy();\n };\n return ChartProxy;\n}());\nexport { ChartProxy };\n","var __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};\nimport { ChartProxy } from \"../chartProxy\";\nimport { _ } from \"@ag-grid-community/core\";\nimport { ChartModel } from \"../../chartModel\";\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 _.get(this.chartOptions.xAxis, expression, undefined);\n };\n CartesianChartProxy.prototype.setAxisProperty = function (expression, value) {\n _.set(this.chartOptions.xAxis, expression, value);\n _.set(this.chartOptions.yAxis, expression, value);\n var chart = this.chart;\n _.set(this.chart.xAxis, expression, value);\n _.set(this.chart.yAxis, 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 !== ChartModel.DEFAULT_CATEGORY && !this.chartProxyParams.grouping) {\n var label = this.chartOptions[axisKey].label;\n if (label && label.rotation) {\n labelRotation = label.rotation;\n }\n }\n this.chart[axisKey].label.rotation = labelRotation; // TODO: use better type than any\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 label: __assign(__assign({}, fontOptions), { padding: 5 }),\n tick: {\n color: axisColor,\n size: 6,\n width: 1,\n },\n line: {\n color: axisColor,\n width: 1,\n },\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));\nexport { CartesianChartProxy };\n","var __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};\nimport { ChartType, _ } from \"@ag-grid-community/core\";\nimport { ChartBuilder } from \"../../../../charts/chartBuilder\";\nimport { ChartModel } from \"../../chartModel\";\nimport { CartesianChartProxy } from \"./cartesianChartProxy\";\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.chart = ChartBuilder.createScatterChart(params.parentElement, _this.chartOptions);\n return _this;\n }\n ScatterChartProxy.prototype.update = function (params) {\n var chart = this.chart;\n if (params.fields.length < 2) {\n chart.removeAllSeries();\n return;\n }\n var isBubbleChart = this.chartType === ChartType.Bubble;\n var yFields = params.fields.slice(1, params.fields.length).filter(function (_, i) { return !isBubbleChart || i % 2 === 0; });\n var fieldIds = yFields.map(function (f) { return f.colId; });\n var defaultCategorySelected = params.category.id === ChartModel.DEFAULT_CATEGORY;\n var _a = this.overriddenPalette || this.chartProxyParams.getSelectedPalette(), fills = _a.fills, strokes = _a.strokes;\n var seriesOptions = __assign({ type: \"scatter\" }, this.chartOptions.seriesDefaults);\n var xFieldDefinition = params.fields[0];\n var labelFieldDefinition = defaultCategorySelected ? undefined : params.category;\n var existingSeriesById = chart.series.reduceRight(function (map, series) {\n var id = series.yKey;\n if (series.xKey === xFieldDefinition.colId && _.includes(fieldIds, id)) {\n map.set(id, series);\n }\n else {\n chart.removeSeries(series);\n }\n return map;\n }, new Map());\n yFields.forEach(function (yFieldDefinition, index) {\n var existingSeries = existingSeriesById.get(yFieldDefinition.colId);\n var series = existingSeries || ChartBuilder.createSeries(seriesOptions);\n if (!series) {\n return;\n }\n series.title = xFieldDefinition.displayName + \" vs \" + yFieldDefinition.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.marker.fill = fills[index % fills.length];\n series.marker.stroke = strokes[index % strokes.length];\n if (isBubbleChart) {\n var radiusFieldDefinition = params.fields[index * 2 + 2];\n if (radiusFieldDefinition) {\n series.sizeKey = radiusFieldDefinition.colId;\n series.sizeName = radiusFieldDefinition.displayName;\n }\n else {\n // not enough information to render this series, so ensure it is removed\n if (existingSeries) {\n chart.removeSeries(series);\n }\n return;\n }\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.addSeries(series);\n }\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 === 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 enabled: true,\n size: isBubble ? 15 : 3,\n minSize: isBubble ? 3 : undefined,\n strokeWidth: 1,\n }, tooltip: {\n enabled: true,\n } });\n return options;\n };\n return ScatterChartProxy;\n}(CartesianChartProxy));\nexport { ScatterChartProxy };\n","var __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};\nimport { Autowired, Component, PostConstruct, RefSelector, ChartType } from \"@ag-grid-community/core\";\nimport { ScatterChartProxy } from \"../../../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 _this.chartProxy = chartController.getChartProxy();\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.chartProxy instanceof ScatterChartProxy;\n this.seriesMarkersGroup\n .setTitle(this.chartTranslator.translate(\"markers\"))\n .hideEnabledCheckbox(shouldHideEnabledCheckbox)\n .setEnabled(this.chartProxy.getSeriesOption(\"marker.enabled\") || false)\n .hideOpenCloseIcons(true)\n .onEnableChange(function (newValue) { return _this.chartProxy.setSeriesOption(\"marker.enabled\", newValue); });\n var initInput = function (expression, input, labelKey, maxValue) {\n input.setLabel(_this.chartTranslator.translate(labelKey))\n .setValue(_this.chartProxy.getSeriesOption(expression))\n .setMaxValue(maxValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartProxy.setSeriesOption(expression, newValue); });\n };\n if (this.chartController.getChartType() === ChartType.Bubble) {\n initInput(\"marker.minSize\", this.seriesMarkerMinSizeSlider, \"minSize\", 30);\n initInput(\"marker.size\", this.seriesMarkerSizeSlider, \"maxSize\", 30);\n }\n else {\n this.seriesMarkerMinSizeSlider.setDisplayed(false);\n initInput(\"marker.size\", this.seriesMarkerSizeSlider, \"size\", 30);\n }\n initInput(\"marker.strokeWidth\", this.seriesMarkerStrokeWidthSlider, \"strokeWidth\", 10);\n };\n MarkersPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n
\";\n __decorate([\n RefSelector('seriesMarkersGroup')\n ], MarkersPanel.prototype, \"seriesMarkersGroup\", void 0);\n __decorate([\n RefSelector('seriesMarkerSizeSlider')\n ], MarkersPanel.prototype, \"seriesMarkerSizeSlider\", void 0);\n __decorate([\n RefSelector('seriesMarkerMinSizeSlider')\n ], MarkersPanel.prototype, \"seriesMarkerMinSizeSlider\", void 0);\n __decorate([\n RefSelector('seriesMarkerStrokeWidthSlider')\n ], MarkersPanel.prototype, \"seriesMarkerStrokeWidthSlider\", void 0);\n __decorate([\n Autowired('chartTranslator')\n ], MarkersPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n PostConstruct\n ], MarkersPanel.prototype, \"init\", null);\n return MarkersPanel;\n}(Component));\nexport { MarkersPanel };\n","var __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};\nimport { _, Autowired, Component, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { MarkersPanel } from \"./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 _this.chartProxy = chartController.getChartProxy();\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.chartProxy.getSeriesOption(\"tooltip.enabled\") || false)\n .onValueChange(function (newValue) { return _this.chartProxy.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.chartProxy.getSeriesOption(\"stroke.width\"))\n .onValueChange(function (newValue) { return _this.chartProxy.setSeriesOption(\"stroke.width\", newValue); });\n };\n LineSeriesPanel.prototype.initMarkersPanel = function () {\n var markersPanelComp = this.wireBean(new 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 _.removeFromParent(panel.getGui());\n panel.destroy();\n });\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 RefSelector('seriesGroup')\n ], LineSeriesPanel.prototype, \"seriesGroup\", void 0);\n __decorate([\n RefSelector('seriesTooltipsToggle')\n ], LineSeriesPanel.prototype, \"seriesTooltipsToggle\", void 0);\n __decorate([\n RefSelector('seriesLineWidthSlider')\n ], LineSeriesPanel.prototype, \"seriesLineWidthSlider\", void 0);\n __decorate([\n Autowired('chartTranslator')\n ], LineSeriesPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n PostConstruct\n ], LineSeriesPanel.prototype, \"init\", null);\n return LineSeriesPanel;\n}(Component));\nexport { LineSeriesPanel };\n","var __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};\nimport { Autowired, Component, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nvar CalloutPanel = /** @class */ (function (_super) {\n __extends(CalloutPanel, _super);\n function CalloutPanel(chartProxy) {\n var _this = _super.call(this) || this;\n _this.chartProxy = chartProxy;\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.chartProxy.getSeriesOption(expression))\n .setMaxValue(maxValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartProxy.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 RefSelector('calloutGroup')\n ], CalloutPanel.prototype, \"calloutGroup\", void 0);\n __decorate([\n RefSelector('calloutLengthSlider')\n ], CalloutPanel.prototype, \"calloutLengthSlider\", void 0);\n __decorate([\n RefSelector('calloutStrokeWidthSlider')\n ], CalloutPanel.prototype, \"calloutStrokeWidthSlider\", void 0);\n __decorate([\n RefSelector('labelOffsetSlider')\n ], CalloutPanel.prototype, \"labelOffsetSlider\", void 0);\n __decorate([\n Autowired('chartTranslator')\n ], CalloutPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n PostConstruct\n ], CalloutPanel.prototype, \"init\", null);\n return CalloutPanel;\n}(Component));\nexport { CalloutPanel };\n","var __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};\nimport { _, Autowired, Component, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { ShadowPanel } from \"./shadowPanel\";\nimport { FontPanel } from \"../fontPanel\";\nimport { CalloutPanel } from \"./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.chartProxy = chartController.getChartProxy();\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.chartProxy.getSeriesOption(\"tooltip.enabled\") || false)\n .onValueChange(function (newValue) { return _this.chartProxy.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.chartProxy.getSeriesOption(\"stroke.width\"))\n .onValueChange(function (newValue) { return _this.chartProxy.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.chartProxy.getSeriesOption(\"stroke.opacity\") || \"1\")\n .onValueChange(function (newValue) { return _this.chartProxy.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.chartProxy.getSeriesOption(\"fillOpacity\") || \"1\")\n .onValueChange(function (newValue) { return _this.chartProxy.setSeriesOption(\"fillOpacity\", newValue); });\n };\n PieSeriesPanel.prototype.initLabelPanel = function () {\n var _this = this;\n var initialFont = {\n family: this.chartProxy.getSeriesOption(\"label.fontFamily\"),\n style: this.chartProxy.getSeriesOption(\"label.fontStyle\"),\n weight: this.chartProxy.getSeriesOption(\"label.fontWeight\"),\n size: this.chartProxy.getSeriesOption(\"label.fontSize\"),\n color: this.chartProxy.getSeriesOption(\"label.color\")\n };\n var setFont = function (font) {\n if (font.family) {\n _this.chartProxy.setSeriesOption(\"label.fontFamily\", font.family);\n }\n if (font.weight) {\n _this.chartProxy.setSeriesOption(\"label.fontWeight\", font.weight);\n }\n if (font.style) {\n _this.chartProxy.setSeriesOption(\"label.fontStyle\", font.style);\n }\n if (font.size) {\n _this.chartProxy.setSeriesOption(\"label.fontSize\", font.size);\n }\n if (font.color) {\n _this.chartProxy.setSeriesOption(\"label.color\", font.color);\n }\n };\n var params = {\n enabled: this.chartProxy.getSeriesOption(\"label.enabled\") || false,\n setEnabled: function (enabled) { return _this.chartProxy.setSeriesOption(\"label.enabled\", enabled); },\n suppressEnabledCheckbox: false,\n initialFont: initialFont,\n setFont: setFont\n };\n var labelPanelComp = this.wireBean(new FontPanel(params));\n this.activePanels.push(labelPanelComp);\n var calloutPanelComp = this.wireBean(new CalloutPanel(this.chartProxy));\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(this.chartProxy));\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 _.removeFromParent(panel.getGui());\n panel.destroy();\n });\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 RefSelector('seriesGroup')\n ], PieSeriesPanel.prototype, \"seriesGroup\", void 0);\n __decorate([\n RefSelector('seriesTooltipsToggle')\n ], PieSeriesPanel.prototype, \"seriesTooltipsToggle\", void 0);\n __decorate([\n RefSelector('seriesStrokeWidthSlider')\n ], PieSeriesPanel.prototype, \"seriesStrokeWidthSlider\", void 0);\n __decorate([\n RefSelector('seriesLineOpacitySlider')\n ], PieSeriesPanel.prototype, \"seriesLineOpacitySlider\", void 0);\n __decorate([\n RefSelector('seriesFillOpacitySlider')\n ], PieSeriesPanel.prototype, \"seriesFillOpacitySlider\", void 0);\n __decorate([\n Autowired('chartTranslator')\n ], PieSeriesPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n PostConstruct\n ], PieSeriesPanel.prototype, \"init\", null);\n return PieSeriesPanel;\n}(Component));\nexport { PieSeriesPanel };\n","var __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};\nimport { Autowired, Component, PostConstruct, RefSelector } from \"@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.chartProxy = chartController.getChartProxy();\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, labelKey) {\n input.setLabel(_this.chartTranslator.translate(labelKey))\n .setValue(_this.chartProxy.getChartPaddingOption(property))\n .setMaxValue(200)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartProxy.setChartPaddingOption(property, newValue); });\n };\n initInput(\"top\", this.paddingTopSlider, \"top\");\n initInput(\"right\", this.paddingRightSlider, \"right\");\n initInput(\"bottom\", this.paddingBottomSlider, \"bottom\");\n initInput(\"left\", this.paddingLeftSlider, \"left\");\n };\n PaddingPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n \\n
\";\n __decorate([\n RefSelector('chartPaddingGroup')\n ], PaddingPanel.prototype, \"chartPaddingGroup\", void 0);\n __decorate([\n RefSelector('paddingTopSlider')\n ], PaddingPanel.prototype, \"paddingTopSlider\", void 0);\n __decorate([\n RefSelector('paddingRightSlider')\n ], PaddingPanel.prototype, \"paddingRightSlider\", void 0);\n __decorate([\n RefSelector('paddingBottomSlider')\n ], PaddingPanel.prototype, \"paddingBottomSlider\", void 0);\n __decorate([\n RefSelector('paddingLeftSlider')\n ], PaddingPanel.prototype, \"paddingLeftSlider\", void 0);\n __decorate([\n Autowired('chartTranslator')\n ], PaddingPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n PostConstruct\n ], PaddingPanel.prototype, \"init\", null);\n return PaddingPanel;\n}(Component));\nexport { PaddingPanel };\n","var __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};\nimport { _, Autowired, Component, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { PaddingPanel } from \"./paddingPanel\";\nimport { FontPanel } from \"../fontPanel\";\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 _this.chartProxy = _this.chartController.getChartProxy();\n return _this;\n }\n ChartPanel.prototype.init = function () {\n this.setTemplate(ChartPanel.TEMPLATE);\n this.initGroup();\n this.initTitles();\n this.initPaddingPanel();\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 title = this.chartProxy.getChartOption('title');\n var text = title && title.text ? title.text : '';\n var setFont = function (font) {\n if (font.family) {\n _this.chartProxy.setTitleOption('fontFamily', font.family);\n }\n if (font.weight) {\n _this.chartProxy.setTitleOption('fontWeight', font.weight);\n }\n if (font.style) {\n _this.chartProxy.setTitleOption('fontStyle', font.style);\n }\n if (font.size) {\n _this.chartProxy.setTitleOption('fontSize', font.size);\n }\n if (font.color) {\n _this.chartProxy.setTitleOption('color', font.color);\n }\n };\n var initialFont = {\n family: title ? this.chartProxy.getChartOption('title.fontFamily') : 'Verdana, sans-serif',\n style: title ? this.chartProxy.getChartOption('title.fontStyle') : undefined,\n weight: title ? this.chartProxy.getChartOption('title.fontWeight') : undefined,\n size: title ? this.chartProxy.getChartOption('title.fontSize') : 22,\n color: title ? this.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.chartProxy.setTitleOption('text', value);\n // only show font panel when title exists\n fontPanelComp.setEnabled(_.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(params));\n this.chartGroup.addItem(fontPanelComp);\n this.activePanels.push(fontPanelComp);\n fontPanelComp.setEnabled(_.exists(text));\n };\n ChartPanel.prototype.initPaddingPanel = function () {\n var paddingPanelComp = this.wireBean(new PaddingPanel(this.chartController));\n this.chartGroup.addItem(paddingPanelComp);\n this.activePanels.push(paddingPanelComp);\n };\n ChartPanel.prototype.destroyActivePanels = function () {\n this.activePanels.forEach(function (panel) {\n _.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 RefSelector('chartGroup')\n ], ChartPanel.prototype, \"chartGroup\", void 0);\n __decorate([\n RefSelector('titleInput')\n ], ChartPanel.prototype, \"titleInput\", void 0);\n __decorate([\n Autowired('chartTranslator')\n ], ChartPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n PostConstruct\n ], ChartPanel.prototype, \"init\", null);\n return ChartPanel;\n}(Component));\nexport { ChartPanel };\n","var __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};\nimport { _, Autowired, Component, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { MarkersPanel } from \"./markersPanel\";\nimport { ShadowPanel } from \"./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 _this.chartProxy = chartController.getChartProxy();\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.chartProxy.getSeriesOption(\"tooltip.enabled\") || false)\n .onValueChange(function (newValue) { return _this.chartProxy.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.chartProxy.getSeriesOption(\"stroke.width\"))\n .onValueChange(function (newValue) { return _this.chartProxy.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.chartProxy.getSeriesOption(\"stroke.opacity\") || \"1\")\n .onValueChange(function (newValue) { return _this.chartProxy.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.chartProxy.getSeriesOption(\"fill.opacity\") || \"1\")\n .onValueChange(function (newValue) { return _this.chartProxy.setSeriesOption(\"fill.opacity\", newValue); });\n };\n AreaSeriesPanel.prototype.initMarkersPanel = function () {\n var markersPanelComp = this.wireBean(new 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(this.chartProxy));\n this.seriesGroup.addItem(shadowPanelComp);\n this.activePanels.push(shadowPanelComp);\n };\n AreaSeriesPanel.prototype.destroyActivePanels = function () {\n this.activePanels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n panel.destroy();\n });\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 RefSelector('seriesGroup')\n ], AreaSeriesPanel.prototype, \"seriesGroup\", void 0);\n __decorate([\n RefSelector('seriesTooltipsToggle')\n ], AreaSeriesPanel.prototype, \"seriesTooltipsToggle\", void 0);\n __decorate([\n RefSelector('seriesLineWidthSlider')\n ], AreaSeriesPanel.prototype, \"seriesLineWidthSlider\", void 0);\n __decorate([\n RefSelector('seriesLineOpacitySlider')\n ], AreaSeriesPanel.prototype, \"seriesLineOpacitySlider\", void 0);\n __decorate([\n RefSelector('seriesFillOpacitySlider')\n ], AreaSeriesPanel.prototype, \"seriesFillOpacitySlider\", void 0);\n __decorate([\n Autowired('chartTranslator')\n ], AreaSeriesPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n PostConstruct\n ], AreaSeriesPanel.prototype, \"init\", null);\n return AreaSeriesPanel;\n}(Component));\nexport { AreaSeriesPanel };\n","var __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};\nimport { _, Autowired, Component, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { MarkersPanel } from \"./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 _this.chartProxy = chartController.getChartProxy();\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.chartProxy.getSeriesOption(\"tooltip.enabled\") || false)\n .onValueChange(function (newValue) { return _this.chartProxy.setSeriesOption(\"tooltip.enabled\", newValue); });\n };\n ScatterSeriesPanel.prototype.initMarkersPanel = function () {\n var markersPanelComp = this.wireBean(new 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 _.removeFromParent(panel.getGui());\n panel.destroy();\n });\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 RefSelector('seriesGroup')\n ], ScatterSeriesPanel.prototype, \"seriesGroup\", void 0);\n __decorate([\n RefSelector('seriesTooltipsToggle')\n ], ScatterSeriesPanel.prototype, \"seriesTooltipsToggle\", void 0);\n __decorate([\n Autowired('chartTranslator')\n ], ScatterSeriesPanel.prototype, \"chartTranslator\", void 0);\n __decorate([\n PostConstruct\n ], ScatterSeriesPanel.prototype, \"init\", null);\n return ScatterSeriesPanel;\n}(Component));\nexport { ScatterSeriesPanel };\n","var __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};\nimport { _, ChartType, Component, PostConstruct } from \"@ag-grid-community/core\";\nimport { ChartController } from \"../../chartController\";\nimport { LegendPanel } from \"./legend/legendPanel\";\nimport { BarSeriesPanel } from \"./series/barSeriesPanel\";\nimport { AxisPanel } from \"./axis/axisPanel\";\nimport { LineSeriesPanel } from \"./series/lineSeriesPanel\";\nimport { PieSeriesPanel } from \"./series/pieSeriesPanel\";\nimport { ChartPanel } from \"./chart/chartPanel\";\nimport { AreaSeriesPanel } from \"./series/areaSeriesPanel\";\nimport { ScatterSeriesPanel } from \"./series/scatterSeriesPanel\";\nvar ChartFormattingPanel = /** @class */ (function (_super) {\n __extends(ChartFormattingPanel, _super);\n function ChartFormattingPanel(chartController) {\n var _this = _super.call(this) || this;\n _this.panels = [];\n _this.chartController = chartController;\n return _this;\n }\n ChartFormattingPanel.prototype.init = function () {\n this.setTemplate(ChartFormattingPanel.TEMPLATE);\n this.createPanels();\n this.addDestroyableEventListener(this.chartController, ChartController.EVENT_CHART_MODEL_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(this.chartController));\n this.addComponent(new LegendPanel(this.chartController));\n switch (chartType) {\n case ChartType.GroupedColumn:\n case ChartType.StackedColumn:\n case ChartType.NormalizedColumn:\n case ChartType.GroupedBar:\n case ChartType.StackedBar:\n case ChartType.NormalizedBar:\n this.addComponent(new AxisPanel(this.chartController));\n this.addComponent(new BarSeriesPanel(this.chartController));\n break;\n case ChartType.Pie:\n case ChartType.Doughnut:\n this.addComponent(new PieSeriesPanel(this.chartController));\n break;\n case ChartType.Line:\n this.addComponent(new AxisPanel(this.chartController));\n this.addComponent(new LineSeriesPanel(this.chartController));\n break;\n case ChartType.Scatter:\n case ChartType.Bubble:\n this.addComponent(new AxisPanel(this.chartController));\n this.addComponent(new ScatterSeriesPanel(this.chartController));\n break;\n case ChartType.Area:\n case ChartType.StackedArea:\n case ChartType.NormalizedArea:\n this.addComponent(new AxisPanel(this.chartController));\n this.addComponent(new 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 _.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 PostConstruct\n ], ChartFormattingPanel.prototype, \"init\", null);\n return ChartFormattingPanel;\n}(Component));\nexport { ChartFormattingPanel };\n","var __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};\nimport { Autowired, Component, PostConstruct } from \"@ag-grid-community/core\";\nimport { Group } from \"../../../../../charts/scene/group\";\nimport { Scene } from \"../../../../../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();\n var scene = new Scene({\n width: _this.size,\n height: _this.size\n });\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 Autowired('chartTranslator')\n ], MiniChart.prototype, \"chartTranslator\", void 0);\n __decorate([\n PostConstruct\n ], MiniChart.prototype, \"init\", null);\n return MiniChart;\n}(Component));\nexport { MiniChart };\n","var __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};\nimport { PostConstruct } from \"@ag-grid-community/core\";\nimport { MiniChart } from \"./miniChart\";\nimport { Line } from \"../../../../../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();\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();\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 PostConstruct\n ], MiniChartWithAxes.prototype, \"addAxes\", null);\n return MiniChartWithAxes;\n}(MiniChart));\nexport { MiniChartWithAxes };\n","var __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})();\nimport { ChartType } from \"@ag-grid-community/core\";\nimport { MiniChartWithAxes } from \"./miniChartWithAxes\";\nimport { Rect } from \"../../../../../charts/scene/shape/rect\";\nimport { BandScale } from \"../../../../../charts/scale/bandScale\";\nimport linearScale from \"../../../../../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();\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();\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();\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 = ChartType.GroupedColumn;\n return MiniColumn;\n}(MiniChartWithAxes));\nexport { MiniColumn };\n","var __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})();\nimport { ChartType } from \"@ag-grid-community/core\";\nimport { MiniChartWithAxes } from \"./miniChartWithAxes\";\nimport { Rect } from \"../../../../../charts/scene/shape/rect\";\nimport { BandScale } from \"../../../../../charts/scale/bandScale\";\nimport linearScale from \"../../../../../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();\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();\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();\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 = ChartType.StackedColumn;\n MiniStackedColumn.data = [\n [8, 12, 16],\n [6, 9, 12],\n [2, 3, 4]\n ];\n return MiniStackedColumn;\n}(MiniChartWithAxes));\nexport { MiniStackedColumn };\n","var __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})();\nimport { ChartType } from \"@ag-grid-community/core\";\nimport { MiniStackedColumn } from \"./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 = ChartType.NormalizedColumn;\n MiniNormalizedColumn.data = [\n [10, 10, 10],\n [6, 7, 8],\n [2, 4, 6]\n ];\n return MiniNormalizedColumn;\n}(MiniStackedColumn));\nexport { MiniNormalizedColumn };\n","var __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})();\nimport { ChartType } from \"@ag-grid-community/core\";\nimport { MiniChartWithAxes } from \"./miniChartWithAxes\";\nimport { Rect } from \"../../../../../charts/scene/shape/rect\";\nimport linearScale from \"../../../../../charts/scale/linearScale\";\nimport { BandScale } from \"../../../../../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();\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();\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();\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 = ChartType.GroupedBar;\n return MiniBar;\n}(MiniChartWithAxes));\nexport { MiniBar };\n","var __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})();\nimport { ChartType } from \"@ag-grid-community/core\";\nimport { MiniChartWithAxes } from \"./miniChartWithAxes\";\nimport { Rect } from \"../../../../../charts/scene/shape/rect\";\nimport linearScale from \"../../../../../charts/scale/linearScale\";\nimport { BandScale } from \"../../../../../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();\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();\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();\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 = ChartType.StackedBar;\n MiniStackedBar.data = [\n [8, 12, 16],\n [6, 9, 12],\n [2, 3, 4]\n ];\n return MiniStackedBar;\n}(MiniChartWithAxes));\nexport { MiniStackedBar };\n","var __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})();\nimport { ChartType } from \"@ag-grid-community/core\";\nimport { MiniStackedBar } from \"./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 = ChartType.NormalizedBar;\n MiniNormalizedBar.data = [\n [10, 10, 10],\n [6, 7, 8],\n [2, 4, 6]\n ];\n return MiniNormalizedBar;\n}(MiniStackedBar));\nexport { MiniNormalizedBar };\n","var __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})();\nimport { ChartType } from \"@ag-grid-community/core\";\nimport { MiniChart } from \"./miniChart\";\nimport { Sector } from \"../../../../../charts/scene/shape/sector\";\nimport { toRadians } from \"../../../../../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 [toRadians(-90), toRadians(30)],\n [toRadians(30), toRadians(120)],\n [toRadians(120), toRadians(180)],\n [toRadians(180), toRadians(210)],\n [toRadians(210), toRadians(240)],\n [toRadians(240), toRadians(270)]\n ];\n _this.sectors = angles.map(function (_a) {\n var startAngle = _a[0], endAngle = _a[1];\n var sector = new 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];\n sector.stroke = strokes[i];\n });\n };\n MiniDoughnut.chartType = ChartType.Doughnut;\n return MiniDoughnut;\n}(MiniChart));\nexport { MiniDoughnut };\n","var __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})();\nimport { ChartType } from \"@ag-grid-community/core\";\nimport { MiniDoughnut } from \"./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 = ChartType.Pie;\n return MiniPie;\n}(MiniDoughnut));\nexport { MiniPie };\n","var __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})();\nimport { Node } from \"./node\";\nimport { Path2D } from \"./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();\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));\nexport { ClipRect };\n","var __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})();\nimport { ChartType } from \"@ag-grid-community/core\";\nimport { MiniChartWithAxes } from \"./miniChartWithAxes\";\nimport { Path } from \"../../../../../charts/scene/shape/path\";\nimport linearScale from \"../../../../../charts/scale/linearScale\";\nimport { ClipRect } from \"../../../../../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();\n xScale.domain = [0, 4];\n xScale.range = [padding, size - padding];\n var yScale = linearScale();\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();\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();\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 = ChartType.Line;\n return MiniLine;\n}(MiniChartWithAxes));\nexport { MiniLine };\n","var __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})();\nimport { ChartType } from \"@ag-grid-community/core\";\nimport { MiniChartWithAxes } from \"./miniChartWithAxes\";\nimport linearScale from \"../../../../../charts/scale/linearScale\";\nimport { ClipRect } from \"../../../../../charts/scene/clipRect\";\nimport { Arc } from \"../../../../../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();\n xScale.domain = [-0.5, 4];\n xScale.range = [padding * 2, size - padding];\n var yScale = linearScale();\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();\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();\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 = ChartType.Scatter;\n return MiniScatter;\n}(MiniChartWithAxes));\nexport { MiniScatter };\n","var __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})();\nimport { ChartType } from \"@ag-grid-community/core\";\nimport { MiniChartWithAxes } from \"./miniChartWithAxes\";\nimport linearScale from \"../../../../../charts/scale/linearScale\";\nimport { ClipRect } from \"../../../../../charts/scene/clipRect\";\nimport { Arc } from \"../../../../../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();\n xScale.domain = [0, 1];\n xScale.range = [padding * 2, size - padding];\n var yScale = linearScale();\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();\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();\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 = ChartType.Bubble;\n return MiniBubble;\n}(MiniChartWithAxes));\nexport { MiniBubble };\n","var __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})();\nimport { ChartType } from \"@ag-grid-community/core\";\nimport { MiniChartWithAxes } from \"./miniChartWithAxes\";\nimport { Path } from \"../../../../../charts/scene/shape/path\";\nimport linearScale from \"../../../../../charts/scale/linearScale\";\nimport { BandScale } from \"../../../../../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();\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();\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();\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 = ChartType.Area;\n MiniArea.data = [\n [1, 3, 5],\n [2, 6, 4],\n [5, 3, 1]\n ];\n return MiniArea;\n}(MiniChartWithAxes));\nexport { MiniArea };\n","var __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})();\nimport { ChartType } from \"@ag-grid-community/core\";\nimport { MiniChartWithAxes } from \"./miniChartWithAxes\";\nimport { Path } from \"../../../../../charts/scene/shape/path\";\nimport linearScale from \"../../../../../charts/scale/linearScale\";\nimport { BandScale } from \"../../../../../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();\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();\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();\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 = ChartType.StackedArea;\n MiniStackedArea.data = [\n [2, 3, 2],\n [3, 6, 5],\n [6, 2, 2]\n ];\n return MiniStackedArea;\n}(MiniChartWithAxes));\nexport { MiniStackedArea };\n","var __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})();\nimport { ChartType } from \"@ag-grid-community/core\";\nimport { MiniStackedArea } from \"./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 = ChartType.NormalizedArea;\n MiniNormalizedArea.data = 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));\nexport { MiniNormalizedArea };\n","var __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};\nimport { _, AgGroupComponent, Autowired, Component, PostConstruct } from \"@ag-grid-community/core\";\nimport { MiniColumn, MiniStackedColumn, MiniNormalizedColumn, MiniBar, MiniStackedBar, MiniNormalizedBar, MiniPie, MiniDoughnut, MiniLine, MiniScatter, MiniBubble, MiniArea, MiniStackedArea, MiniNormalizedArea, } from \"./miniCharts\";\nvar MiniChartsContainer = /** @class */ (function (_super) {\n __extends(MiniChartsContainer, _super);\n function MiniChartsContainer(activePalette, chartController) {\n var _this = _super.call(this, MiniChartsContainer.TEMPLATE) || this;\n _this.wrappers = {};\n var palettes = chartController.getPalettes();\n _this.fills = palettes[activePalette].fills;\n _this.strokes = palettes[activePalette].strokes;\n _this.chartController = chartController;\n return _this;\n }\n MiniChartsContainer.prototype.init = function () {\n var _this = this;\n var chartGroups = {\n columnGroup: [\n MiniColumn,\n MiniStackedColumn,\n MiniNormalizedColumn\n ],\n barGroup: [\n MiniBar,\n MiniStackedBar,\n MiniNormalizedBar\n ],\n pieGroup: [\n MiniPie,\n MiniDoughnut\n ],\n lineGroup: [\n MiniLine\n ],\n scatterGroup: [\n MiniScatter,\n MiniBubble\n ],\n areaGroup: [\n MiniArea,\n MiniStackedArea,\n 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 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 _.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 _.addOrRemoveCssClass(this.wrappers[wrapper], 'ag-selected', wrapper === type);\n }\n };\n MiniChartsContainer.TEMPLATE = '
';\n __decorate([\n Autowired('chartTranslator')\n ], MiniChartsContainer.prototype, \"chartTranslator\", void 0);\n __decorate([\n PostConstruct\n ], MiniChartsContainer.prototype, \"init\", null);\n return MiniChartsContainer;\n}(Component));\nexport { MiniChartsContainer };\n","var __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};\nimport { _, Autowired, Component, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { MiniChartsContainer } from \"./miniChartsContainer\";\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 _this.activePalette = _this.chartController.getActivePalette();\n _this.palettes = _this.chartController.getPalettes();\n return _this;\n }\n ChartSettingsPanel.prototype.postConstruct = function () {\n var _this = this;\n this.palettes.forEach(function (palette, idx) {\n var miniChartsContainer = _this.wireBean(new MiniChartsContainer(idx, _this.chartController));\n _this.miniCharts.push(miniChartsContainer);\n _this.eMiniChartsContainer.appendChild(miniChartsContainer.getGui());\n _this.addCardLink(idx);\n });\n this.ePrevBtn.insertAdjacentElement('afterbegin', _.createIconNoSpan('smallLeft', this.gridOptionsWrapper));\n this.eNextBtn.insertAdjacentElement('afterbegin', _.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.setActivePalette(this.activePalette, 0);\n };\n ChartSettingsPanel.prototype.addCardLink = function (idx) {\n var _this = this;\n var link = document.createElement('div');\n _.addCssClass(link, 'ag-nav-card-item');\n this.addDestroyableEventListener(link, 'click', function () {\n if (idx === _this.activePalette || _this.isAnimating) {\n return;\n }\n _this.setActivePalette(idx, idx < _this.activePalette ? 1 : 2);\n });\n this.eCardSelector.appendChild(link);\n this.cardItems.push(link);\n };\n ChartSettingsPanel.prototype.getPrev = function () {\n var prev = this.activePalette - 1;\n if (prev < 0) {\n prev = this.palettes.length - 1;\n }\n return prev;\n };\n ChartSettingsPanel.prototype.prev = function () {\n if (this.isAnimating) {\n return;\n }\n var prev = this.getPrev();\n this.setActivePalette(prev, 1);\n };\n ChartSettingsPanel.prototype.getNext = function () {\n var next = this.activePalette + 1;\n if (next === this.palettes.length) {\n next = 0;\n }\n return next;\n };\n ChartSettingsPanel.prototype.next = function () {\n if (this.isAnimating) {\n return;\n }\n var next = this.getNext();\n this.setActivePalette(next, 2);\n };\n ChartSettingsPanel.prototype.setActivePalette = function (palette, animate) {\n var _this = this;\n _.radioCssClass(this.cardItems[palette], 'ag-selected');\n if (!animate) {\n this.miniCharts.forEach(function (miniChart, idx) {\n _.addOrRemoveCssClass(miniChart.getGui(), 'ag-hidden', idx !== palette);\n });\n this.miniCharts[this.activePalette].refreshSelected();\n this.activePalette = palette;\n }\n else {\n var currentPalette = this.miniCharts[this.activePalette];\n var currentGui_1 = currentPalette.getGui();\n var futurePalette = this.miniCharts[palette];\n var futureGui_1 = futurePalette.getGui();\n currentPalette.refreshSelected();\n futurePalette.refreshSelected();\n var multiplier = animate === 1 ? -1 : 1;\n var final_1 = futureGui_1.style.left = (_.getAbsoluteWidth(this.getGui()) * multiplier) + \"px\";\n _.removeCssClass(futureGui_1, 'ag-hidden');\n _.addCssClass(currentGui_1, 'ag-animating');\n _.addCssClass(futureGui_1, 'ag-animating');\n this.activePalette = palette;\n this.chartController.setChartWithPalette(this.chartController.getChartType(), this.activePalette);\n this.isAnimating = true;\n window.setTimeout(function () {\n currentGui_1.style.left = parseFloat(final_1) * -1 + \"px\";\n futureGui_1.style.left = '0px';\n }, 50);\n window.setTimeout(function () {\n _this.isAnimating = false;\n _.removeCssClass(currentGui_1, 'ag-animating');\n _.removeCssClass(futureGui_1, 'ag-animating');\n _.addCssClass(currentGui_1, 'ag-hidden');\n }, 500);\n }\n };\n ChartSettingsPanel.TEMPLATE = \"
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\";\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ChartSettingsPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n RefSelector('eMiniChartsContainer')\n ], ChartSettingsPanel.prototype, \"eMiniChartsContainer\", void 0);\n __decorate([\n RefSelector(\"eCardSelector\")\n ], ChartSettingsPanel.prototype, \"eCardSelector\", void 0);\n __decorate([\n RefSelector(\"ePrevBtn\")\n ], ChartSettingsPanel.prototype, \"ePrevBtn\", void 0);\n __decorate([\n RefSelector(\"eNextBtn\")\n ], ChartSettingsPanel.prototype, \"eNextBtn\", void 0);\n __decorate([\n PostConstruct\n ], ChartSettingsPanel.prototype, \"postConstruct\", null);\n return ChartSettingsPanel;\n}(Component));\nexport { ChartSettingsPanel };\n","var __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};\nimport { _, Autowired, Component, PostConstruct, Promise, TabbedLayout } from \"@ag-grid-community/core\";\nimport { ChartDataPanel } from \"./data/chartDataPanel\";\nimport { ChartFormattingPanel } from \"./format/chartFormattingPanel\";\nimport { ChartSettingsPanel } from \"./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 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 _.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: 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 _.removeCssClass(this.chartIcons[this.currentChartType], 'ag-selected');\n this.currentChartType = chartType;\n _.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;\n case TabbedChartMenu.TAB_FORMAT:\n return ChartFormattingPanel;\n default:\n return 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 Autowired('chartTranslator')\n ], TabbedChartMenu.prototype, \"chartTranslator\", void 0);\n __decorate([\n PostConstruct\n ], TabbedChartMenu.prototype, \"init\", null);\n return TabbedChartMenu;\n}(Component));\nexport { TabbedChartMenu };\n","var __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};\nimport { _, AgPanel, Autowired, Component, PostConstruct, Promise } from \"@ag-grid-community/core\";\nimport { TabbedChartMenu } from \"./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 = ['chartSettings', 'chartData', 'chartFormat', 'chartUnlink', 'chartDownload'];\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) { return ignoreOptions.indexOf(value) !== -1 || (_this.tabs.length && value === _this.tabs[0]); });\n };\n ChartMenu.prototype.toggleDetached = function (e) {\n var target = e.target;\n var active = _.containsClass(target, 'ag-icon-linked');\n _.addOrRemoveCssClass(target, 'ag-icon-linked', !active);\n _.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 = _.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 = {\n type: ChartMenu.EVENT_DOWNLOAD_CHART\n };\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 AgPanel({\n minWidth: 220,\n width: 220,\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({\n controller: this.chartController,\n type: chartComp.getCurrentChartType(),\n panels: this.tabs\n });\n context.wireBean(this.tabbedMenu);\n this.addDestroyableEventListener(this.menuPanel, Component.EVENT_DESTROYED, function () {\n _this.tabbedMenu.destroy();\n });\n return new 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 (_.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 _.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)\n .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 _.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 Autowired('gridOptionsWrapper')\n ], ChartMenu.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], ChartMenu.prototype, \"postConstruct\", null);\n return ChartMenu;\n}(Component));\nexport { ChartMenu };\n","var __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};\nimport { ChartType, _ } from \"@ag-grid-community/core\";\nimport { ChartBuilder } from \"../../../../charts/chartBuilder\";\nimport { CartesianChartProxy } from \"./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 var builderFunction;\n if (_this.isColumnChart()) {\n builderFunction = params.grouping ? 'createGroupedColumnChart' : 'createColumnChart';\n }\n else {\n builderFunction = params.grouping ? 'createGroupedBarChart' : 'createBarChart';\n }\n _this.chart = ChartBuilder[builderFunction](params.parentElement, _this.chartOptions);\n var barSeries = ChartBuilder.createSeries(_this.getSeriesDefaults());\n if (barSeries) {\n _this.chart.addSeries(barSeries);\n }\n return _this;\n }\n BarChartProxy.prototype.update = function (params) {\n var chart = this.chart;\n var barSeries = chart.series[0];\n var _a = this.overriddenPalette || this.chartProxyParams.getSelectedPalette(), fills = _a.fills, strokes = _a.strokes;\n barSeries.data = params.data;\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 _.includes([ChartType.GroupedColumn, ChartType.StackedColumn, ChartType.NormalizedColumn], this.chartType);\n };\n BarChartProxy.prototype.getSeriesDefaults = function () {\n var chartType = this.chartType;\n var isGrouped = chartType === ChartType.GroupedColumn || chartType === ChartType.GroupedBar;\n var isNormalized = chartType === ChartType.NormalizedColumn || chartType === ChartType.NormalizedBar;\n return __assign(__assign({}, this.chartOptions.seriesDefaults), { type: 'bar', grouped: isGrouped, normalizedTo: isNormalized ? 100 : undefined });\n };\n return BarChartProxy;\n}(CartesianChartProxy));\nexport { BarChartProxy };\n","var __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};\nimport { ChartType, _ } from \"@ag-grid-community/core\";\nimport { ChartBuilder } from \"../../../../charts/chartBuilder\";\nimport { CategoryAxis } from \"../../../../charts/chart/axis/categoryAxis\";\nimport { CartesianChartProxy } from \"./cartesianChartProxy\";\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.chart = ChartBuilder[params.grouping ? \"createGroupedAreaChart\" : \"createAreaChart\"](params.parentElement, _this.chartOptions);\n _this.setAxisPadding(_this.chart);\n var areaSeries = ChartBuilder.createSeries(_this.getSeriesDefaults());\n if (areaSeries) {\n _this.chart.addSeries(areaSeries);\n }\n return _this;\n }\n AreaChartProxy.prototype.setAxisPadding = function (chart) {\n var xAxis = chart.xAxis;\n if (xAxis instanceof CategoryAxis) {\n xAxis.scale.paddingInner = 1;\n xAxis.scale.paddingOuter = 0;\n }\n };\n AreaChartProxy.prototype.update = function (params) {\n if (this.chartType === 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.overriddenPalette || this.chartProxyParams.getSelectedPalette(), fills = _a.fills, strokes = _a.strokes;\n areaSeries.data = params.data;\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.overriddenPalette || this.chartProxyParams.getSelectedPalette(), fills = _a.fills, strokes = _a.strokes;\n var existingSeriesById = chart.series.reduceRight(function (map, series) {\n var id = series.yKeys[0];\n if (_.includes(fieldIds, id)) {\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 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 = params.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.marker.fill = fill;\n areaSeries.strokes = [stroke];\n areaSeries.marker.stroke = stroke;\n }\n else {\n var seriesDefaults = _this.getSeriesDefaults();\n var options = __assign(__assign({}, seriesDefaults), { data: params.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.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 === ChartType.Area ? 0.7 : 1 }), stroke: __assign(__assign({}, options.seriesDefaults.stroke), { width: 3 }), marker: {\n enabled: true,\n size: 3,\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 === ChartType.NormalizedArea ? 100 : undefined });\n };\n return AreaChartProxy;\n}(CartesianChartProxy));\nexport { AreaChartProxy };\n","var __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};\nimport { _ } from \"@ag-grid-community/core\";\nimport { ChartBuilder } from \"../../../../charts/chartBuilder\";\nimport { CartesianChartProxy } from \"./cartesianChartProxy\";\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.chart = ChartBuilder[params.grouping ? \"createGroupedLineChart\" : \"createLineChart\"](params.parentElement, _this.chartOptions);\n return _this;\n }\n LineChartProxy.prototype.update = 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.overriddenPalette || this.chartProxyParams.getSelectedPalette(), fills = _a.fills, strokes = _a.strokes;\n var existingSeriesById = chart.series.reduceRight(function (map, series) {\n var id = series.yKey;\n if (_.includes(fieldIds, id)) {\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 = params.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.marker.fill = fill;\n lineSeries.stroke = stroke;\n lineSeries.marker.stroke = stroke;\n }\n else {\n var seriesDefaults = _this.chartOptions.seriesDefaults;\n var options = __assign(__assign({}, seriesDefaults), { type: 'line', title: f.displayName, data: params.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: stroke }) });\n lineSeries = ChartBuilder.createSeries(options);\n chart.addSeriesAfter(lineSeries, previousSeries);\n }\n previousSeries = lineSeries;\n });\n this.updateLabelRotation(params.category.id);\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 size: 3,\n strokeWidth: 1,\n }, tooltip: {\n enabled: true,\n } });\n return options;\n };\n return LineChartProxy;\n}(CartesianChartProxy));\nexport { LineChartProxy };\n","var __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})();\nimport { ChartProxy } from \"../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));\nexport { PolarChartProxy };\n","var __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};\nimport { ChartBuilder } from \"../../../../charts/chartBuilder\";\nimport { PolarChartProxy } from \"./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.chart = ChartBuilder.createPieChart(params.parentElement, _this.chartOptions);\n return _this;\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.overriddenPalette || this.chartProxyParams.getSelectedPalette(), 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: params.fields[0].displayName }) });\n pieSeries = 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.chartProxyParams.getSelectedPalette().strokes;\n var options = this.getDefaultChartOptions();\n options.seriesDefaults = __assign(__assign({}, options.seriesDefaults), { callout: {\n colors: strokes,\n length: 10,\n strokeWidth: 2,\n }, label: __assign(__assign({}, this.getDefaultFontOptions()), { enabled: false, offset: 3, minRequiredAngle: 0 }), tooltip: {\n enabled: true,\n }, shadow: this.getDefaultDropShadowOptions() });\n return options;\n };\n return PieChartProxy;\n}(PolarChartProxy));\nexport { PieChartProxy };\n","var __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};\nimport { ChartBuilder } from \"../../../../charts/chartBuilder\";\nimport { _ } from \"@ag-grid-community/core\";\nimport { PolarChartProxy } from \"./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.chart = ChartBuilder.createDoughnutChart(params.parentElement, _this.chartOptions);\n return _this;\n }\n DoughnutChartProxy.prototype.update = function (params) {\n var _this = this;\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 (_.includes(fieldIds, id)) {\n seriesMap[id] = pieSeries;\n }\n });\n var _a = this.overriddenPalette || this.chartProxyParams.getSelectedPalette(), 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({}, _this.chartOptions.seriesDefaults), { type: \"pie\", field: {\n angleKey: f.colId,\n }, showInLegend: index === 0, title: __assign(__assign({}, _this.chartOptions.seriesDefaults.title), { text: f.displayName }) });\n var calloutColors = seriesOptions.callout && seriesOptions.callout.colors;\n var pieSeries = existingSeries || 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 var chart = pieSeries.chart;\n if (chart) {\n chart.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 = _.values(seriesMap);\n };\n DoughnutChartProxy.prototype.getDefaultOptions = function () {\n var strokes = this.chartProxyParams.getSelectedPalette().strokes;\n var options = this.getDefaultChartOptions();\n options.seriesDefaults = __assign(__assign({}, options.seriesDefaults), { callout: {\n colors: strokes,\n length: 10,\n strokeWidth: 1,\n }, label: __assign(__assign({}, this.getDefaultFontOptions()), { enabled: false, offset: 3, minRequiredAngle: 0 }), tooltip: {\n enabled: true,\n }, shadow: this.getDefaultDropShadowOptions() });\n return options;\n };\n return DoughnutChartProxy;\n}(PolarChartProxy));\nexport { DoughnutChartProxy };\n","var __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};\nimport { _, AgDialog, Autowired, ChartType, Component, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { ChartMenu } from \"./menu/chartMenu\";\nimport { ChartController } from \"./chartController\";\nimport { ChartModel } from \"./chartModel\";\nimport { BarChartProxy } from \"./chartProxies/cartesian/barChartProxy\";\nimport { AreaChartProxy } from \"./chartProxies/cartesian/areaChartProxy\";\nimport { LineChartProxy } from \"./chartProxies/cartesian/lineChartProxy\";\nimport { PieChartProxy } from \"./chartProxies/polar/pieChartProxy\";\nimport { DoughnutChartProxy } from \"./chartProxies/polar/doughnutChartProxy\";\nimport { ScatterChartProxy } from \"./chartProxies/cartesian/scatterChartProxy\";\nimport { palettes } from \"../../charts/chart/palettes\";\nvar GridChartComp = /** @class */ (function (_super) {\n __extends(GridChartComp, _super);\n function GridChartComp(params) {\n var _this = _super.call(this, GridChartComp.TEMPLATE) || this;\n _this.getSelectedPalette = function () { return _this.model.getPalettes()[_this.model.getActivePalette()]; };\n _this.getChartComponentsWrapper = function () { return _this.eChartComponentsWrapper; };\n _this.getDockedContainer = function () { return _this.eDockedContainer; };\n _this.getCurrentChartType = function () { return _this.currentChartType; };\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 cellRanges: [this.params.cellRange],\n suppressChartRanges: this.params.suppressChartRanges,\n palettes: palettes,\n activePalette: 0\n };\n this.model = this.wireBean(new ChartModel(modelParams));\n this.chartController = this.wireBean(new ChartController(this.model));\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.EVENT_CHART_MODEL_UPDATED, this.refresh.bind(this));\n this.addDestroyableEventListener(this.chartMenu, 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 // preserve existing width/height\n width = chart.width;\n height = chart.height;\n this.chartProxy.destroy();\n var canvas = this.eChart.querySelector('canvas');\n if (canvas) {\n this.eChart.removeChild(canvas);\n }\n }\n var processChartOptionsFunc = this.params.processChartOptions ?\n this.params.processChartOptions : this.gridOptionsWrapper.getProcessChartOptionsFunc();\n var categorySelected = this.model.getSelectedDimension().colId !== ChartModel.DEFAULT_CATEGORY;\n var chartProxyParams = {\n chartType: this.model.getChartType(),\n processChartOptions: processChartOptionsFunc,\n getSelectedPalette: this.getSelectedPalette.bind(this),\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: this.model.isGrouping(),\n document: this.gridOptionsWrapper.getDocument()\n };\n // local state used to detect when chart type changes\n this.currentChartType = this.model.getChartType();\n this.currentChartGroupingActive = this.model.isGrouping();\n this.currentPalette = this.model.getActivePalette();\n this.chartProxy = this.createChartProxy(chartProxyParams);\n // update chart proxy ref (used by format panel)\n this.model.setChartProxy(this.chartProxy);\n };\n GridChartComp.prototype.createChartProxy = function (chartProxyParams) {\n switch (chartProxyParams.chartType) {\n case ChartType.GroupedColumn:\n case ChartType.StackedColumn:\n case ChartType.NormalizedColumn:\n case ChartType.GroupedBar:\n case ChartType.StackedBar:\n case ChartType.NormalizedBar:\n return new BarChartProxy(chartProxyParams);\n case ChartType.Pie:\n return new PieChartProxy(chartProxyParams);\n case ChartType.Doughnut:\n return new DoughnutChartProxy(chartProxyParams);\n case ChartType.Area:\n case ChartType.StackedArea:\n case ChartType.NormalizedArea:\n return new AreaChartProxy(chartProxyParams);\n case ChartType.Line:\n return new LineChartProxy(chartProxyParams);\n case ChartType.Scatter:\n case ChartType.Bubble:\n return new 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 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(AgDialog.EVENT_DESTROYED, function () { return _this.destroy(); });\n };\n GridChartComp.prototype.addMenu = function () {\n this.chartMenu = new 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.currentChartType !== this.model.getChartType();\n var groupingChanged = this.currentChartGroupingActive !== this.model.isGrouping();\n var paletteChanged = this.currentPalette !== this.model.getActivePalette();\n return chartTypeChanged || groupingChanged || paletteChanged;\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.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 if (this.model.getChartType() === ChartType.Bubble) {\n minFieldsRequired = 3;\n }\n else {\n minFieldsRequired = 2;\n }\n }\n var isEmptyChart = fields.length < minFieldsRequired || data.length === 0;\n if (parent) {\n _.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 = _.getInnerHeight(eChartWrapper);\n chart.width = _.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 _.clearElement(eGui);\n // remove from parent, so if user provided container, we detach from the provided dom element\n _.removeFromParent(eGui);\n };\n GridChartComp.TEMPLATE = \"
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\";\n __decorate([\n RefSelector('eChart')\n ], GridChartComp.prototype, \"eChart\", void 0);\n __decorate([\n RefSelector('eChartComponentsWrapper')\n ], GridChartComp.prototype, \"eChartComponentsWrapper\", void 0);\n __decorate([\n RefSelector('eDockedContainer')\n ], GridChartComp.prototype, \"eDockedContainer\", void 0);\n __decorate([\n RefSelector('eEmpty')\n ], GridChartComp.prototype, \"eEmpty\", void 0);\n __decorate([\n Autowired('resizeObserverService')\n ], GridChartComp.prototype, \"resizeObserverService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], GridChartComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('environment')\n ], GridChartComp.prototype, \"environment\", void 0);\n __decorate([\n Autowired('chartTranslator')\n ], GridChartComp.prototype, \"chartTranslator\", void 0);\n __decorate([\n Autowired('eventService')\n ], GridChartComp.prototype, \"eventService\", void 0);\n __decorate([\n PostConstruct\n ], GridChartComp.prototype, \"init\", null);\n return GridChartComp;\n}(Component));\nexport { GridChartComp };\n","var __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};\nimport { _, Bean, Autowired, PreDestroy, ChartType, Optional, } from \"@ag-grid-community/core\";\nimport { GridChartComp } from \"./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 = [];\n }\n ChartService.prototype.createChartFromCurrentRange = function (chartType) {\n if (chartType === void 0) { chartType = 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, 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, true, true, params.chartContainer, undefined, params.processChartOptions);\n };\n ChartService.prototype.createChart = function (cellRange, chartType, 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 insideDialog: !(container || createChartContainerFunc),\n suppressChartRanges: suppressChartRanges,\n aggFunc: aggFunc,\n processChartOptions: processChartOptions,\n };\n var chartComp = new 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 _.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.EVENT_DESTROYED, function () {\n _.removeFromArray(_this.activeCharts, 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.indexOf(chartRef) >= 0) {\n chartComp.destroy();\n _.removeFromArray(_this.activeCharts, chartRef);\n }\n },\n chartElement: chartComp.getGui()\n };\n this.activeCharts.push(chartRef);\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 // we take copy as the forEach is removing from the array as we process\n var activeCharts = this.activeCharts.slice();\n activeCharts.forEach(function (chart) { return chart.destroyChart(); });\n };\n __decorate([\n Optional('rangeController')\n ], ChartService.prototype, \"rangeController\", void 0);\n __decorate([\n Autowired('columnController')\n ], ChartService.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('environment')\n ], ChartService.prototype, \"environment\", void 0);\n __decorate([\n Autowired('context')\n ], ChartService.prototype, \"context\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ChartService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PreDestroy\n ], ChartService.prototype, \"destroyAllActiveCharts\", null);\n ChartService = __decorate([\n Bean('chartService')\n ], ChartService);\n return ChartService;\n}());\nexport { ChartService };\n","var __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};\nimport { Autowired, Bean } from \"@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 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 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 tooltips: 'Tooltips',\n offsets: 'Offsets',\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 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 columnGroup: 'Column',\n barGroup: 'Bar',\n pieGroup: 'Pie',\n lineGroup: 'Line',\n scatterGroup: 'X Y (Scatter)',\n areaGroup: 'Area',\n pivotChartRequiresPivotMode: 'Pivot Chart requires Pivot Mode enabled.',\n noDataToChart: 'No data available to be charted.',\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ChartTranslator.prototype, \"gridOptionsWrapper\", void 0);\n ChartTranslator = ChartTranslator_1 = __decorate([\n Bean(\"chartTranslator\")\n ], ChartTranslator);\n return ChartTranslator;\n}());\nexport { ChartTranslator };\n","var __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};\nimport { Autowired, Bean, Constants, Events, PostConstruct, _ } from \"@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(Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.removeAllCellRanges.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.removeAllCellRanges.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.removeAllCellRanges.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_GROUP_OPENED, this.refreshLastRangeStart.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_MOVED, this.refreshLastRangeStart.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_PINNED, this.refreshLastRangeStart.bind(this));\n this.eventService.addEventListener(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 = !_.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.onRangeChanged({ started: false, finished: true });\n // notify chart of cell range change\n var event_1 = {\n id: cellRange.id,\n type: Events.EVENT_CHART_RANGE_SELECTION_CHANGED\n };\n _this.eventService.dispatchEvent(event_1);\n }\n });\n };\n RangeController.prototype.refreshLastRangeStart = function () {\n var lastRange = _.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 = [];\n rangeColumns.forEach(function (col) { return allPositions.push(allColumns.indexOf(col)); });\n allPositions.sort(function (a, b) { return a - b; });\n return _.last(allPositions) - allPositions[0] + 1 === rangeColumns.length;\n };\n RangeController.prototype.getRangeStartRow = function (cellRange) {\n if (cellRange.startRow && cellRange.endRow) {\n var startRowIsFirst = this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow);\n return startRowIsFirst ? cellRange.startRow : cellRange.endRow;\n }\n var pinned = (this.pinnedRowModel.getPinnedTopRowCount() > 0) ? Constants.PINNED_TOP : undefined;\n return { rowIndex: 0, rowPinned: pinned };\n };\n RangeController.prototype.getRangeEndRow = function (cellRange) {\n if (cellRange.startRow && cellRange.endRow) {\n var startRowIsFirst = this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow);\n return startRowIsFirst ? 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: 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 || _.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 existingRange;\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 existingRange = range;\n break;\n }\n }\n if (existingRange) {\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 = _.last(this.cellRanges) === existingRange;\n if (!atEndOfList) {\n _.removeFromArray(this.cellRanges, existingRange);\n this.cellRanges.push(existingRange);\n }\n }\n else {\n var newRange = {\n startRow: rowForCell,\n endRow: rowForCell,\n columns: columns,\n startColumn: cell.column\n };\n this.cellRanges.push(newRange);\n }\n this.newestRangeStartCell = cell;\n this.onDragStop();\n this.onRangeChanged({ started: false, finished: true });\n };\n RangeController.prototype.extendLatestRangeToCell = function (cellPosition) {\n if (this.isEmpty() || !this.newestRangeStartCell) {\n return;\n }\n var cellRange = _.last(this.cellRanges);\n this.updateRangeEnd({\n cellRange: cellRange,\n cellPosition: cellPosition\n });\n };\n RangeController.prototype.updateRangeEnd = function (params) {\n var cellRange = params.cellRange, cellPosition = params.cellPosition;\n var beforeCols = __spreadArrays(cellRange.columns);\n var beforeEndRow = _.cloneObject(cellRange.endRow);\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 this.onRangeChanged({ started: false, finished: true });\n var colsChanged = !_.compareArrays(beforeCols, cellRange.columns);\n var endRowChanged = JSON.stringify(beforeEndRow) !== JSON.stringify(cellRange.endRow);\n if (colsChanged || endRowChanged) {\n // Note that we are raising a new event as the Chart shouldn't be notified when other ranges are changed\n // or when the chart setCellRanges when the chart gains focus!\n var event_2 = {\n id: cellRange.id,\n type: Events.EVENT_CHART_RANGE_SELECTION_CHANGED\n };\n this.eventService.dispatchEvent(event_2);\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 === _.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 = [];\n for (var _i = 0, _a = cellRange.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n var idx = allColumns.indexOf(column);\n if (idx > -1) {\n allIndices.push(idx);\n }\n }\n allIndices.sort(function (a, b) { return a - b; });\n return {\n left: allColumns[allIndices[0]],\n right: allColumns[_.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 = _.last(this.cellRanges);\n var startCell = this.newestRangeStartCell;\n var firstCol = lastRange.columns[0];\n var lastCol = _.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.onRangeChanged({ started: false, finished: true });\n };\n RangeController.prototype.createCellRangeFromCellRangeParams = function (params) {\n var _this = this;\n var columns;\n if (params.columns) {\n columns = [];\n params.columns.forEach(function (key) {\n var col = _this.columnController.getColumnWithValidation(key);\n if (col) {\n columns.push(col);\n }\n });\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 = undefined;\n if (params.rowStartIndex != null) {\n startRow = {\n rowIndex: params.rowStartIndex,\n rowPinned: params.rowStartPinned\n };\n }\n var endRow = undefined;\n if (params.rowEndIndex != null) {\n endRow = {\n rowIndex: params.rowEndIndex,\n rowPinned: params.rowEndPinned\n };\n }\n var newRange = {\n startRow: startRow,\n endRow: endRow,\n columns: columns,\n startColumn: columns[0]\n };\n return newRange;\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.onRangeChanged({ started: false, finished: true });\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 var moreThanOneCell = startRow.rowPinned !== endRow.rowPinned ||\n startRow.rowIndex !== endRow.rowIndex ||\n range.columns.length !== 1;\n return moreThanOneCell;\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.onRangeChanged({ started: false, finished: 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 && range.columns.indexOf(cell.column) >= 0;\n var rowInRange = this.isRowInRange(cell.rowIndex, cell.rowPinned, range);\n return columnInRange && rowInRange;\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 var matchingCount = 0;\n this.cellRanges.forEach(function (cellRange) {\n if (_this.isCellInSpecificRange(cell, cellRange)) {\n matchingCount++;\n }\n });\n return matchingCount;\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 (_.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 || _.exists(_.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 = _.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.onRangeChanged({ started: true, finished: false });\n };\n RangeController.prototype.onDragging = function (mouseEvent) {\n if (!this.dragging || !mouseEvent) {\n return;\n }\n this.lastMouseEvent = mouseEvent;\n var cellPosition = this.mouseEventService.getCellPositionForEvent(mouseEvent);\n var mouseAndStartInPinnedTop = cellPosition && cellPosition.rowPinned === 'top' && this.newestRangeStartCell.rowPinned === 'top';\n var mouseAndStartInPinnedBottom = cellPosition && cellPosition.rowPinned === 'bottom' && this.newestRangeStartCell.rowPinned === 'bottom';\n var skipVerticalScroll = mouseAndStartInPinnedTop || mouseAndStartInPinnedBottom;\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.onRangeChanged({ started: false, finished: false });\n };\n RangeController.prototype.onDragStop = function () {\n if (!this.dragging) {\n return;\n }\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.onRangeChanged({ started: false, finished: true });\n };\n RangeController.prototype.onRangeChanged = function (params) {\n var started = params.started, finished = params.finished;\n this.dispatchChangedEvent(started, finished);\n };\n RangeController.prototype.dispatchChangedEvent = function (started, finished) {\n var event = {\n type: Events.EVENT_RANGE_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n started: started,\n finished: finished\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 var toIndex = isSameColumn ? fromIndex : allColumns.indexOf(columnTo);\n if (fromIndex < 0) {\n console.warn('ag-Grid: column ' + columnFrom.getId() + ' is not visible');\n return undefined;\n }\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 Autowired('loggerFactory')\n ], RangeController.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('rowModel')\n ], RangeController.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('eventService')\n ], RangeController.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnController')\n ], RangeController.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('mouseEventService')\n ], RangeController.prototype, \"mouseEventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], RangeController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnApi')\n ], RangeController.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], RangeController.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('cellNavigationService')\n ], RangeController.prototype, \"cellNavigationService\", void 0);\n __decorate([\n Autowired(\"pinnedRowModel\")\n ], RangeController.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired('rowPositionUtils')\n ], RangeController.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n Autowired('cellPositionUtils')\n ], RangeController.prototype, \"cellPositionUtils\", void 0);\n __decorate([\n PostConstruct\n ], RangeController.prototype, \"init\", null);\n RangeController = __decorate([\n Bean('rangeController')\n ], RangeController);\n return RangeController;\n}());\nexport { 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() !== 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","var __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};\nimport { Autowired, Component, PostConstruct, _ } from \"@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 _.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 _.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 = _.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 || !_.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 _.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 Autowired(\"rowRenderer\")\n ], AbstractSelectionHandle.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired(\"dragService\")\n ], AbstractSelectionHandle.prototype, \"dragService\", void 0);\n __decorate([\n Autowired(\"rangeController\")\n ], AbstractSelectionHandle.prototype, \"rangeController\", void 0);\n __decorate([\n Autowired(\"mouseEventService\")\n ], AbstractSelectionHandle.prototype, \"mouseEventService\", void 0);\n __decorate([\n Autowired(\"columnController\")\n ], AbstractSelectionHandle.prototype, \"columnController\", void 0);\n __decorate([\n Autowired(\"cellNavigationService\")\n ], AbstractSelectionHandle.prototype, \"cellNavigationService\", void 0);\n __decorate([\n Autowired('rowPositionUtils')\n ], AbstractSelectionHandle.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n PostConstruct\n ], AbstractSelectionHandle.prototype, \"init\", null);\n return AbstractSelectionHandle;\n}(Component));\nexport { AbstractSelectionHandle };\n","var __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};\nimport { Autowired, _ } from '@ag-grid-community/core';\nimport { AbstractSelectionHandle } from \"./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(), x_1 = _a.x, y_1 = _a.y;\n this.initialXY = { x: x_1, y: y_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 this.handleValueChanged(initialRange, finalRange, e);\n this.rangeController.setCellRanges([finalRange]);\n }\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] : _.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 _this.valueService.setValue(rowNode, col, currentValue);\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 _this.valueService.setValue(rowNode, col, null);\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 _.last(values) + 1 * multiplier;\n }\n return values[idx % values.length];\n }\n return _.last(_.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 _.removeCssClass(eGui, 'ag-selection-fill-top');\n _.removeCssClass(eGui, 'ag-selection-fill-right');\n _.removeCssClass(eGui, 'ag-selection-fill-bottom');\n _.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 _.addOrRemoveCssClass(eGui, 'ag-selection-fill-left', i === 0);\n _.addOrRemoveCssClass(eGui, 'ag-selection-fill-right', i === colLen - 1);\n }\n _.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 _.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 _.addOrRemoveCssClass(eGui, 'ag-selection-fill-top', _this.rowPositionUtils.sameRow(row, rangeStartRow));\n _.addOrRemoveCssClass(eGui, 'ag-selection-fill-bottom', _this.rowPositionUtils.sameRow(row, rangeEndRow));\n if (isMovingLeft) {\n _this.isLeft = true;\n _.addOrRemoveCssClass(eGui, 'ag-selection-fill-left', column === colsToMark[0]);\n }\n else {\n _.addOrRemoveCssClass(eGui, 'ag-selection-fill-right', column === _.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 _.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 Autowired('valueService')\n ], FillHandle.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], FillHandle.prototype, \"gridOptionsWrapper\", void 0);\n return FillHandle;\n}(AbstractSelectionHandle));\nexport { FillHandle };\n","var __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};\nimport { _ } from \"@ag-grid-community/core\";\nimport { AbstractSelectionHandle } from \"./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 = _.last(cellRanges);\n if (!this.rangeFixed) {\n this.fixRangeStartEnd(lastRange);\n this.rangeFixed = true;\n }\n var newEndRow = {\n rowIndex: lastCellHovered.rowIndex,\n rowPinned: lastCellHovered.rowPinned,\n };\n var rowChanged = !this.rowPositionUtils.sameRow(newEndRow, this.rangeController.getRangeEndRow(lastRange));\n if (cellRanges.length === 2 && rowChanged) {\n this.rangeController.updateRangeEnd({\n cellRange: cellRanges[0],\n cellPosition: __assign(__assign({}, newEndRow), { column: cellRanges[0].columns[0] })\n });\n }\n this.endPosition = __assign(__assign({}, newEndRow), { column: lastCellHovered.column });\n this.rangeController.extendLatestRangeToCell(this.endPosition);\n };\n RangeHandle.prototype.onDragEnd = function (e) {\n var cellRange = _.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));\nexport { RangeHandle };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { RangeController } from \"./rangeSelection/rangeController\";\nimport { FillHandle } from \"./rangeSelection/fillHandle\";\nimport { RangeHandle } from \"./rangeSelection/rangeHandle\";\nexport var RangeSelectionModule = {\n moduleName: ModuleNames.RangeSelectionModule,\n beans: [RangeController],\n agStackComponents: [\n { componentName: 'AgFillHandle', componentClass: FillHandle },\n { componentName: 'AgRangeHandle', componentClass: RangeHandle }\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { ChartService } from \"./chartAdaptor/chartService\";\nimport { ChartTranslator } from \"./chartAdaptor/chartComp/chartTranslator\";\nimport { RangeSelectionModule } from \"@ag-grid-enterprise/range-selection\";\nexport var GridChartsModule = {\n moduleName: ModuleNames.GridChartsModule,\n beans: [\n ChartService, ChartTranslator\n ],\n dependantModules: [\n RangeSelectionModule,\n EnterpriseCoreModule\n ]\n};\n","var __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};\nimport { Autowired, Component, Grid, RefSelector, RowNode, _ } from \"@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 (_.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, 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 _.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 (_.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 (_.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 = _.cloneObject(gridOptions);\n // tslint:disable-next-line\n new 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 RefSelector('eDetailGrid')\n ], DetailCellRenderer.prototype, \"eDetailGrid\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], DetailCellRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('environment')\n ], DetailCellRenderer.prototype, \"environment\", void 0);\n return DetailCellRenderer;\n}(Component));\nexport { DetailCellRenderer };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { DetailCellRenderer } from \"./masterDetail/detailCellRenderer\";\nexport var MasterDetailModule = {\n moduleName: ModuleNames.MasterDetailModule,\n beans: [],\n userComponents: [\n { componentName: 'agDetailCellRenderer', componentClass: DetailCellRenderer }\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","var __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};\nimport { Autowired, Component, PostConstruct, _, RefSelector } from \"@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(_.createIconNoSpan('check', this.gridOptionsWrapper));\n }\n else if (this.params.icon) {\n if (_.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(_.createIconNoSpan('smallLeft', this.gridOptionsWrapper));\n }\n else {\n // for normal, we show arrow going right\n this.ePopupPointer.appendChild(_.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 _.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 _.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 Autowired('gridOptionsWrapper')\n ], MenuItemComponent.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('tooltipManager')\n ], MenuItemComponent.prototype, \"tooltipManager\", void 0);\n __decorate([\n RefSelector('eIcon')\n ], MenuItemComponent.prototype, \"eIcon\", void 0);\n __decorate([\n RefSelector('eName')\n ], MenuItemComponent.prototype, \"eName\", void 0);\n __decorate([\n RefSelector('eShortcut')\n ], MenuItemComponent.prototype, \"eShortcut\", void 0);\n __decorate([\n RefSelector('ePopupPointer')\n ], MenuItemComponent.prototype, \"ePopupPointer\", void 0);\n __decorate([\n PostConstruct\n ], MenuItemComponent.prototype, \"init\", null);\n return MenuItemComponent;\n}(Component));\nexport { MenuItemComponent };\n","var __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};\nimport { Autowired, Component, _ } from \"@ag-grid-community/core\";\nimport { MenuItemComponent } from \"./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 || _.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(menuItemDef);\n this.getContext().wireBean(cMenuItem);\n this.getGui().appendChild(cMenuItem.getGui());\n this.addDestroyFunc(function () { return cMenuItem.destroy(); });\n cMenuItem.addEventListener(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', function () { return _this.timerCount++; });\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 _.addCssClass(this.activeMenuItem.getGui(), 'ag-menu-option-active');\n if (menuItemParams.subMenu) {\n this.addHoverForChildPopup(menuItemParams, menuItem);\n }\n };\n MenuList.prototype.removeActiveItem = function () {\n if (this.activeMenuItem) {\n _.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(_.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 = _.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.EVENT_ITEM_SELECTED, selectedListener);\n this.removeChildFuncs.push(function () {\n childMenu.clearActiveItem();\n childMenu.destroy();\n _this.subMenuParentDef = null;\n childMenu.removeEventListener(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 Autowired('popupService')\n ], MenuList.prototype, \"popupService\", void 0);\n return MenuList;\n}(Component));\nexport { MenuList };\n","var __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};\nimport { _, Autowired, Bean, BeanStub, Constants, Events, ModuleNames, ModuleRegistry, PostConstruct, Promise, TabbedLayout } from \"@ag-grid-community/core\";\nimport { MenuList } from \"./menuList\";\nimport { MenuItemComponent } from \"./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(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 Autowired('context')\n ], EnterpriseMenuFactory.prototype, \"context\", void 0);\n __decorate([\n Autowired('popupService')\n ], EnterpriseMenuFactory.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], EnterpriseMenuFactory.prototype, \"gridOptionsWrapper\", void 0);\n EnterpriseMenuFactory = __decorate([\n Bean('menuFactory')\n ], EnterpriseMenuFactory);\n return EnterpriseMenuFactory;\n}());\nexport { 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 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(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 ModuleRegistry.isRegistered(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 _.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() === 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();\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.EVENT_ITEM_SELECTED, this.onHidePopup.bind(this));\n this.tabItemGeneral = {\n title: _.createIconNoSpan('menu', this.gridOptionsWrapper, this.column),\n bodyPromise: 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: _.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 _.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: _.createIconNoSpan('columns', this.gridOptionsWrapper, this.column),\n bodyPromise: 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 Autowired('columnController')\n ], EnterpriseMenu.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('filterManager')\n ], EnterpriseMenu.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('gridApi')\n ], EnterpriseMenu.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], EnterpriseMenu.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('eventService')\n ], EnterpriseMenu.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('menuItemMapper')\n ], EnterpriseMenu.prototype, \"menuItemMapper\", void 0);\n __decorate([\n Autowired('rowModel')\n ], EnterpriseMenu.prototype, \"rowModel\", void 0);\n __decorate([\n PostConstruct\n ], EnterpriseMenu.prototype, \"init\", null);\n return EnterpriseMenu;\n}(BeanStub));\nexport { EnterpriseMenu };\n","var __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};\nimport { _, Autowired, Bean, BeanStub, Component, ModuleNames, PostConstruct, Optional, ModuleRegistry } from \"@ag-grid-community/core\";\nimport { MenuItemComponent } from \"./menuItemComponent\";\nimport { MenuList } from \"./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 (_.exists(node) && ModuleRegistry.isRegistered(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 ModuleRegistry.isRegistered(ModuleNames.RangeSelectionModule) &&\n ModuleRegistry.isRegistered(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 (_.exists(node)) {\n // if user clicks a cell\n var csvModuleMissing = !ModuleRegistry.isRegistered(ModuleNames.CsvExportModule);\n var excelModuleMissing = !ModuleRegistry.isRegistered(ModuleNames.ExcelExportModule);\n var suppressExcel = this.gridOptionsWrapper.isSuppressExcelExport() || excelModuleMissing;\n var suppressCsv = this.gridOptionsWrapper.isSuppressCsvExport() || csvModuleMissing;\n var onIPad = _.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 || _.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(BeanStub.EVENT_DESTROYED, function () {\n if (_this.activeMenu === menu) {\n _this.activeMenu = null;\n }\n });\n };\n __decorate([\n Autowired('context')\n ], ContextMenuFactory.prototype, \"context\", void 0);\n __decorate([\n Autowired('popupService')\n ], ContextMenuFactory.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ContextMenuFactory.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('rowModel')\n ], ContextMenuFactory.prototype, \"rowModel\", void 0);\n __decorate([\n Optional('rangeController')\n ], ContextMenuFactory.prototype, \"rangeController\", void 0);\n __decorate([\n Autowired('columnController')\n ], ContextMenuFactory.prototype, \"columnController\", void 0);\n __decorate([\n PostConstruct\n ], ContextMenuFactory.prototype, \"init\", null);\n ContextMenuFactory = __decorate([\n Bean('contextMenuFactory')\n ], ContextMenuFactory);\n return ContextMenuFactory;\n}());\nexport { 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();\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.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 Autowired('eventService')\n ], ContextMenu.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('menuItemMapper')\n ], ContextMenu.prototype, \"menuItemMapper\", void 0);\n __decorate([\n PostConstruct\n ], ContextMenu.prototype, \"addMenuItems\", null);\n return ContextMenu;\n}(Component));\n","var __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};\nimport { _, Autowired, Bean, ChartType, Constants, ModuleNames, ModuleRegistry, Optional } from '@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 switch (key) {\n case 'pinSubMenu':\n return {\n name: localeTextFunc('pinColumn', 'Pin Column'),\n icon: _.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, 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, 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 (ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Aggregation from Menu')) {\n return {\n name: localeTextFunc('valueAggregation', 'Value Aggregation'),\n icon: _.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, \"contextMenu\"); }\n };\n case 'autoSizeAll':\n return {\n name: localeTextFunc('autosizeAllColumns', 'Autosize All Columns'),\n action: function () { return _this.columnController.autoSizeAllColumns(\"contextMenu\"); }\n };\n case 'rowGroup':\n return {\n name: localeTextFunc('groupBy', 'Group by') + ' ' + _.escape(this.columnController.getDisplayNameForColumn(column, 'header')),\n action: function () { return _this.columnController.addRowGroupColumn(column, \"contextMenu\"); },\n icon: _.createIconNoSpan('menuAddRowGroup', this.gridOptionsWrapper, null)\n };\n case 'rowUnGroup':\n return {\n name: localeTextFunc('ungroupBy', 'Un-Group by') + ' ' + _.escape(this.columnController.getDisplayNameForColumn(column, 'header')),\n action: function () { return _this.columnController.removeRowGroupColumn(column, \"contextMenu\"); },\n icon: _.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 (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Copy from Menu')) {\n return {\n name: localeTextFunc('copy', 'Copy'),\n shortcut: localeTextFunc('ctrlC', 'Ctrl+C'),\n icon: _.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 (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Copy with Headers from Menu')) {\n return {\n name: localeTextFunc('copyWithHeaders', 'Copy with Headers'),\n // shortcut: localeTextFunc('ctrlC','Ctrl+C'),\n icon: _.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 (ModuleRegistry.assertRegistered(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: _.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 = ModuleRegistry.isRegistered(ModuleNames.CsvExportModule);\n var excelModuleLoaded = ModuleRegistry.isRegistered(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: _.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: _.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: _.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‎', ChartType.GroupedColumn);\n case 'pivotStackedColumn':\n return pivotChartMenuItem('stackedColumn', 'Stacked‎', ChartType.StackedColumn);\n case 'pivotNormalizedColumn':\n return pivotChartMenuItem('normalizedColumn', '100% Stacked‎', 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‎', ChartType.GroupedColumn);\n case 'rangeStackedColumn':\n return rangeChartMenuItem('stackedColumn', 'Stacked‎', ChartType.StackedColumn);\n case 'rangeNormalizedColumn':\n return rangeChartMenuItem('normalizedColumn', '100% Stacked‎', 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‎', ChartType.GroupedBar);\n case 'pivotStackedBar':\n return pivotChartMenuItem('stackedBar', 'Stacked‎', ChartType.StackedBar);\n case 'pivotNormalizedBar':\n return pivotChartMenuItem('normalizedBar', '100% Stacked‎', 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‎', ChartType.GroupedBar);\n case 'rangeStackedBar':\n return rangeChartMenuItem('stackedBar', 'Stacked‎', ChartType.StackedBar);\n case 'rangeNormalizedBar':\n return rangeChartMenuItem('normalizedBar', '100% Stacked‎', 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‎', ChartType.Pie);\n case 'pivotDoughnut':\n return pivotChartMenuItem('doughnut', 'Doughnut‎', 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‎', ChartType.Pie);\n case 'rangeDoughnut':\n return rangeChartMenuItem('doughnut', 'Doughnut‎', ChartType.Doughnut);\n case 'pivotLineChart':\n return pivotChartMenuItem('line', 'Line‎', ChartType.Line);\n case 'rangeLineChart':\n return rangeChartMenuItem('line', 'Line‎', 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‎', ChartType.Scatter);\n case 'pivotBubble':\n return pivotChartMenuItem('bubble', 'Bubble‎', 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‎', ChartType.Scatter);\n case 'rangeBubble':\n return rangeChartMenuItem('bubble', 'Bubble‎', 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‎', ChartType.Area);\n case 'pivotStackedArea':\n return pivotChartMenuItem('stackedArea', 'Stacked‎', ChartType.StackedArea);\n case 'pivotNormalizedArea':\n return pivotChartMenuItem('normalizedArea', '100% Stacked‎', 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‎', ChartType.Area);\n case 'rangeStackedArea':\n return rangeChartMenuItem('stackedArea', 'Stacked‎', ChartType.StackedArea);\n case 'rangeNormalizedArea':\n return rangeChartMenuItem('normalizedArea', '100% Stacked‎', 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 = _.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 Autowired('gridOptionsWrapper')\n ], MenuItemMapper.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], MenuItemMapper.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('gridApi')\n ], MenuItemMapper.prototype, \"gridApi\", void 0);\n __decorate([\n Optional('clipboardService')\n ], MenuItemMapper.prototype, \"clipboardService\", void 0);\n __decorate([\n Optional('aggFuncService')\n ], MenuItemMapper.prototype, \"aggFuncService\", void 0);\n __decorate([\n Optional('chartService')\n ], MenuItemMapper.prototype, \"chartService\", void 0);\n __decorate([\n Optional('context')\n ], MenuItemMapper.prototype, \"context\", void 0);\n MenuItemMapper = __decorate([\n Bean('menuItemMapper')\n ], MenuItemMapper);\n return MenuItemMapper;\n}());\nexport { MenuItemMapper };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { EnterpriseMenuFactory } from \"./menu/enterpriseMenu\";\nimport { ContextMenuFactory } from \"./menu/contextMenu\";\nimport { MenuItemMapper } from \"./menu/menuItemMapper\";\nexport var MenuModule = {\n moduleName: ModuleNames.MenuModule,\n beans: [EnterpriseMenuFactory, ContextMenuFactory, MenuItemMapper],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","var __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};\nimport { _, Autowired, Component } from \"@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 _.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 (_.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 _.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 Autowired('userComponentFactory')\n ], RichSelectRow.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], RichSelectRow.prototype, \"gridOptionsWrapper\", void 0);\n return RichSelectRow;\n}(Component));\nexport { RichSelectRow };\n","var __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};\nimport { Autowired, Constants, PopupComponent, RefSelector, _, VirtualList } from \"@ag-grid-community/core\";\nimport { RichSelectRow } from \"./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(_.createIconNoSpan('smallDown', this.gridOptionsWrapper));\n this.virtualList = new VirtualList();\n this.getContext().wireBean(this.virtualList);\n this.virtualList.setComponentCreator(this.createRowComponent.bind(this));\n this.eList.appendChild(this.virtualList.getGui());\n if (_.exists(this.params.cellHeight)) {\n this.virtualList.setRowHeight(this.params.cellHeight);\n }\n this.renderSelectedValue();\n if (_.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 = _.debounce(this.clearSearchString, 300);\n if (_.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 Constants.KEY_ENTER:\n this.onEnterKeyDown();\n break;\n case Constants.KEY_DOWN:\n case 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 === 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 (!_.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 = _.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 _.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 (_.exists(this.selectedValue)) {\n eValue.innerHTML = valueFormatted;\n }\n else {\n _.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(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 Autowired('userComponentFactory')\n ], RichSelectCellEditor.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], RichSelectCellEditor.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n RefSelector('eValue')\n ], RichSelectCellEditor.prototype, \"eValue\", void 0);\n __decorate([\n RefSelector('eList')\n ], RichSelectCellEditor.prototype, \"eList\", void 0);\n return RichSelectCellEditor;\n}(PopupComponent));\nexport { RichSelectCellEditor };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { RichSelectCellEditor } from \"./richSelect/richSelectCellEditor\";\nexport var RichSelectModule = {\n moduleName: ModuleNames.RichSelectModule,\n beans: [],\n userComponents: [\n { componentName: 'agRichSelect', componentClass: RichSelectCellEditor },\n { componentName: 'agRichSelectCellEditor', componentClass: RichSelectCellEditor }\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","var __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};\nimport { Autowired, PostConstruct, Qualifier, _, RowNodeBlock } from \"@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 (_.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 (_.missing(topPointer) || _.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 (_.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 (_.exists(getServerSideGroupKey) && getServerSideGroupKey) {\n rowNode.key = getServerSideGroupKey(rowNode.data);\n }\n var isServerSideGroup = this.gridOptionsWrapper.getIsServerSideGroupFunc();\n if (_.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 _.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 (_.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 (_.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 (_.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 && _.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 && _.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 && _.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 && _.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 && _.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 Autowired('rowRenderer')\n ], ServerSideBlock.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('columnController')\n ], ServerSideBlock.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('valueService')\n ], ServerSideBlock.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ServerSideBlock.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], ServerSideBlock.prototype, \"init\", null);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], ServerSideBlock.prototype, \"setBeans\", null);\n return ServerSideBlock;\n}(RowNodeBlock));\nexport { ServerSideBlock };\n","var __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};\nimport { _, Autowired, NumberSequence, PostConstruct, Qualifier, RowNodeCache } from \"@ag-grid-community/core\";\nimport { ServerSideBlock } from \"./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 (_.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 (_.missing(block) && dontCreateBlock) {\n return null;\n }\n var blockSize = this.getBlockSize();\n // if block not found, we need to load it\n if (_.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 (_.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.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(blockNumber, this.parentRowNode, this.cacheParams, this);\n this.getContext().wireBean(newBlock);\n var displayIndexSequence = new 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 (_.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 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 NumberSequence(), _this.getVirtualRowCount());\n }\n });\n }\n };\n __decorate([\n Autowired('eventService')\n ], ServerSideCache.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ServerSideCache.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], ServerSideCache.prototype, \"setBeans\", null);\n __decorate([\n PostConstruct\n ], ServerSideCache.prototype, \"init\", null);\n return ServerSideCache;\n}(RowNodeCache));\nexport { ServerSideCache };\n","var __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};\nimport { _, Autowired, Bean, BeanStub, Constants, Events, NumberSequence, PostConstruct, PreDestroy, Qualifier, RowNode, RowNodeBlockLoader, RowNodeCache } from \"@ag-grid-community/core\";\nimport { ServerSideCache } from \"./serverSideCache\";\nimport { ServerSideBlock } from \"./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, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onColumnRowGroupChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_ROW_GROUP_OPENED, this.onRowGroupOpened.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.onColumnEverything.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.onValueChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.onColumnPivotChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, 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 = !_.jsonEquals(this.cacheParams.sortModel, this.sortController.getSortModel());\n var rowGroupDifferent = !_.jsonEquals(this.cacheParams.rowGroupCols, rowGroupColumnVos);\n var pivotDifferent = !_.jsonEquals(this.cacheParams.pivotCols, pivotColumnVos);\n var valuesDifferent = !_.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 = _.find(oldSortModel, function (sm) { return sm.colId === colId; });\n var newSortItem = _.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 (_.missing(rowNode.childrenCache)) {\n this.createNodeCache(rowNode);\n }\n }\n else {\n if (this.gridOptionsWrapper.isPurgeClosedRowNodes() && _.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: 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 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: 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: 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 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 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.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(this.cacheParams, rowNode);\n this.getContext().wireBean(cache);\n cache.addEventListener(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: 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 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 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 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 (_.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 === 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 = 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 _.exists(this.rootNode) && _.exists(this.rootNode.childrenCache);\n };\n ServerSideRowModel.prototype.createDetailNode = function (masterNode) {\n if (_.exists(masterNode.detailNode)) {\n return masterNode.detailNode;\n }\n else {\n var detailNode = new RowNode();\n this.getContext().wireBean(detailNode);\n detailNode.detail = true;\n detailNode.selectable = false;\n detailNode.parent = masterNode;\n if (_.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 Autowired('gridOptionsWrapper')\n ], ServerSideRowModel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('eventService')\n ], ServerSideRowModel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnController')\n ], ServerSideRowModel.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('filterManager')\n ], ServerSideRowModel.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('sortController')\n ], ServerSideRowModel.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ServerSideRowModel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ServerSideRowModel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], ServerSideRowModel.prototype, \"rowRenderer\", void 0);\n __decorate([\n PostConstruct\n ], ServerSideRowModel.prototype, \"postConstruct\", null);\n __decorate([\n PreDestroy\n ], ServerSideRowModel.prototype, \"destroyDatasource\", null);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], ServerSideRowModel.prototype, \"setBeans\", null);\n ServerSideRowModel = __decorate([\n Bean('rowModel')\n ], ServerSideRowModel);\n return ServerSideRowModel;\n}(BeanStub));\nexport { ServerSideRowModel };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { ServerSideRowModel } from \"./serverSideRowModel/serverSideRowModel\";\nexport var ServerSideRowModelModule = {\n moduleName: ModuleNames.ServerSideRowModelModule,\n rowModels: { 'serverSide': ServerSideRowModel },\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","var __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};\nimport { _, Autowired, Constants, Events, ProvidedFilter, RefSelector, VirtualList } from \"@ag-grid-community/core\";\nimport { SetFilterModelValuesType, SetValueModel } from \"./setValueModel\";\nimport { SetFilterListItem } from \"./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 _.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 = _.createIconNoSpan('checkboxChecked', this.gridOptionsWrapper, this.setFilterParams.column);\n this.eUncheckedIcon = _.createIconNoSpan('checkboxUnchecked', this.gridOptionsWrapper, this.setFilterParams.column);\n this.eIndeterminateCheckedIcon = _.createIconNoSpan('checkboxIndeterminate', this.gridOptionsWrapper, this.setFilterParams.column);\n this.initialiseFilterBodyUi();\n var syncValuesAfterDataChange = !params.suppressSyncValuesAfterDataChange\n // sync values only with CSRM\n && this.rowModel.getType() === 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 _.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 _.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, Events.EVENT_ROW_DATA_UPDATED, rowDataUpdatedListener);\n this.addDestroyableEventListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, cellValueChangedListener);\n };\n SetFilter.prototype.updateCheckboxIcon = function () {\n _.clearElement(this.eSelectAll);\n var icon;\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 SetFilter.prototype.setLoading = function (loading) {\n _.setDisplayed(this.eFilterLoading, loading);\n };\n SetFilter.prototype.initialiseFilterBodyUi = function () {\n var _this = this;\n this.virtualList = new 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(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 _.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 _.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(value, this.setFilterParams.column);\n this.getContext().wireBean(listItem);\n listItem.setSelected(this.valueModel.isValueSelected(value));\n listItem.addEventListener(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 = _.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 else {\n var valueExistsInMap = !!this.appliedModelValuesMapped[value];\n return valueExistsInMap;\n }\n };\n SetFilter.prototype.onNewRowsLoaded = function () {\n var valuesType = this.valueModel.getValuesType();\n var valuesTypeProvided = valuesType === SetFilterModelValuesType.PROVIDED_CB\n || valuesType === 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(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(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 (_.isKeyPressed(e, 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 _.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 RefSelector('eSelectAll')\n ], SetFilter.prototype, \"eSelectAll\", void 0);\n __decorate([\n RefSelector('eSelectAllContainer')\n ], SetFilter.prototype, \"eSelectAllContainer\", void 0);\n __decorate([\n RefSelector('eMiniFilter')\n ], SetFilter.prototype, \"eMiniFilter\", void 0);\n __decorate([\n RefSelector('ag-filter-loading')\n ], SetFilter.prototype, \"eFilterLoading\", void 0);\n __decorate([\n Autowired('valueFormatterService')\n ], SetFilter.prototype, \"valueFormatterService\", void 0);\n __decorate([\n Autowired('eventService')\n ], SetFilter.prototype, \"eventService\", void 0);\n return SetFilter;\n}(ProvidedFilter));\nexport { 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","var __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};\nimport { _, Autowired, Component, PostConstruct } from \"@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 _.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 = _.createIconNoSpan('checkboxChecked', this.gridOptionsWrapper, this.column);\n this.eUncheckedIcon = _.createIconNoSpan('checkboxUnchecked', this.gridOptionsWrapper, this.column);\n this.eCheckbox = this.queryForHtmlElement(\".ag-filter-checkbox\");\n this.eClickableArea = this.getGui();\n this.updateCheckboxIcon();\n this.render();\n var listener = function (mouseEvent) {\n mouseEvent.preventDefault();\n _.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 _.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 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 Autowired('gridOptionsWrapper')\n ], SetFilterListItem.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('valueFormatterService')\n ], SetFilterListItem.prototype, \"valueFormatterService\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], SetFilterListItem.prototype, \"userComponentFactory\", void 0);\n __decorate([\n PostConstruct\n ], SetFilterListItem.prototype, \"init\", null);\n return SetFilterListItem;\n}(Component));\nexport { SetFilterListItem };\n","var __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};\nimport { Autowired, Component, RefSelector } from \"@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 RefSelector('eFloatingFilterText')\n ], SetFloatingFilterComp.prototype, \"eFloatingFilterText\", void 0);\n __decorate([\n Autowired('valueFormatterService')\n ], SetFloatingFilterComp.prototype, \"valueFormatterService\", void 0);\n return SetFloatingFilterComp;\n}(Component));\nexport { SetFloatingFilterComp };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { SetFilter } from \"./setFilter/setFilter\";\nimport { SetFloatingFilterComp } from \"./setFilter/setFloatingFilter\";\nexport var SetFilterModule = {\n moduleName: ModuleNames.SetFilterModule,\n beans: [],\n userComponents: [\n { componentName: 'agSetColumnFilter', componentClass: SetFilter },\n { componentName: 'agSetColumnFloatingFilter', componentClass: SetFloatingFilterComp },\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","var __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};\nimport { Bean } from '@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 Bean('statusBarService')\n ], StatusBarService);\n return StatusBarService;\n}());\nexport { StatusBarService };\n","var __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};\nimport { Autowired, Component, PostConstruct, Promise, RefSelector } from '@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 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 Autowired('gridOptionsWrapper')\n ], StatusBar.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('gridOptions')\n ], StatusBar.prototype, \"gridOptions\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], StatusBar.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('statusBarService')\n ], StatusBar.prototype, \"statusBarService\", void 0);\n __decorate([\n RefSelector('eStatusBarLeft')\n ], StatusBar.prototype, \"eStatusBarLeft\", void 0);\n __decorate([\n RefSelector('eStatusBarCenter')\n ], StatusBar.prototype, \"eStatusBarCenter\", void 0);\n __decorate([\n RefSelector('eStatusBarRight')\n ], StatusBar.prototype, \"eStatusBarRight\", void 0);\n __decorate([\n PostConstruct\n ], StatusBar.prototype, \"postConstruct\", null);\n return StatusBar;\n}(Component));\nexport { StatusBar };\n","var __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};\nimport { Autowired, Component, RefSelector } from '@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 Autowired('gridOptionsWrapper')\n ], NameValueComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n RefSelector('eLabel')\n ], NameValueComp.prototype, \"eLabel\", void 0);\n __decorate([\n RefSelector('eValue')\n ], NameValueComp.prototype, \"eValue\", void 0);\n return NameValueComp;\n}(Component));\nexport { NameValueComp };\n","var __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};\nimport { Autowired, Events, PostConstruct, _ } from '@ag-grid-community/core';\nimport { NameValueComp } from \"./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, Events.EVENT_MODEL_UPDATED, this.onDataChanged.bind(this));\n };\n TotalAndFilteredRowsComp.prototype.onDataChanged = function () {\n var rowCount = _.formatNumberCommas(this.getFilteredRowCountValue());\n var totalRowCount = _.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 Autowired('gridApi')\n ], TotalAndFilteredRowsComp.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('eventService')\n ], TotalAndFilteredRowsComp.prototype, \"eventService\", void 0);\n __decorate([\n PostConstruct\n ], TotalAndFilteredRowsComp.prototype, \"postConstruct\", null);\n return TotalAndFilteredRowsComp;\n}(NameValueComp));\nexport { TotalAndFilteredRowsComp };\n","var __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};\nimport { Autowired, Events, PostConstruct, _ } from '@ag-grid-community/core';\nimport { NameValueComp } from \"./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(Events.EVENT_MODEL_UPDATED, listener);\n };\n FilteredRowsComp.prototype.onDataChanged = function () {\n var totalRowCountValue = this.getTotalRowCountValue();\n var filteredRowCountValue = this.getFilteredRowCountValue();\n this.setValue(_.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 Autowired('eventService')\n ], FilteredRowsComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], FilteredRowsComp.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], FilteredRowsComp.prototype, \"postConstruct\", null);\n return FilteredRowsComp;\n}(NameValueComp));\nexport { FilteredRowsComp };\n","var __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};\nimport { Autowired, Events, PostConstruct, _ } from '@ag-grid-community/core';\nimport { NameValueComp } from \"./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(Events.EVENT_MODEL_UPDATED, listener);\n };\n TotalRowsComp.prototype.onDataChanged = function () {\n this.setValue(_.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 Autowired('eventService')\n ], TotalRowsComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], TotalRowsComp.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], TotalRowsComp.prototype, \"postConstruct\", null);\n return TotalRowsComp;\n}(NameValueComp));\nexport { TotalRowsComp };\n","var __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};\nimport { Autowired, Events, PostConstruct, _ } from '@ag-grid-community/core';\nimport { NameValueComp } from \"./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(_.formatNumberCommas(selectedRowCount));\n this.setDisplayed(selectedRowCount > 0);\n var eventListener = this.onRowSelectionChanged.bind(this);\n this.eventService.addEventListener(Events.EVENT_MODEL_UPDATED, eventListener);\n this.eventService.addEventListener(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(_.formatNumberCommas(selectedRowCount));\n this.setDisplayed(selectedRowCount > 0);\n };\n SelectedRowsComp.prototype.init = function () {\n };\n __decorate([\n Autowired('eventService')\n ], SelectedRowsComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], SelectedRowsComp.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], SelectedRowsComp.prototype, \"postConstruct\", null);\n return SelectedRowsComp;\n}(NameValueComp));\nexport { SelectedRowsComp };\n","var __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};\nimport { Autowired, Component, Events, PostConstruct, RefSelector, _, Optional } from '@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, Events.EVENT_RANGE_SELECTION_CHANGED, this.onRangeSelectionChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, 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 (_.exists(statusBarValueComponent) && statusBarValueComponent) {\n statusBarValueComponent.setValue(_.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 = _.exists(this.gridOptions.statusBar) && this.gridOptions.statusBar ? _.find(this.gridOptions.statusBar.statusPanels, function (panel) { return panel.statusPanel === 'agAggregationComponent'; }) : null;\n if (_.exists(aggregationPanelConfig) && aggregationPanelConfig) {\n // a little defensive here - if no statusPanelParams show it, if componentParams we also expect aggFuncs\n if (!_.exists(aggregationPanelConfig.statusPanelParams) ||\n (_.exists(aggregationPanelConfig.statusPanelParams) &&\n _.exists(aggregationPanelConfig.statusPanelParams.aggFuncs) &&\n _.exists(_.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 && !_.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 = _.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 (_.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 (_.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 Autowired('eventService')\n ], AggregationComp.prototype, \"eventService\", void 0);\n __decorate([\n Optional('rangeController')\n ], AggregationComp.prototype, \"rangeController\", void 0);\n __decorate([\n Autowired('valueService')\n ], AggregationComp.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('cellNavigationService')\n ], AggregationComp.prototype, \"cellNavigationService\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], AggregationComp.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], AggregationComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('gridOptions')\n ], AggregationComp.prototype, \"gridOptions\", void 0);\n __decorate([\n Autowired('gridApi')\n ], AggregationComp.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('cellPositionUtils')\n ], AggregationComp.prototype, \"cellPositionUtils\", void 0);\n __decorate([\n Autowired('rowPositionUtils')\n ], AggregationComp.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n RefSelector('sumAggregationComp')\n ], AggregationComp.prototype, \"sumAggregationComp\", void 0);\n __decorate([\n RefSelector('countAggregationComp')\n ], AggregationComp.prototype, \"countAggregationComp\", void 0);\n __decorate([\n RefSelector('minAggregationComp')\n ], AggregationComp.prototype, \"minAggregationComp\", void 0);\n __decorate([\n RefSelector('maxAggregationComp')\n ], AggregationComp.prototype, \"maxAggregationComp\", void 0);\n __decorate([\n RefSelector('avgAggregationComp')\n ], AggregationComp.prototype, \"avgAggregationComp\", void 0);\n __decorate([\n PostConstruct\n ], AggregationComp.prototype, \"postConstruct\", null);\n return AggregationComp;\n}(Component));\nexport { AggregationComp };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { StatusBarService } from \"./statusBar/statusBarService\";\nimport { StatusBar } from \"./statusBar/statusBar\";\nimport { NameValueComp } from \"./statusBar/providedPanels/nameValueComp\";\nimport { TotalAndFilteredRowsComp } from \"./statusBar/providedPanels/totalAndFilteredRowsComp\";\nimport { FilteredRowsComp } from \"./statusBar/providedPanels/filteredRowsComp\";\nimport { TotalRowsComp } from \"./statusBar/providedPanels/totalRowsComp\";\nimport { SelectedRowsComp } from \"./statusBar/providedPanels/selectedRowsComp\";\nimport { AggregationComp } from \"./statusBar/providedPanels/aggregationComp\";\nexport var StatusBarModule = {\n moduleName: ModuleNames.StatusBarModule,\n beans: [StatusBarService],\n agStackComponents: [\n { componentName: 'AgStatusBar', componentClass: StatusBar },\n { componentName: 'AgNameValue', componentClass: NameValueComp },\n ],\n userComponents: [\n { componentName: 'agAggregationComponent', componentClass: AggregationComp },\n { componentName: 'agSelectedRowCountComponent', componentClass: SelectedRowsComp },\n { componentName: 'agTotalRowCountComponent', componentClass: TotalRowsComp },\n { componentName: 'agFilteredRowCountComponent', componentClass: FilteredRowsComp },\n { componentName: 'agTotalAndFilteredRowCountComponent', componentClass: TotalAndFilteredRowsComp }\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","var __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};\nimport { Bean, PostConstruct, Autowired, PreDestroy, RowNode, Constants, Events, _ } from \"@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(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 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 = _.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 _.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 (_.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 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) {\n if (rowCount !== this.rowCount) {\n this.rowCount = rowCount;\n var event_1 = {\n type: Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n newData: false,\n newPage: false,\n keepRenderedRows: false,\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 Autowired('gridOptionsWrapper')\n ], ViewportRowModel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('eventService')\n ], ViewportRowModel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('selectionController')\n ], ViewportRowModel.prototype, \"selectionController\", void 0);\n __decorate([\n Autowired('context')\n ], ViewportRowModel.prototype, \"context\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ViewportRowModel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ViewportRowModel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], ViewportRowModel.prototype, \"rowRenderer\", void 0);\n __decorate([\n PostConstruct\n ], ViewportRowModel.prototype, \"init\", null);\n __decorate([\n PreDestroy\n ], ViewportRowModel.prototype, \"destroyDatasource\", null);\n ViewportRowModel = __decorate([\n Bean('rowModel')\n ], ViewportRowModel);\n return ViewportRowModel;\n}());\nexport { ViewportRowModel };\n","import { AllCommunityModules } from \"@ag-grid-community/all-modules\";\nimport { ClipboardModule } from \"@ag-grid-enterprise/clipboard\";\nimport { ColumnsToolPanelModule } from \"@ag-grid-enterprise/column-tool-panel\";\nimport { ExcelExportModule } from \"@ag-grid-enterprise/excel-export\";\nimport { FiltersToolPanelModule } from \"@ag-grid-enterprise/filter-tool-panel\";\nimport { GridChartsModule } from \"@ag-grid-enterprise/charts\";\nimport { MasterDetailModule } from \"@ag-grid-enterprise/master-detail\";\nimport { MenuModule } from \"@ag-grid-enterprise/menu\";\nimport { RangeSelectionModule } from \"@ag-grid-enterprise/range-selection\";\nimport { RichSelectModule } from \"@ag-grid-enterprise/rich-select\";\nimport { RowGroupingModule } from \"@ag-grid-enterprise/row-grouping\";\nimport { ServerSideRowModelModule } from \"@ag-grid-enterprise/server-side-row-model\";\nimport { SetFilterModule } from \"@ag-grid-enterprise/set-filter\";\nimport { SideBarModule } from \"@ag-grid-enterprise/side-bar\";\nimport { StatusBarModule } from \"@ag-grid-enterprise/status-bar\";\nimport { ViewportRowModelModule } from \"@ag-grid-enterprise/viewport-row-model\";\nexport * from \"@ag-grid-community/all-modules\";\nexport * from \"@ag-grid-enterprise/clipboard\";\nexport * from \"@ag-grid-enterprise/column-tool-panel\";\nexport * from \"@ag-grid-enterprise/excel-export\";\nexport * from \"@ag-grid-enterprise/filter-tool-panel\";\nexport * from \"@ag-grid-enterprise/charts\";\nexport * from \"@ag-grid-enterprise/master-detail\";\nexport * from \"@ag-grid-enterprise/menu\";\nexport * from \"@ag-grid-enterprise/range-selection\";\nexport * from \"@ag-grid-enterprise/rich-select\";\nexport * from \"@ag-grid-enterprise/row-grouping\";\nexport * from \"@ag-grid-enterprise/server-side-row-model\";\nexport * from \"@ag-grid-enterprise/set-filter\";\nexport * from \"@ag-grid-enterprise/side-bar\";\nexport * from \"@ag-grid-enterprise/status-bar\";\nexport * from \"@ag-grid-enterprise/viewport-row-model\";\nexport * from \"@ag-grid-enterprise/core\";\nexport var AllEnterpriseModules = [\n ClipboardModule,\n ColumnsToolPanelModule,\n ExcelExportModule,\n FiltersToolPanelModule,\n GridChartsModule,\n MasterDetailModule,\n MenuModule,\n RangeSelectionModule,\n RichSelectModule,\n RowGroupingModule,\n ServerSideRowModelModule,\n SetFilterModule,\n SideBarModule,\n StatusBarModule,\n ViewportRowModelModule\n];\nexport var AllModules = AllCommunityModules.concat(AllEnterpriseModules);\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { ViewportRowModel } from \"./viewportRowModel/viewportRowModel\";\nexport var ViewportRowModelModule = {\n moduleName: ModuleNames.ViewportRowModelModule,\n rowModels: { 'viewport': ViewportRowModel },\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","'use strict';\n\nexports.__esModule = true;\nexports.defaultMemoize = defaultMemoize;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = createStructuredSelector;\nfunction defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n var length = prev.length;\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction defaultMemoize(func) {\n var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n var lastArgs = null;\n var lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n return function () {\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n lastResult = func.apply(null, arguments);\n }\n\n lastArgs = arguments;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nfunction createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptions[_key - 1] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n // apply arguments instead of spreading for performance.\n return resultFunc.apply(null, arguments);\n }].concat(memoizeOptions));\n\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n var selector = defaultMemoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n params.push(dependencies[i].apply(null, arguments));\n }\n\n // apply arguments instead of spreading for performance.\n return memoizedResultFunc.apply(null, params);\n });\n\n selector.resultFunc = resultFunc;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nvar createSelector = exports.createSelector = createSelectorCreator(defaultMemoize);\n\nfunction createStructuredSelector(selectors) {\n var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/** Provides sync access to async component. Date component can be lazy created - this class encapsulates\n * this by keeping value locally until DateComp has loaded, then passing DateComp the value. */\nvar DateCompWrapper = /** @class */ (function () {\n function DateCompWrapper(userComponentFactory, dateComponentParams, eParent) {\n var _this = this;\n this.alive = true;\n userComponentFactory.newDateComponent(dateComponentParams).then(function (dateComp) {\n // because async, check the filter still exists after component comes back\n if (!_this.alive) {\n if (dateComp.destroy) {\n dateComp.destroy();\n }\n return;\n }\n _this.dateComp = dateComp;\n eParent.appendChild(dateComp.getGui());\n if (dateComp.afterGuiAttached) {\n dateComp.afterGuiAttached();\n }\n if (_this.tempValue) {\n dateComp.setDate(_this.tempValue);\n }\n });\n }\n DateCompWrapper.prototype.destroy = function () {\n this.alive = false;\n if (this.dateComp && this.dateComp.destroy) {\n this.dateComp.destroy();\n }\n };\n DateCompWrapper.prototype.getDate = function () {\n if (this.dateComp) {\n return this.dateComp.getDate();\n }\n else {\n return this.tempValue;\n }\n };\n DateCompWrapper.prototype.setDate = function (value) {\n if (this.dateComp) {\n this.dateComp.setDate(value);\n }\n else {\n this.tempValue = value;\n }\n };\n return DateCompWrapper;\n}());\nexport { DateCompWrapper };\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;","export { default } from './FormControl';\nexport { default as useFormControl } from './useFormControl';","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport PropTypes from 'prop-types';\nimport merge from './merge'; // The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\n\nvar values = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n};\nvar defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: function up(key) {\n return \"@media (min-width:\".concat(values[key], \"px)\");\n }\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n if (process.env.NODE_ENV !== 'production') {\n if (!props.theme) {\n console.error('Material-UI: You are calling a style function without a theme value.');\n }\n }\n\n if (Array.isArray(propValue)) {\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n return propValue.reduce(function (acc, item, index) {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n\n if (_typeof(propValue) === 'object') {\n var _themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n\n return Object.keys(propValue).reduce(function (acc, breakpoint) {\n acc[_themeBreakpoints.up(breakpoint)] = styleFromPropValue(propValue[breakpoint]);\n return acc;\n }, {});\n }\n\n var output = styleFromPropValue(propValue);\n return output;\n}\n\nfunction breakpoints(styleFunction) {\n var newStyleFunction = function newStyleFunction(props) {\n var base = styleFunction(props);\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n var extended = themeBreakpoints.keys.reduce(function (acc, key) {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme: props.theme\n }, props[key]));\n }\n\n return acc;\n }, null);\n return merge(base, extended);\n };\n\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends(_extends({}, styleFunction.propTypes), {}, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl'].concat(_toConsumableArray(styleFunction.filterProps));\n return newStyleFunction;\n}\n\nexport default breakpoints;","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { RefSelector } from \"../../../widgets/componentAnnotations\";\nimport { Autowired } from \"../../../context/context\";\nimport { _ } from \"../../../utils\";\nimport { DateCompWrapper } from \"./dateCompWrapper\";\nimport { ConditionPosition, SimpleFilter } from \"../simpleFilter\";\nimport { ScalerFilter } from \"../scalerFilter\";\nvar DateFilter = /** @class */ (function (_super) {\n __extends(DateFilter, _super);\n function DateFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DateFilter.prototype.mapRangeFromModel = function (filterModel) {\n // unlike the other filters, we do two things here:\n // 1) allow for different attribute names (same as done for other filters) (eg the 'from' and 'to'\n // are in different locations in Date and Number filter models)\n // 2) convert the type (cos Date filter uses Dates, however model is 'string')\n //\n // NOTE: The conversion of string to date also removes the timezone - ie when user picks\n // a date form the UI, it will have timezone info in it. This is lost when creating\n // the model. Then when we recreate the date again here, it's without timezone.\n return {\n from: _.parseYyyyMmDdToDate(filterModel.dateFrom, \"-\"),\n to: _.parseYyyyMmDdToDate(filterModel.dateTo, \"-\")\n };\n };\n DateFilter.prototype.setValueFromFloatingFilter = function (value) {\n if (value != null) {\n var dateFrom = _.parseYyyyMmDdToDate(value, \"-\");\n this.dateCompFrom1.setDate(dateFrom);\n }\n else {\n this.dateCompFrom1.setDate(null);\n }\n this.dateCompTo1.setDate(null);\n this.dateCompFrom2.setDate(null);\n this.dateCompTo2.setDate(null);\n };\n DateFilter.prototype.setConditionIntoUi = function (model, position) {\n var positionOne = position === ConditionPosition.One;\n var dateFromString = model ? model.dateFrom : null;\n var dateToString = model ? model.dateTo : null;\n var dateFrom = _.parseYyyyMmDdToDate(dateFromString, \"-\");\n var dateTo = _.parseYyyyMmDdToDate(dateToString, \"-\");\n var compFrom = positionOne ? this.dateCompFrom1 : this.dateCompFrom2;\n var compTo = positionOne ? this.dateCompTo1 : this.dateCompTo2;\n compFrom.setDate(dateFrom);\n compTo.setDate(dateTo);\n };\n DateFilter.prototype.resetUiToDefaults = function () {\n _super.prototype.resetUiToDefaults.call(this);\n this.dateCompTo1.setDate(null);\n this.dateCompTo2.setDate(null);\n this.dateCompFrom1.setDate(null);\n this.dateCompFrom2.setDate(null);\n };\n DateFilter.prototype.comparator = function () {\n return this.dateFilterParams.comparator ? this.dateFilterParams.comparator : this.defaultComparator.bind(this);\n };\n DateFilter.prototype.defaultComparator = function (filterDate, cellValue) {\n //The default comparator assumes that the cellValue is a date\n var cellAsDate = cellValue;\n if (cellAsDate < filterDate) {\n return -1;\n }\n if (cellAsDate > filterDate) {\n return 1;\n }\n return cellValue != null ? 0 : -1;\n };\n DateFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.dateFilterParams = params;\n this.createDateComponents();\n };\n DateFilter.prototype.createDateComponents = function () {\n var _this = this;\n // params to pass to all four date comps\n var dateComponentParams = {\n onDateChanged: function () { return _this.onUiChanged(); },\n filterParams: this.dateFilterParams\n };\n this.dateCompFrom1 = new DateCompWrapper(this.userComponentFactory, dateComponentParams, this.ePanelFrom1);\n this.dateCompFrom2 = new DateCompWrapper(this.userComponentFactory, dateComponentParams, this.ePanelFrom2);\n this.dateCompTo1 = new DateCompWrapper(this.userComponentFactory, dateComponentParams, this.ePanelTo1);\n this.dateCompTo2 = new DateCompWrapper(this.userComponentFactory, dateComponentParams, this.ePanelTo2);\n this.addDestroyFunc(function () {\n _this.dateCompFrom1.destroy();\n _this.dateCompFrom2.destroy();\n _this.dateCompTo1.destroy();\n _this.dateCompTo2.destroy();\n });\n };\n DateFilter.prototype.getDefaultFilterOptions = function () {\n return DateFilter.DEFAULT_FILTER_OPTIONS;\n };\n DateFilter.prototype.createValueTemplate = function (position) {\n var positionOne = position === ConditionPosition.One;\n var pos = positionOne ? '1' : '2';\n return \"
\\n
\\n
\\n
\\n
\\n
\";\n };\n DateFilter.prototype.isConditionUiComplete = function (position) {\n var positionOne = position === ConditionPosition.One;\n var option = positionOne ? this.getCondition1Type() : this.getCondition2Type();\n var compFrom = positionOne ? this.dateCompFrom1 : this.dateCompFrom2;\n var compTo = positionOne ? this.dateCompTo1 : this.dateCompTo2;\n var valueFrom = compFrom.getDate();\n var valueTo = compTo.getDate();\n if (option === SimpleFilter.EMPTY) {\n return false;\n }\n if (this.doesFilterHaveHiddenInput(option)) {\n return true;\n }\n if (option === SimpleFilter.IN_RANGE) {\n return valueFrom != null && valueTo != null;\n }\n else {\n return valueFrom != null;\n }\n };\n DateFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n return aSimple.dateFrom === bSimple.dateFrom\n && aSimple.dateTo === bSimple.dateTo\n && aSimple.type === bSimple.type;\n };\n // needed for creating filter model\n DateFilter.prototype.getFilterType = function () {\n return DateFilter.FILTER_TYPE;\n };\n DateFilter.prototype.createCondition = function (position) {\n var positionOne = position === ConditionPosition.One;\n var type = positionOne ? this.getCondition1Type() : this.getCondition2Type();\n var dateCompTo = positionOne ? this.dateCompTo1 : this.dateCompTo2;\n var dateCompFrom = positionOne ? this.dateCompFrom1 : this.dateCompFrom2;\n return {\n dateTo: _.serializeDateToYyyyMmDd(dateCompTo.getDate(), \"-\"),\n dateFrom: _.serializeDateToYyyyMmDd(dateCompFrom.getDate(), \"-\"),\n type: type,\n filterType: DateFilter.FILTER_TYPE\n };\n };\n DateFilter.prototype.updateUiVisibility = function () {\n _super.prototype.updateUiVisibility.call(this);\n var showFrom1 = this.showValueFrom(this.getCondition1Type());\n _.setDisplayed(this.ePanelFrom1, showFrom1);\n var showTo1 = this.showValueTo(this.getCondition1Type());\n _.setDisplayed(this.ePanelTo1, showTo1);\n var showFrom2 = this.showValueFrom(this.getCondition2Type());\n _.setDisplayed(this.ePanelFrom2, showFrom2);\n var showTo2 = this.showValueTo(this.getCondition2Type());\n _.setDisplayed(this.ePanelTo2, showTo2);\n };\n DateFilter.FILTER_TYPE = 'date';\n DateFilter.DEFAULT_FILTER_OPTIONS = [ScalerFilter.EQUALS, ScalerFilter.GREATER_THAN,\n ScalerFilter.LESS_THAN, ScalerFilter.NOT_EQUAL, ScalerFilter.IN_RANGE];\n __decorate([\n RefSelector('ePanelFrom1')\n ], DateFilter.prototype, \"ePanelFrom1\", void 0);\n __decorate([\n RefSelector('ePanelFrom2')\n ], DateFilter.prototype, \"ePanelFrom2\", void 0);\n __decorate([\n RefSelector('ePanelTo1')\n ], DateFilter.prototype, \"ePanelTo1\", void 0);\n __decorate([\n RefSelector('ePanelTo2')\n ], DateFilter.prototype, \"ePanelTo2\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], DateFilter.prototype, \"userComponentFactory\", void 0);\n return DateFilter;\n}(ScalerFilter));\nexport { DateFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"../widgets/component\";\nimport { RowNode } from \"../entities/rowNode\";\nimport { Autowired } from \"../context/context\";\nimport { Events } from \"../events\";\nimport { _ } from '../utils';\nvar CheckboxSelectionComponent = /** @class */ (function (_super) {\n __extends(CheckboxSelectionComponent, _super);\n function CheckboxSelectionComponent() {\n return _super.call(this, \"\") || this;\n }\n CheckboxSelectionComponent.prototype.createAndAddIcons = function () {\n this.eCheckedIcon = _.createIconNoSpan('checkboxChecked', this.gridOptionsWrapper, this.column);\n this.eUncheckedIcon = _.createIconNoSpan('checkboxUnchecked', this.gridOptionsWrapper, this.column);\n this.eIndeterminateIcon = _.createIconNoSpan('checkboxIndeterminate', this.gridOptionsWrapper, this.column);\n var element = this.getGui();\n element.appendChild(this.eCheckedIcon);\n element.appendChild(this.eUncheckedIcon);\n element.appendChild(this.eIndeterminateIcon);\n };\n CheckboxSelectionComponent.prototype.onDataChanged = function () {\n // when rows are loaded for the second time, this can impact the selection, as a row\n // could be loaded as already selected (if user scrolls down, and then up again).\n this.onSelectionChanged();\n };\n CheckboxSelectionComponent.prototype.onSelectableChanged = function () {\n this.showOrHideSelect();\n };\n CheckboxSelectionComponent.prototype.onSelectionChanged = function () {\n var state = this.rowNode.isSelected();\n _.setDisplayed(this.eCheckedIcon, state === true);\n _.setDisplayed(this.eUncheckedIcon, state === false);\n _.setDisplayed(this.eIndeterminateIcon, typeof state !== 'boolean');\n };\n CheckboxSelectionComponent.prototype.onCheckedClicked = function () {\n var groupSelectsFiltered = this.gridOptionsWrapper.isGroupSelectsFiltered();\n var updatedCount = this.rowNode.setSelectedParams({ newValue: false, groupSelectsFiltered: groupSelectsFiltered });\n return updatedCount;\n };\n CheckboxSelectionComponent.prototype.onUncheckedClicked = function (event) {\n var groupSelectsFiltered = this.gridOptionsWrapper.isGroupSelectsFiltered();\n var updatedCount = this.rowNode.setSelectedParams({ newValue: true, rangeSelect: event.shiftKey, groupSelectsFiltered: groupSelectsFiltered });\n return updatedCount;\n };\n CheckboxSelectionComponent.prototype.onIndeterminateClicked = function (event) {\n var result = this.onUncheckedClicked(event);\n if (result === 0) {\n this.onCheckedClicked();\n }\n };\n CheckboxSelectionComponent.prototype.init = function (params) {\n this.rowNode = params.rowNode;\n this.column = params.column;\n this.createAndAddIcons();\n this.onSelectionChanged();\n // we don't want the row clicked event to fire when selecting the checkbox, otherwise the row\n // would possibly get selected twice\n this.addGuiEventListener('click', function (event) { return _.stopPropagationForAgGrid(event); });\n // likewise we don't want double click on this icon to open a group\n this.addGuiEventListener('dblclick', function (event) { return _.stopPropagationForAgGrid(event); });\n this.addDestroyableEventListener(this.eCheckedIcon, 'click', this.onCheckedClicked.bind(this));\n this.addDestroyableEventListener(this.eUncheckedIcon, 'click', this.onUncheckedClicked.bind(this));\n this.addDestroyableEventListener(this.eIndeterminateIcon, 'click', this.onIndeterminateClicked.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_ROW_SELECTED, this.onSelectionChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.onDataChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_SELECTABLE_CHANGED, this.onSelectableChanged.bind(this));\n this.isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();\n var checkboxVisibleIsDynamic = this.isRowSelectableFunc || this.checkboxCallbackExists();\n if (checkboxVisibleIsDynamic) {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.showOrHideSelect.bind(this));\n this.showOrHideSelect();\n }\n };\n CheckboxSelectionComponent.prototype.showOrHideSelect = function () {\n // if the isRowSelectable() is not provided the row node is selectable by default\n var selectable = this.rowNode.selectable;\n // checkboxSelection callback is deemed a legacy solution however we will still consider it's result.\n // If selectable, then also check the colDef callback. if not selectable, this it short circuits - no need\n // to call the colDef callback.\n if (selectable && this.checkboxCallbackExists()) {\n selectable = this.column.isCellCheckboxSelection(this.rowNode);\n }\n // show checkbox if both conditions are true\n this.setDisplayed(selectable);\n };\n CheckboxSelectionComponent.prototype.checkboxCallbackExists = function () {\n // column will be missing if groupUseEntireRow=true\n var colDef = this.column ? this.column.getColDef() : null;\n return colDef && typeof colDef.checkboxSelection === 'function';\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], CheckboxSelectionComponent.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('eventService')\n ], CheckboxSelectionComponent.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], CheckboxSelectionComponent.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], CheckboxSelectionComponent.prototype, \"columnApi\", void 0);\n return CheckboxSelectionComponent;\n}(Component));\nexport { CheckboxSelectionComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"../../widgets/component\";\nimport { _ } from \"../../utils\";\nimport { Autowired } from \"../../context/context\";\nvar ARROW_UP = '\\u2191';\nvar ARROW_DOWN = '\\u2193';\nvar AnimateShowChangeCellRenderer = /** @class */ (function (_super) {\n __extends(AnimateShowChangeCellRenderer, _super);\n function AnimateShowChangeCellRenderer() {\n var _this = _super.call(this, AnimateShowChangeCellRenderer.TEMPLATE) || this;\n _this.refreshCount = 0;\n return _this;\n }\n AnimateShowChangeCellRenderer.prototype.init = function (params) {\n // this.params = params;\n this.eValue = this.queryForHtmlElement('.ag-value-change-value');\n this.eDelta = this.queryForHtmlElement('.ag-value-change-delta');\n this.refresh(params);\n };\n AnimateShowChangeCellRenderer.prototype.showDelta = function (params, delta) {\n var absDelta = Math.abs(delta);\n var valueFormatted = params.formatValue(absDelta);\n var valueToUse = _.exists(valueFormatted) ? valueFormatted : absDelta;\n var deltaUp = (delta >= 0);\n if (deltaUp) {\n this.eDelta.innerHTML = ARROW_UP + valueToUse;\n }\n else {\n // because negative, use ABS to remove sign\n this.eDelta.innerHTML = ARROW_DOWN + valueToUse;\n }\n // class makes it green (in ag-fresh)\n _.addOrRemoveCssClass(this.eDelta, 'ag-value-change-delta-up', deltaUp);\n // class makes it red (in ag-fresh)\n _.addOrRemoveCssClass(this.eDelta, 'ag-value-change-delta-down', !deltaUp);\n };\n AnimateShowChangeCellRenderer.prototype.setTimerToRemoveDelta = function () {\n var _this = this;\n // the refreshCount makes sure that if the value updates again while\n // the below timer is waiting, then the below timer will realise it\n // is not the most recent and will not try to remove the delta value.\n this.refreshCount++;\n var refreshCountCopy = this.refreshCount;\n window.setTimeout(function () {\n if (refreshCountCopy === _this.refreshCount) {\n _this.hideDeltaValue();\n }\n }, 2000);\n };\n AnimateShowChangeCellRenderer.prototype.hideDeltaValue = function () {\n _.removeCssClass(this.eValue, 'ag-value-change-value-highlight');\n _.clearElement(this.eDelta);\n };\n AnimateShowChangeCellRenderer.prototype.refresh = function (params) {\n var value = params.value;\n if (value === this.lastValue) {\n return;\n }\n if (_.exists(params.valueFormatted)) {\n this.eValue.innerHTML = params.valueFormatted;\n }\n else if (_.exists(params.value)) {\n this.eValue.innerHTML = value;\n }\n else {\n _.clearElement(this.eValue);\n }\n // we don't show the delta if we are in the middle of a filter. see comment on FilterManager\n // with regards processingFilterChange\n if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {\n return;\n }\n if (typeof value === 'number' && typeof this.lastValue === 'number') {\n var delta = value - this.lastValue;\n this.showDelta(params, delta);\n }\n // highlight the current value, but only if it's not new, otherwise it\n // would get highlighted first time the value is shown\n if (this.lastValue) {\n _.addCssClass(this.eValue, 'ag-value-change-value-highlight');\n }\n this.setTimerToRemoveDelta();\n this.lastValue = value;\n return true;\n };\n AnimateShowChangeCellRenderer.TEMPLATE = '' +\n '' +\n '' +\n '';\n __decorate([\n Autowired('filterManager')\n ], AnimateShowChangeCellRenderer.prototype, \"filterManager\", void 0);\n return AnimateShowChangeCellRenderer;\n}(Component));\nexport { AnimateShowChangeCellRenderer };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"../../widgets/component\";\nimport { _ } from \"../../utils\";\nimport { Autowired } from \"../../context/context\";\nvar AnimateSlideCellRenderer = /** @class */ (function (_super) {\n __extends(AnimateSlideCellRenderer, _super);\n function AnimateSlideCellRenderer() {\n var _this = _super.call(this, AnimateSlideCellRenderer.TEMPLATE) || this;\n _this.refreshCount = 0;\n _this.eCurrent = _this.queryForHtmlElement('.ag-value-slide-current');\n return _this;\n }\n AnimateSlideCellRenderer.prototype.init = function (params) {\n this.params = params;\n this.refresh(params);\n };\n AnimateSlideCellRenderer.prototype.addSlideAnimation = function () {\n var _this = this;\n this.refreshCount++;\n // below we keep checking this, and stop working on the animation\n // if it no longer matches - this means another animation has started\n // and this one is stale.\n var refreshCountCopy = this.refreshCount;\n // if old animation, remove it\n if (this.ePrevious) {\n this.getGui().removeChild(this.ePrevious);\n }\n this.ePrevious = _.loadTemplate('');\n this.ePrevious.innerHTML = this.eCurrent.innerHTML;\n this.getGui().insertBefore(this.ePrevious, this.eCurrent);\n // having timeout of 0 allows use to skip to the next css turn,\n // so we know the previous css classes have been applied. so the\n // complex set of setTimeout below creates the animation\n window.setTimeout(function () {\n if (refreshCountCopy !== _this.refreshCount) {\n return;\n }\n _.addCssClass(_this.ePrevious, 'ag-value-slide-out-end');\n }, 50);\n window.setTimeout(function () {\n if (refreshCountCopy !== _this.refreshCount) {\n return;\n }\n _this.getGui().removeChild(_this.ePrevious);\n _this.ePrevious = null;\n }, 3000);\n };\n AnimateSlideCellRenderer.prototype.refresh = function (params) {\n var value = params.value;\n if (_.missing(value)) {\n value = '';\n }\n if (value === this.lastValue) {\n return;\n }\n // we don't show the delta if we are in the middle of a filter. see comment on FilterManager\n // with regards processingFilterChange\n if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {\n return;\n }\n this.addSlideAnimation();\n this.lastValue = value;\n if (_.exists(params.valueFormatted)) {\n this.eCurrent.innerHTML = params.valueFormatted;\n }\n else if (_.exists(params.value)) {\n this.eCurrent.innerHTML = value;\n }\n else {\n _.clearElement(this.eCurrent);\n }\n return true;\n };\n AnimateSlideCellRenderer.TEMPLATE = '' +\n '' +\n '';\n __decorate([\n Autowired('filterManager')\n ], AnimateSlideCellRenderer.prototype, \"filterManager\", void 0);\n return AnimateSlideCellRenderer;\n}(Component));\nexport { AnimateSlideCellRenderer };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { PopupComponent } from \"../../widgets/popupComponent\";\nimport { Constants } from \"../../constants\";\nimport { Autowired } from \"../../context/context\";\nimport { _ } from '../../utils';\nvar SelectCellEditor = /** @class */ (function (_super) {\n __extends(SelectCellEditor, _super);\n function SelectCellEditor() {\n var _this = _super.call(this, '
\\n
\\n
\\n \\n
\\n
\";\n };\n NumberFilter.prototype.isConditionUiComplete = function (position) {\n var positionOne = position === ConditionPosition.One;\n var option = positionOne ? this.getCondition1Type() : this.getCondition2Type();\n var eValue = positionOne ? this.eValueFrom1 : this.eValueFrom2;\n var eValueTo = positionOne ? this.eValueTo1 : this.eValueTo2;\n var value = this.stringToFloat(eValue.value);\n var valueTo = this.stringToFloat(eValueTo.value);\n if (option === SimpleFilter.EMPTY) {\n return false;\n }\n if (this.doesFilterHaveHiddenInput(option)) {\n return true;\n }\n if (option === SimpleFilter.IN_RANGE) {\n return value != null && valueTo != null;\n }\n else {\n return value != null;\n }\n };\n NumberFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n return aSimple.filter === bSimple.filter\n && aSimple.filterTo === bSimple.filterTo\n && aSimple.type === bSimple.type;\n };\n // needed for creating filter model\n NumberFilter.prototype.getFilterType = function () {\n return NumberFilter.FILTER_TYPE;\n };\n NumberFilter.prototype.stringToFloat = function (value) {\n var filterText = _.makeNull(value);\n if (filterText && filterText.trim() === '') {\n filterText = null;\n }\n var newFilter;\n if (filterText !== null && filterText !== undefined) {\n newFilter = parseFloat(filterText);\n }\n else {\n newFilter = null;\n }\n return newFilter;\n };\n NumberFilter.prototype.createCondition = function (position) {\n var positionOne = position === ConditionPosition.One;\n var type = positionOne ? this.getCondition1Type() : this.getCondition2Type();\n var eValue = positionOne ? this.eValueFrom1 : this.eValueFrom2;\n var value = this.stringToFloat(eValue.value);\n var eValueTo = positionOne ? this.eValueTo1 : this.eValueTo2;\n var valueTo = this.stringToFloat(eValueTo.value);\n var model = {\n filterType: NumberFilter.FILTER_TYPE,\n type: type\n };\n if (!this.doesFilterHaveHiddenInput(type)) {\n model.filter = value;\n model.filterTo = valueTo; // FIX - should only populate this when filter choice has 'to' option\n }\n return model;\n };\n NumberFilter.prototype.updateUiVisibility = function () {\n _super.prototype.updateUiVisibility.call(this);\n var showFrom1 = this.showValueFrom(this.getCondition1Type());\n _.setDisplayed(this.eValueFrom1, showFrom1);\n var showTo1 = this.showValueTo(this.getCondition1Type());\n _.setDisplayed(this.eValueTo1, showTo1);\n var showFrom2 = this.showValueFrom(this.getCondition2Type());\n _.setDisplayed(this.eValueFrom2, showFrom2);\n var showTo2 = this.showValueTo(this.getCondition2Type());\n _.setDisplayed(this.eValueTo2, showTo2);\n };\n NumberFilter.FILTER_TYPE = 'number';\n NumberFilter.DEFAULT_FILTER_OPTIONS = [ScalerFilter.EQUALS, ScalerFilter.NOT_EQUAL,\n ScalerFilter.LESS_THAN, ScalerFilter.LESS_THAN_OR_EQUAL,\n ScalerFilter.GREATER_THAN, ScalerFilter.GREATER_THAN_OR_EQUAL,\n ScalerFilter.IN_RANGE];\n __decorate([\n RefSelector('eValueFrom1')\n ], NumberFilter.prototype, \"eValueFrom1\", void 0);\n __decorate([\n RefSelector('eValueFrom2')\n ], NumberFilter.prototype, \"eValueFrom2\", void 0);\n __decorate([\n RefSelector('eValueTo1')\n ], NumberFilter.prototype, \"eValueTo1\", void 0);\n __decorate([\n RefSelector('eValueTo2')\n ], NumberFilter.prototype, \"eValueTo2\", void 0);\n return NumberFilter;\n}(ScalerFilter));\nexport { NumberFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { RefSelector } from \"../../../widgets/componentAnnotations\";\nimport { _ } from \"../../../utils\";\nimport { SimpleFilter, ConditionPosition } from \"../simpleFilter\";\nvar TextFilter = /** @class */ (function (_super) {\n __extends(TextFilter, _super);\n function TextFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextFilter.prototype.getDefaultDebounceMs = function () {\n return 500;\n };\n TextFilter.prototype.getValue = function (element) {\n var val = element.value;\n val = _.makeNull(val);\n if (val && val.trim() === '') {\n val = null;\n }\n return val;\n };\n TextFilter.prototype.addValueChangedListeners = function () {\n var _this = this;\n var listener = function () { return _this.onUiChanged(); };\n this.addDestroyableEventListener(this.eValue1, 'input', listener);\n this.addDestroyableEventListener(this.eValue2, 'input', listener);\n };\n TextFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.textFilterParams = params;\n this.comparator = this.textFilterParams.textCustomComparator ? this.textFilterParams.textCustomComparator : TextFilter.DEFAULT_COMPARATOR;\n this.formatter =\n this.textFilterParams.textFormatter ? this.textFilterParams.textFormatter :\n this.textFilterParams.caseSensitive == true ? TextFilter.DEFAULT_FORMATTER :\n TextFilter.DEFAULT_LOWERCASE_FORMATTER;\n this.addValueChangedListeners();\n };\n TextFilter.prototype.setConditionIntoUi = function (model, position) {\n var positionOne = position === ConditionPosition.One;\n var eValue = positionOne ? this.eValue1 : this.eValue2;\n eValue.value = model ? model.filter : null;\n };\n TextFilter.prototype.createCondition = function (position) {\n var positionOne = position === ConditionPosition.One;\n var type = positionOne ? this.getCondition1Type() : this.getCondition2Type();\n var eValue = positionOne ? this.eValue1 : this.eValue2;\n var value = this.getValue(eValue);\n var model = {\n filterType: TextFilter.FILTER_TYPE,\n type: type\n };\n if (!this.doesFilterHaveHiddenInput(type)) {\n model.filter = value;\n }\n return model;\n };\n TextFilter.prototype.getFilterType = function () {\n return TextFilter.FILTER_TYPE;\n };\n TextFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n return aSimple.filter === bSimple.filter && aSimple.type === bSimple.type;\n };\n TextFilter.prototype.resetUiToDefaults = function () {\n _super.prototype.resetUiToDefaults.call(this);\n this.eValue1.value = null;\n this.eValue2.value = null;\n };\n TextFilter.prototype.setValueFromFloatingFilter = function (value) {\n this.eValue1.value = value;\n this.eValue2.value = null;\n };\n TextFilter.prototype.getDefaultFilterOptions = function () {\n return TextFilter.DEFAULT_FILTER_OPTIONS;\n };\n TextFilter.prototype.createValueTemplate = function (position) {\n var pos = position === ConditionPosition.One ? '1' : '2';\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n return \"
\\n
\\n \\n
\\n
\";\n };\n TextFilter.prototype.updateUiVisibility = function () {\n _super.prototype.updateUiVisibility.call(this);\n var showValue1 = this.showValueFrom(this.getCondition1Type());\n _.setDisplayed(this.eInputWrapper1, showValue1);\n var showValue2 = this.showValueFrom(this.getCondition2Type());\n _.setDisplayed(this.eInputWrapper2, showValue2);\n };\n TextFilter.prototype.afterGuiAttached = function () {\n this.eValue1.focus();\n };\n TextFilter.prototype.isConditionUiComplete = function (position) {\n var positionOne = position === ConditionPosition.One;\n var option = positionOne ? this.getCondition1Type() : this.getCondition2Type();\n var eFilterValue = positionOne ? this.eValue1 : this.eValue2;\n if (option === SimpleFilter.EMPTY) {\n return false;\n }\n var value = this.getValue(eFilterValue);\n if (this.doesFilterHaveHiddenInput(option)) {\n return true;\n }\n return value != null;\n };\n TextFilter.prototype.individualConditionPasses = function (params, filterModel) {\n var filterText = filterModel.filter;\n var filterOption = filterModel.type;\n var cellValue = this.textFilterParams.valueGetter(params.node);\n var cellValueFormatted = this.formatter(cellValue);\n var customFilterOption = this.optionsFactory.getCustomOption(filterOption);\n if (customFilterOption) {\n // only execute the custom filter if a value exists or a value isn't required, i.e. input is hidden\n if (filterText != null || customFilterOption.hideFilterInput) {\n return customFilterOption.test(filterText, cellValueFormatted);\n }\n }\n if (cellValue == null) {\n return filterOption === SimpleFilter.NOT_EQUAL || filterOption === SimpleFilter.NOT_CONTAINS;\n }\n var filterTextFormatted = this.formatter(filterText);\n return this.comparator(filterOption, cellValueFormatted, filterTextFormatted);\n };\n TextFilter.FILTER_TYPE = 'text';\n TextFilter.DEFAULT_FILTER_OPTIONS = [SimpleFilter.CONTAINS, SimpleFilter.NOT_CONTAINS,\n SimpleFilter.EQUALS, SimpleFilter.NOT_EQUAL,\n SimpleFilter.STARTS_WITH, SimpleFilter.ENDS_WITH];\n TextFilter.DEFAULT_FORMATTER = function (from) {\n return from;\n };\n TextFilter.DEFAULT_LOWERCASE_FORMATTER = function (from) {\n if (from == null) {\n return null;\n }\n return from.toString().toLowerCase();\n };\n TextFilter.DEFAULT_COMPARATOR = function (filter, value, filterText) {\n switch (filter) {\n case TextFilter.CONTAINS:\n return value.indexOf(filterText) >= 0;\n case TextFilter.NOT_CONTAINS:\n return value.indexOf(filterText) === -1;\n case TextFilter.EQUALS:\n return value === filterText;\n case TextFilter.NOT_EQUAL:\n return value != filterText;\n case TextFilter.STARTS_WITH:\n return value.indexOf(filterText) === 0;\n case TextFilter.ENDS_WITH:\n var index = value.lastIndexOf(filterText);\n return index >= 0 && index === (value.length - filterText.length);\n default:\n // should never happen\n console.warn('invalid filter type ' + filter);\n return false;\n }\n };\n __decorate([\n RefSelector('eValue1')\n ], TextFilter.prototype, \"eValue1\", void 0);\n __decorate([\n RefSelector('eValue2')\n ], TextFilter.prototype, \"eValue2\", void 0);\n __decorate([\n RefSelector('eInputWrapper1')\n ], TextFilter.prototype, \"eInputWrapper1\", void 0);\n __decorate([\n RefSelector('eInputWrapper2')\n ], TextFilter.prototype, \"eInputWrapper2\", void 0);\n return TextFilter;\n}(SimpleFilter));\nexport { TextFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n// when doing transactions, or change detection, and grouping is present\n// in the data, there is no need for the ClientSideRowModel to update each\n// group after an update, ony parts that were impacted by the change.\n// this class keeps track of all groups that were impacted by a transaction.\n// the the different CSRM operations (filter, sort etc) use the forEach method\n// to visit each group that was changed.\nvar ChangedPath = /** @class */ (function () {\n function ChangedPath(keepingColumns, rootNode) {\n // whether changed path is active of not. it is active when a) doing\n // a transaction update or b) doing change detection. if we are doing\n // a CSRM refresh for other reasons (after sort or filter, or user calling\n // setRowData() without delta mode) then we are not active. we are also\n // marked as not active if secondary columns change in pivot (as this impacts\n // aggregations)\n this.active = true;\n // for each node in the change path, we also store which columns need\n // to be re-aggregated.\n this.nodeIdsToColumns = {};\n // for quick lookup, all items in the change path are mapped by nodeId\n this.mapToItems = {};\n this.keepingColumns = keepingColumns;\n this.pathRoot = {\n rowNode: rootNode,\n children: null\n };\n this.mapToItems[rootNode.id] = this.pathRoot;\n }\n // can be set inactive by:\n // a) ClientSideRowModel, if no transactions or\n // b) PivotService, if secondary columns changed\n ChangedPath.prototype.setInactive = function () {\n this.active = false;\n };\n ChangedPath.prototype.isActive = function () {\n return this.active;\n };\n ChangedPath.prototype.depthFirstSearchChangedPath = function (pathItem, callback) {\n if (pathItem.children) {\n for (var i = 0; i < pathItem.children.length; i++) {\n this.depthFirstSearchChangedPath(pathItem.children[i], callback);\n }\n }\n callback(pathItem.rowNode);\n };\n ChangedPath.prototype.depthFirstSearchEverything = function (rowNode, callback, traverseEverything) {\n if (rowNode.childrenAfterGroup) {\n for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n var childNode = rowNode.childrenAfterGroup[i];\n if (childNode.childrenAfterGroup) {\n this.depthFirstSearchEverything(rowNode.childrenAfterGroup[i], callback, traverseEverything);\n }\n else if (traverseEverything) {\n callback(childNode);\n }\n }\n }\n callback(rowNode);\n };\n // traverseLeafNodes -> used when NOT doing changed path, ie traversing everything. the callback\n // will be called for child nodes in addition to parent nodes.\n ChangedPath.prototype.forEachChangedNodeDepthFirst = function (callback, traverseLeafNodes) {\n if (traverseLeafNodes === void 0) { traverseLeafNodes = false; }\n if (this.active) {\n // if we are active, then use the change path to callback\n // only for updated groups\n this.depthFirstSearchChangedPath(this.pathRoot, callback);\n }\n else {\n // we are not active, so callback for everything, walk the entire path\n this.depthFirstSearchEverything(this.pathRoot.rowNode, callback, traverseLeafNodes);\n }\n };\n ChangedPath.prototype.executeFromRootNode = function (callback) {\n callback(this.pathRoot.rowNode);\n };\n ChangedPath.prototype.createPathItems = function (rowNode) {\n var pointer = rowNode;\n var newEntryCount = 0;\n while (!this.mapToItems[pointer.id]) {\n var newEntry = {\n rowNode: pointer,\n children: null\n };\n this.mapToItems[pointer.id] = newEntry;\n newEntryCount++;\n pointer = pointer.parent;\n }\n return newEntryCount;\n };\n ChangedPath.prototype.populateColumnsMap = function (rowNode, columns) {\n var _this = this;\n if (!this.keepingColumns || !columns) {\n return;\n }\n var pointer = rowNode;\n while (pointer) {\n // if columns, add the columns in all the way to parent, merging\n // in any other columns that might be there already\n if (!this.nodeIdsToColumns[pointer.id]) {\n this.nodeIdsToColumns[pointer.id] = {};\n }\n columns.forEach(function (col) { return _this.nodeIdsToColumns[pointer.id][col.getId()] = true; });\n pointer = pointer.parent;\n }\n };\n ChangedPath.prototype.linkPathItems = function (rowNode, newEntryCount) {\n var pointer = rowNode;\n for (var i = 0; i < newEntryCount; i++) {\n var thisItem = this.mapToItems[pointer.id];\n var parentItem = this.mapToItems[pointer.parent.id];\n if (!parentItem.children) {\n parentItem.children = [];\n }\n parentItem.children.push(thisItem);\n pointer = pointer.parent;\n }\n };\n // called by\n // 1) change detection (provides cols) and\n // 2) groupStage if doing transaction update (doesn't provide cols)\n ChangedPath.prototype.addParentNode = function (rowNode, columns) {\n if (!rowNode || rowNode.isRowPinned()) {\n return;\n }\n // we cannot do both steps below in the same loop as\n // the second loop has a dependency on the first loop.\n // ie the hierarchy cannot be stitched up yet because\n // we don't have it built yet\n // create the new PathItem objects.\n var newEntryCount = this.createPathItems(rowNode);\n // link in the node items\n this.linkPathItems(rowNode, newEntryCount);\n // update columns\n this.populateColumnsMap(rowNode, columns);\n };\n ChangedPath.prototype.canSkip = function (rowNode) {\n return this.active && !this.mapToItems[rowNode.id];\n };\n ChangedPath.prototype.getValueColumnsForNode = function (rowNode, valueColumns) {\n if (!this.keepingColumns) {\n return valueColumns;\n }\n var colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n var result = valueColumns.filter(function (col) { return colsForThisNode[col.getId()]; });\n return result;\n };\n ChangedPath.prototype.getNotValueColumnsForNode = function (rowNode, valueColumns) {\n if (!this.keepingColumns) {\n return null;\n }\n var colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n var result = valueColumns.filter(function (col) { return !colsForThisNode[col.getId()]; });\n return result;\n };\n return ChangedPath;\n}());\nexport { ChangedPath };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { PopupComponent } from \"../../widgets/popupComponent\";\nimport { Autowired } from \"../../context/context\";\nimport { _ } from \"../../utils\";\nvar PopupEditorWrapper = /** @class */ (function (_super) {\n __extends(PopupEditorWrapper, _super);\n function PopupEditorWrapper(cellEditor) {\n var _this = _super.call(this, \"
\") || this;\n _this.getGuiCalledOnChild = false;\n _this.cellEditor = cellEditor;\n return _this;\n }\n PopupEditorWrapper.prototype.onKeyDown = function (event) {\n if (!_.isUserSuppressingKeyboardEvent(this.gridOptionsWrapper, event, this.params.node, this.params.column, true)) {\n this.params.onKeyDown(event);\n }\n };\n PopupEditorWrapper.prototype.getGui = function () {\n // we call getGui() on child here (rather than in the constructor)\n // as we should wait for 'init' to be called on child first.\n if (!this.getGuiCalledOnChild) {\n this.appendChild(this.cellEditor.getGui());\n this.getGuiCalledOnChild = true;\n }\n return _super.prototype.getGui.call(this);\n };\n PopupEditorWrapper.prototype.init = function (params) {\n var _this = this;\n this.params = params;\n this.gridOptionsWrapper.setDomData(this.getGui(), PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER, true);\n this.addDestroyFunc(function () {\n if (_this.cellEditor.destroy) {\n _this.cellEditor.destroy();\n }\n });\n this.addDestroyableEventListener(\n // this needs to be 'super' and not 'this' as if we call 'this',\n // it ends up called 'getGui()' on the child before 'init' was called,\n // which is not good\n _super.prototype.getGui.call(this), 'keydown', this.onKeyDown.bind(this));\n };\n PopupEditorWrapper.prototype.afterGuiAttached = function () {\n if (this.cellEditor.afterGuiAttached) {\n this.cellEditor.afterGuiAttached();\n }\n };\n PopupEditorWrapper.prototype.getValue = function () {\n return this.cellEditor.getValue();\n };\n PopupEditorWrapper.prototype.isCancelBeforeStart = function () {\n if (this.cellEditor.isCancelBeforeStart) {\n return this.cellEditor.isCancelBeforeStart();\n }\n };\n PopupEditorWrapper.prototype.isCancelAfterEnd = function () {\n if (this.cellEditor.isCancelAfterEnd) {\n return this.cellEditor.isCancelAfterEnd();\n }\n };\n PopupEditorWrapper.prototype.focusIn = function () {\n if (this.cellEditor.focusIn) {\n this.cellEditor.focusIn();\n }\n };\n PopupEditorWrapper.prototype.focusOut = function () {\n if (this.cellEditor.focusOut) {\n this.cellEditor.focusOut();\n }\n };\n PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER = 'popupEditorWrapper';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], PopupEditorWrapper.prototype, \"gridOptionsWrapper\", void 0);\n return PopupEditorWrapper;\n}(PopupComponent));\nexport { PopupEditorWrapper };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { _ } from '../utils';\nvar CssClassApplier = /** @class */ (function () {\n function CssClassApplier() {\n }\n CssClassApplier.addHeaderClassesFromColDef = function (abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup) {\n if (_.missing(abstractColDef)) {\n return;\n }\n this.addColumnClassesFromCollDef(abstractColDef.headerClass, abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup);\n };\n CssClassApplier.addToolPanelClassesFromColDef = function (abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup) {\n if (_.missing(abstractColDef)) {\n return;\n }\n this.addColumnClassesFromCollDef(abstractColDef.toolPanelClass, abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup);\n };\n CssClassApplier.addColumnClassesFromCollDef = function (classesOrFunc, abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup) {\n if (_.missing(classesOrFunc)) {\n return;\n }\n var classToUse;\n if (typeof classesOrFunc === 'function') {\n var params = {\n // bad naming, as colDef here can be a group or a column,\n // however most people won't appreciate the difference,\n // so keeping it as colDef to avoid confusion.\n colDef: abstractColDef,\n column: column,\n columnGroup: columnGroup,\n context: gridOptionsWrapper.getContext(),\n api: gridOptionsWrapper.getApi()\n };\n var headerClassFunc = classesOrFunc;\n classToUse = headerClassFunc(params);\n }\n else {\n classToUse = classesOrFunc;\n }\n if (typeof classToUse === 'string') {\n _.addCssClass(eHeaderCell, classToUse);\n }\n else if (Array.isArray(classToUse)) {\n classToUse.forEach(function (cssClassItem) {\n _.addCssClass(eHeaderCell, cssClassItem);\n });\n }\n };\n return CssClassApplier;\n}());\nexport { CssClassApplier };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { AgCheckbox } from \"./agCheckbox\";\nvar AgRadioButton = /** @class */ (function (_super) {\n __extends(AgRadioButton, _super);\n function AgRadioButton() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.className = 'ag-radio-button';\n _this.inputType = 'radio';\n _this.iconMap = {\n selected: 'radioButtonOn',\n unselected: 'radioButtonOff'\n };\n return _this;\n }\n AgRadioButton.prototype.toggle = function () {\n var nextValue = this.getNextValue();\n this.setValue(nextValue);\n };\n AgRadioButton.prototype.getIconName = function () {\n var prop = this.getValue() ? 'selected' : 'unselected';\n var readOnlyStr = this.isReadOnly() ? 'ReadOnly' : '';\n return \"\" + this.iconMap[prop] + readOnlyStr;\n };\n return AgRadioButton;\n}(AgCheckbox));\nexport { AgRadioButton };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { RefSelector } from \"./componentAnnotations\";\nimport { PostConstruct, Autowired } from \"../context/context\";\nimport { Component } from \"./component\";\nimport { _ } from \"../utils\";\nvar AgPanel = /** @class */ (function (_super) {\n __extends(AgPanel, _super);\n function AgPanel(config) {\n var _this = _super.call(this, AgPanel.TEMPLATE) || this;\n _this.closable = true;\n _this.positioned = false;\n _this.dragStartPosition = {\n x: 0,\n y: 0\n };\n _this.position = {\n x: 0,\n y: 0\n };\n _this.size = {\n width: undefined,\n height: undefined\n };\n _this.config = config;\n return _this;\n }\n AgPanel.prototype.postConstruct = function () {\n var _this = this;\n var _a = this.config, component = _a.component, closable = _a.closable, hideTitleBar = _a.hideTitleBar, title = _a.title, minWidth = _a.minWidth, width = _a.width, minHeight = _a.minHeight, height = _a.height, centered = _a.centered, x = _a.x, y = _a.y;\n var eGui = this.getGui();\n if (component) {\n this.setBodyComponent(component);\n }\n if (!hideTitleBar) {\n if (title) {\n this.setTitle(title);\n }\n this.setClosable(closable != null ? closable : this.closable);\n }\n else {\n _.addCssClass(this.eTitleBar, 'ag-hidden');\n }\n this.addDestroyableEventListener(this.eTitleBar, 'mousedown', function (e) {\n if (eGui.contains(e.relatedTarget) ||\n eGui.contains(document.activeElement) ||\n _this.eTitleBarButtons.contains(e.target)) {\n e.preventDefault();\n return;\n }\n var focusEl = _this.eContentWrapper.querySelector('button, [href], input, select, textarea, [tabindex]');\n if (focusEl) {\n focusEl.focus();\n }\n });\n if (this.positioned) {\n return;\n }\n this.minHeight = minHeight != null ? minHeight : 250;\n this.minWidth = minWidth != null ? minWidth : 250;\n this.popupParent = this.popupService.getPopupParent();\n if (width) {\n this.setWidth(width);\n }\n if (height) {\n this.setHeight(height);\n }\n if (this.renderComponent) {\n this.renderComponent();\n }\n if (!width || !height) {\n this.refreshSize();\n }\n if (centered) {\n this.center();\n }\n else if (x || y) {\n this.offsetElement(x, y);\n }\n this.positioned = true;\n this.eContentWrapper.style.height = '0';\n };\n AgPanel.prototype.renderComponent = function () {\n var _this = this;\n var eGui = this.getGui();\n eGui.focus();\n this.close = function () {\n eGui.parentElement.removeChild(eGui);\n _this.destroy();\n };\n };\n AgPanel.prototype.updateDragStartPosition = function (x, y) {\n this.dragStartPosition = { x: x, y: y };\n };\n AgPanel.prototype.calculateMouseMovement = function (params) {\n var parentRect = this.popupParent.getBoundingClientRect();\n var e = params.e, isLeft = params.isLeft, isTop = params.isTop, anywhereWithin = params.anywhereWithin, topBuffer = params.topBuffer;\n var movementX = e.clientX - this.dragStartPosition.x;\n var movementY = e.clientY - this.dragStartPosition.y;\n var width = this.getWidth();\n var height = this.getHeight();\n // skip if cursor is outside of popupParent horizontally\n var skipX = (parentRect.left >= e.clientX && this.position.x <= 0 ||\n parentRect.right <= e.clientX && parentRect.right <= this.position.x + parentRect.left + width);\n if (!skipX) {\n if (isLeft) {\n skipX = (\n // skip if we are moving to the left and the cursor\n // is positioned to the right of the left side anchor\n (movementX < 0 && e.clientX > this.position.x + parentRect.left) ||\n // skip if we are moving to the right and the cursor\n // is positioned to the left of the dialog\n (movementX > 0 && e.clientX < this.position.x + parentRect.left));\n }\n else {\n if (anywhereWithin) {\n // if anywhereWithin is true, we allow to move\n // as long as the cursor is within the dialog\n skipX = ((movementX < 0 && e.clientX > this.position.x + parentRect.left + width) ||\n (movementX > 0 && e.clientX < this.position.x + parentRect.left));\n }\n else {\n skipX = (\n // if the movement is bound to the right side of the dialog\n // we skip if we are moving to the left and the cursor\n // is to the right of the dialog\n (movementX < 0 && e.clientX > this.position.x + parentRect.left + width) ||\n // or skip if we are moving to the right and the cursor\n // is to the left of the right side anchor\n (movementX > 0 && e.clientX < this.position.x + parentRect.left + width));\n }\n }\n }\n movementX = skipX ? 0 : movementX;\n var skipY = (\n // skip if cursor is outside of popupParent vertically\n parentRect.top >= e.clientY && this.position.y <= 0 ||\n parentRect.bottom <= e.clientY && parentRect.bottom <= this.position.y + parentRect.top + height ||\n isTop && (\n // skip if we are moving to towards top and the cursor is\n // below the top anchor + topBuffer\n // note: topBuffer is used when moving the dialog using the title bar\n (movementY < 0 && e.clientY > this.position.y + parentRect.top + (topBuffer || 0)) ||\n // skip if we are moving to the bottom and the cursor is\n // above the top anchor\n (movementY > 0 && e.clientY < this.position.y + parentRect.top)) ||\n // we are anchored to the bottom of the dialog\n !isTop && (\n // skip if we are moving towards the top and the cursor\n // is below the bottom anchor\n (movementY < 0 && e.clientY > this.position.y + parentRect.top + height) ||\n // skip if we are moving towards the bottom and the cursor\n // is above the bottom anchor\n (movementY > 0 && e.clientY < this.position.y + parentRect.top + height)));\n movementY = skipY ? 0 : movementY;\n return { movementX: movementX, movementY: movementY };\n };\n AgPanel.prototype.refreshSize = function () {\n var _a = this.size, width = _a.width, height = _a.height;\n if (!width) {\n this.setWidth(this.getGui().offsetWidth);\n }\n if (!height) {\n this.setHeight(this.getGui().offsetHeight);\n }\n };\n AgPanel.prototype.offsetElement = function (x, y) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n var ePopup = this.getGui();\n this.popupService.positionPopup({\n ePopup: ePopup,\n x: x,\n y: y,\n minWidth: this.minWidth,\n minHeight: this.minHeight,\n keepWithinBounds: true\n });\n this.position.x = parseInt(ePopup.style.left, 10);\n this.position.y = parseInt(ePopup.style.top, 10);\n };\n AgPanel.prototype.getHeight = function () {\n return this.size.height;\n };\n AgPanel.prototype.setHeight = function (height) {\n var eGui = this.getGui();\n var isPercent = false;\n if (typeof height === 'string' && height.indexOf('%') !== -1) {\n _.setFixedHeight(eGui, height);\n height = _.getAbsoluteHeight(eGui);\n isPercent = true;\n }\n else {\n height = Math.max(this.minHeight, height);\n var offsetParent = eGui.offsetParent;\n if (offsetParent && offsetParent.clientHeight && (height + this.position.y > offsetParent.clientHeight)) {\n height = offsetParent.clientHeight - this.position.y;\n }\n }\n if (this.size.height === height) {\n return;\n }\n this.size.height = height;\n if (!isPercent) {\n _.setFixedHeight(eGui, height);\n }\n else {\n eGui.style.maxHeight = 'unset';\n eGui.style.minHeight = 'unset';\n }\n };\n AgPanel.prototype.getWidth = function () {\n return this.size.width;\n };\n AgPanel.prototype.setWidth = function (width) {\n var eGui = this.getGui();\n var isPercent = false;\n if (typeof width === 'string' && width.indexOf('%') !== -1) {\n _.setFixedWidth(eGui, width);\n width = _.getAbsoluteWidth(eGui);\n isPercent = true;\n }\n else {\n width = Math.max(this.minWidth, width);\n var offsetParent = eGui.offsetParent;\n if (offsetParent && offsetParent.clientWidth && (width + this.position.x > offsetParent.clientWidth)) {\n width = offsetParent.clientWidth - this.position.x;\n }\n }\n if (this.size.width === width) {\n return;\n }\n this.size.width = width;\n if (!isPercent) {\n _.setFixedWidth(eGui, width);\n }\n else {\n eGui.style.maxWidth = 'unset';\n eGui.style.minWidth = 'unset';\n }\n };\n AgPanel.prototype.center = function () {\n var eGui = this.getGui();\n var x = (eGui.offsetParent.clientWidth / 2) - (this.getWidth() / 2);\n var y = (eGui.offsetParent.clientHeight / 2) - (this.getHeight() / 2);\n this.offsetElement(x, y);\n };\n AgPanel.prototype.setClosable = function (closable) {\n if (closable !== this.closable) {\n this.closable = closable;\n }\n if (closable) {\n var closeButtonComp = this.closeButtonComp = new Component(AgPanel.CLOSE_BTN_TEMPLATE);\n this.getContext().wireBean(closeButtonComp);\n var eGui = closeButtonComp.getGui();\n eGui.appendChild(_.createIconNoSpan('close', this.gridOptionsWrapper));\n this.addTitleBarButton(closeButtonComp);\n closeButtonComp.addDestroyableEventListener(eGui, 'click', this.onBtClose.bind(this));\n }\n else if (this.closeButtonComp) {\n var eGui = this.closeButtonComp.getGui();\n eGui.parentElement.removeChild(eGui);\n this.closeButtonComp.destroy();\n this.closeButtonComp = undefined;\n }\n };\n AgPanel.prototype.setBodyComponent = function (bodyComponent) {\n bodyComponent.setParentComponent(this);\n this.eContentWrapper.appendChild(bodyComponent.getGui());\n };\n AgPanel.prototype.addTitleBarButton = function (button, position) {\n var eTitleBarButtons = this.eTitleBarButtons;\n var buttons = eTitleBarButtons.children;\n var len = buttons.length;\n if (position == null) {\n position = len;\n }\n position = Math.max(0, Math.min(position, len));\n var eGui = button.getGui();\n _.addCssClass(eGui, 'ag-button');\n if (position === 0) {\n eTitleBarButtons.insertAdjacentElement('afterbegin', eGui);\n }\n else if (position === len) {\n eTitleBarButtons.insertAdjacentElement('beforeend', eGui);\n }\n else {\n buttons[position - 1].insertAdjacentElement('afterend', eGui);\n }\n button.setParentComponent(this);\n };\n AgPanel.prototype.getBodyHeight = function () {\n return _.getInnerHeight(this.eContentWrapper);\n };\n AgPanel.prototype.getBodyWidth = function () {\n return _.getInnerWidth(this.eContentWrapper);\n };\n AgPanel.prototype.setTitle = function (title) {\n this.eTitle.innerText = title;\n };\n // called when user hits the 'x' in the top right\n AgPanel.prototype.onBtClose = function () {\n this.close();\n };\n AgPanel.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.closeButtonComp) {\n this.closeButtonComp.destroy();\n this.closeButtonComp = undefined;\n }\n var eGui = this.getGui();\n if (eGui && eGui.offsetParent) {\n this.close();\n }\n };\n AgPanel.TEMPLATE = \"
\\n
\\n \\n
\\n
\\n
\\n
\";\n AgPanel.CLOSE_BTN_TEMPLATE = \"
\";\n __decorate([\n Autowired('popupService')\n ], AgPanel.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], AgPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n RefSelector('eContentWrapper')\n ], AgPanel.prototype, \"eContentWrapper\", void 0);\n __decorate([\n RefSelector('eTitleBar')\n ], AgPanel.prototype, \"eTitleBar\", void 0);\n __decorate([\n RefSelector('eTitleBarButtons')\n ], AgPanel.prototype, \"eTitleBarButtons\", void 0);\n __decorate([\n RefSelector('eTitle')\n ], AgPanel.prototype, \"eTitle\", void 0);\n __decorate([\n PostConstruct\n ], AgPanel.prototype, \"postConstruct\", null);\n return AgPanel;\n}(Component));\nexport { AgPanel };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { AgAbstractInputField } from \"./agAbstractInputField\";\nvar AgInputTextField = /** @class */ (function (_super) {\n __extends(AgInputTextField, _super);\n function AgInputTextField(config) {\n var _this = _super.call(this) || this;\n _this.className = 'ag-text-field';\n _this.displayTag = 'input';\n _this.inputType = 'text';\n _this.setTemplate(_this.TEMPLATE.replace(/%displayField%/g, _this.displayTag));\n if (config) {\n _this.config = config;\n }\n return _this;\n }\n AgInputTextField.prototype.setValue = function (value, silent) {\n var ret = _super.prototype.setValue.call(this, value, silent);\n if (this.eInput.value !== value) {\n this.eInput.value = value;\n }\n return ret;\n };\n return AgInputTextField;\n}(AgAbstractInputField));\nexport { AgInputTextField };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Autowired, PostConstruct } from \"../../context/context\";\nimport { Component } from \"../../widgets/component\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { _ } from '../../utils';\nvar LoadingType;\n(function (LoadingType) {\n LoadingType[LoadingType[\"Loading\"] = 0] = \"Loading\";\n LoadingType[LoadingType[\"NoRows\"] = 1] = \"NoRows\";\n})(LoadingType || (LoadingType = {}));\nvar OverlayWrapperComponent = /** @class */ (function (_super) {\n __extends(OverlayWrapperComponent, _super);\n function OverlayWrapperComponent() {\n return _super.call(this, OverlayWrapperComponent.TEMPLATE) || this;\n }\n OverlayWrapperComponent.prototype.postConstruct = function () {\n this.gridOptionsWrapper.addLayoutElement(this.eOverlayWrapper);\n this.setDisplayed(false);\n };\n OverlayWrapperComponent.prototype.setWrapperTypeClass = function (loadingType) {\n _.addOrRemoveCssClass(this.eOverlayWrapper, 'ag-overlay-loading-wrapper', loadingType === LoadingType.Loading);\n _.addOrRemoveCssClass(this.eOverlayWrapper, 'ag-overlay-no-rows-wrapper', loadingType === LoadingType.NoRows);\n };\n OverlayWrapperComponent.prototype.showLoadingOverlay = function () {\n var _this = this;\n this.setWrapperTypeClass(LoadingType.Loading);\n this.destroyActiveOverlay();\n var params = { api: this.gridOptionsWrapper.getApi() };\n this.userComponentFactory.newLoadingOverlayComponent(params).then(function (comp) {\n _this.eOverlayWrapper.appendChild(comp.getGui());\n _this.activeOverlay = comp;\n });\n this.setDisplayed(true);\n };\n OverlayWrapperComponent.prototype.showNoRowsOverlay = function () {\n var _this = this;\n this.setWrapperTypeClass(LoadingType.NoRows);\n this.destroyActiveOverlay();\n var params = { api: this.gridOptionsWrapper.getApi() };\n this.userComponentFactory.newNoRowsOverlayComponent(params).then(function (comp) {\n _this.eOverlayWrapper.appendChild(comp.getGui());\n _this.activeOverlay = comp;\n });\n this.setDisplayed(true);\n };\n OverlayWrapperComponent.prototype.destroyActiveOverlay = function () {\n if (!this.activeOverlay) {\n return;\n }\n if (this.activeOverlay.destroy) {\n this.activeOverlay.destroy();\n }\n this.activeOverlay = undefined;\n _.clearElement(this.eOverlayWrapper);\n };\n OverlayWrapperComponent.prototype.hideOverlay = function () {\n this.destroyActiveOverlay();\n this.setDisplayed(false);\n };\n OverlayWrapperComponent.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.destroyActiveOverlay();\n };\n // wrapping in outer div, and wrapper, is needed to center the loading icon\n // The idea for centering came from here: http://www.vanseodesign.com/css/vertical-centering/\n OverlayWrapperComponent.TEMPLATE = \"
\\n
\\n
\\n
\\n
\";\n __decorate([\n Autowired('gridOptionsWrapper')\n ], OverlayWrapperComponent.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], OverlayWrapperComponent.prototype, \"userComponentFactory\", void 0);\n __decorate([\n RefSelector('eOverlayWrapper')\n ], OverlayWrapperComponent.prototype, \"eOverlayWrapper\", void 0);\n __decorate([\n PostConstruct\n ], OverlayWrapperComponent.prototype, \"postConstruct\", null);\n return OverlayWrapperComponent;\n}(Component));\nexport { OverlayWrapperComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Autowired, Bean } from \"../context/context\";\nimport { Events } from \"../events\";\nimport { BeanStub } from \"../context/beanStub\";\nvar ColumnHoverService = /** @class */ (function (_super) {\n __extends(ColumnHoverService, _super);\n function ColumnHoverService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnHoverService.prototype.setMouseOver = function (columns) {\n this.selectedColumns = columns;\n var event = {\n type: Events.EVENT_COLUMN_HOVER_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnHoverService.prototype.clearMouseOver = function () {\n this.selectedColumns = null;\n var event = {\n type: Events.EVENT_COLUMN_HOVER_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnHoverService.prototype.isHovered = function (column) {\n return this.selectedColumns && this.selectedColumns.indexOf(column) >= 0;\n };\n __decorate([\n Autowired('eventService')\n ], ColumnHoverService.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ColumnHoverService.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ColumnHoverService.prototype, \"gridApi\", void 0);\n ColumnHoverService = __decorate([\n Bean('columnHoverService')\n ], ColumnHoverService);\n return ColumnHoverService;\n}(BeanStub));\nexport { ColumnHoverService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean } from \"../context/context\";\nvar ColumnAnimationService = /** @class */ (function () {\n function ColumnAnimationService() {\n this.executeNextFuncs = [];\n this.executeLaterFuncs = [];\n this.active = false;\n this.animationThreadCount = 0;\n }\n ColumnAnimationService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n ColumnAnimationService.prototype.isActive = function () {\n return this.active;\n };\n ColumnAnimationService.prototype.start = function () {\n if (this.active) {\n return;\n }\n if (this.gridOptionsWrapper.isSuppressColumnMoveAnimation()) {\n return;\n }\n // if doing RTL, we don't animate open / close as due to how the pixels are inverted,\n // the animation moves all the row the the right rather than to the left (ie it's the static\n // columns that actually get their coordinates updated)\n if (this.gridOptionsWrapper.isEnableRtl()) {\n return;\n }\n this.ensureAnimationCssClassPresent();\n this.active = true;\n };\n ColumnAnimationService.prototype.finish = function () {\n if (!this.active) {\n return;\n }\n this.flush();\n this.active = false;\n };\n ColumnAnimationService.prototype.executeNextVMTurn = function (func) {\n if (this.active) {\n this.executeNextFuncs.push(func);\n }\n else {\n func();\n }\n };\n ColumnAnimationService.prototype.executeLaterVMTurn = function (func) {\n if (this.active) {\n this.executeLaterFuncs.push(func);\n }\n else {\n func();\n }\n };\n ColumnAnimationService.prototype.ensureAnimationCssClassPresent = function () {\n var _this = this;\n // up the count, so we can tell if someone else has updated the count\n // by the time the 'wait' func executes\n this.animationThreadCount++;\n var animationThreadCountCopy = this.animationThreadCount;\n this.gridPanel.setColumnMovingCss(true);\n this.executeLaterFuncs.push(function () {\n // only remove the class if this thread was the last one to update it\n if (_this.animationThreadCount === animationThreadCountCopy) {\n _this.gridPanel.setColumnMovingCss(false);\n }\n });\n };\n ColumnAnimationService.prototype.flush = function () {\n var nowFuncs = this.executeNextFuncs;\n this.executeNextFuncs = [];\n var waitFuncs = this.executeLaterFuncs;\n this.executeLaterFuncs = [];\n if (nowFuncs.length === 0 && waitFuncs.length === 0) {\n return;\n }\n window.setTimeout(function () { return nowFuncs.forEach(function (func) { return func(); }); }, 0);\n window.setTimeout(function () { return waitFuncs.forEach(function (func) { return func(); }); }, 300);\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ColumnAnimationService.prototype, \"gridOptionsWrapper\", void 0);\n ColumnAnimationService = __decorate([\n Bean('columnAnimationService')\n ], ColumnAnimationService);\n return ColumnAnimationService;\n}());\nexport { ColumnAnimationService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean } from \"../context/context\";\nimport { Column } from \"../entities/column\";\nimport { Constants } from \"../constants\";\nimport { _ } from \"../utils\";\nvar AutoGroupColService = /** @class */ (function () {\n function AutoGroupColService() {\n }\n AutoGroupColService_1 = AutoGroupColService;\n AutoGroupColService.prototype.createAutoGroupColumns = function (rowGroupColumns) {\n var _this = this;\n var groupAutoColumns = [];\n var doingTreeData = this.gridOptionsWrapper.isTreeData();\n var doingMultiAutoColumn = this.gridOptionsWrapper.isGroupMultiAutoColumn();\n if (doingTreeData && doingMultiAutoColumn) {\n console.warn('ag-Grid: you cannot mix groupMultiAutoColumn with treeData, only one column can be used to display groups when doing tree data');\n doingMultiAutoColumn = false;\n }\n // if doing groupMultiAutoColumn, then we call the method multiple times, once\n // for each column we are grouping by\n if (doingMultiAutoColumn) {\n rowGroupColumns.forEach(function (rowGroupCol, index) {\n groupAutoColumns.push(_this.createOneAutoGroupColumn(rowGroupCol, index));\n });\n }\n else {\n groupAutoColumns.push(this.createOneAutoGroupColumn());\n }\n return groupAutoColumns;\n };\n // rowGroupCol and index are missing if groupMultiAutoColumn=false\n AutoGroupColService.prototype.createOneAutoGroupColumn = function (rowGroupCol, index) {\n // if one provided by user, use it, otherwise create one\n var defaultAutoColDef = this.generateDefaultColDef(rowGroupCol);\n // if doing multi, set the field\n var colId;\n if (rowGroupCol) {\n colId = Constants.GROUP_AUTO_COLUMN_ID + \"-\" + rowGroupCol.getId();\n }\n else {\n colId = AutoGroupColService_1.GROUP_AUTO_COLUMN_BUNDLE_ID;\n }\n var userAutoColDef = this.gridOptionsWrapper.getAutoGroupColumnDef();\n _.mergeDeep(defaultAutoColDef, userAutoColDef);\n defaultAutoColDef = this.columnFactory.mergeColDefs(defaultAutoColDef);\n defaultAutoColDef.colId = colId;\n // For tree data the filter is always allowed\n if (!this.gridOptionsWrapper.isTreeData()) {\n // we would only allow filter if the user has provided field or value getter. otherwise the filter\n // would not be able to work.\n var noFieldOrValueGetter = _.missing(defaultAutoColDef.field) && _.missing(defaultAutoColDef.valueGetter) && _.missing(defaultAutoColDef.filterValueGetter);\n if (noFieldOrValueGetter) {\n defaultAutoColDef.filter = false;\n }\n }\n // if showing many cols, we don't want to show more than one with a checkbox for selection\n if (index && index > 0) {\n defaultAutoColDef.headerCheckboxSelection = false;\n }\n var newCol = new Column(defaultAutoColDef, null, colId, true);\n this.context.wireBean(newCol);\n return newCol;\n };\n AutoGroupColService.prototype.generateDefaultColDef = function (rowGroupCol) {\n var userAutoColDef = this.gridOptionsWrapper.getAutoGroupColumnDef();\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var defaultAutoColDef = {\n headerName: localeTextFunc('group', 'Group')\n };\n var userHasProvidedGroupCellRenderer = userAutoColDef && (userAutoColDef.cellRenderer || userAutoColDef.cellRendererFramework);\n // only add the default group cell renderer if user hasn't provided one\n if (!userHasProvidedGroupCellRenderer) {\n defaultAutoColDef.cellRenderer = 'agGroupCellRenderer';\n }\n // we never allow moving the group column\n // defaultAutoColDef.suppressMovable = true;\n if (rowGroupCol) {\n var rowGroupColDef = rowGroupCol.getColDef();\n _.assign(defaultAutoColDef, {\n // cellRendererParams.groupKey: colDefToCopy.field;\n headerName: this.columnController.getDisplayNameForColumn(rowGroupCol, 'header'),\n headerValueGetter: rowGroupColDef.headerValueGetter\n });\n if (rowGroupColDef.cellRenderer) {\n _.assign(defaultAutoColDef, {\n cellRendererParams: {\n innerRenderer: rowGroupColDef.cellRenderer,\n innerRendererParams: rowGroupColDef.cellRendererParams\n }\n });\n }\n defaultAutoColDef.showRowGroup = rowGroupCol.getColId();\n }\n else {\n defaultAutoColDef.showRowGroup = true;\n }\n return defaultAutoColDef;\n };\n var AutoGroupColService_1;\n AutoGroupColService.GROUP_AUTO_COLUMN_BUNDLE_ID = Constants.GROUP_AUTO_COLUMN_ID;\n __decorate([\n Autowired('gridOptionsWrapper')\n ], AutoGroupColService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('context')\n ], AutoGroupColService.prototype, \"context\", void 0);\n __decorate([\n Autowired('columnController')\n ], AutoGroupColService.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('columnFactory')\n ], AutoGroupColService.prototype, \"columnFactory\", void 0);\n AutoGroupColService = AutoGroupColService_1 = __decorate([\n Bean('autoGroupColService')\n ], AutoGroupColService);\n return AutoGroupColService;\n}());\nexport { AutoGroupColService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { BeanStub } from \"../context/beanStub\";\nimport { Events } from \"../events\";\nimport { Autowired, Bean } from \"../context/context\";\nvar PaginationAutoPageSizeService = /** @class */ (function (_super) {\n __extends(PaginationAutoPageSizeService, _super);\n function PaginationAutoPageSizeService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PaginationAutoPageSizeService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.addDestroyableEventListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.onBodyHeightChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.notActive = function () {\n return !this.gridOptionsWrapper.isPaginationAutoPageSize();\n };\n PaginationAutoPageSizeService.prototype.onScrollVisibilityChanged = function () {\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.onBodyHeightChanged = function () {\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.checkPageSize = function () {\n if (this.notActive()) {\n return;\n }\n var rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n var bodyHeight = this.gridPanel.getBodyHeight();\n if (bodyHeight > 0) {\n var newPageSize = Math.floor(bodyHeight / rowHeight);\n this.gridOptionsWrapper.setProperty('paginationPageSize', newPageSize);\n }\n };\n __decorate([\n Autowired('eventService')\n ], PaginationAutoPageSizeService.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], PaginationAutoPageSizeService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('scrollVisibleService')\n ], PaginationAutoPageSizeService.prototype, \"scrollVisibleService\", void 0);\n PaginationAutoPageSizeService = __decorate([\n Bean('paginationAutoPageSizeService')\n ], PaginationAutoPageSizeService);\n return PaginationAutoPageSizeService;\n}(BeanStub));\nexport { PaginationAutoPageSizeService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { ChangedPath } from \"../utils/changedPath\";\nimport { Constants } from \"../constants\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { Events } from \"../events\";\nvar ChangeDetectionService = /** @class */ (function (_super) {\n __extends(ChangeDetectionService, _super);\n function ChangeDetectionService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChangeDetectionService.prototype.init = function () {\n if (this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = this.rowModel;\n }\n this.addDestroyableEventListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged.bind(this));\n };\n ChangeDetectionService.prototype.onCellValueChanged = function (event) {\n // Clipboard service manages its own change detection, so no need to do it here.\n // The clipboard manages its own as otherwise this would happen once for every cell\n // that got updated as part of a paste operation, so e.g. if 100 cells in a paste operation,\n // this doChangeDetection would get called 100 times (once for each cell), instead clipboard\n // service executes the logic we have here once (in essence batching up all cell changes\n // into one change detection).\n if (event.source === Constants.SOURCE_PASTE) {\n return;\n }\n this.doChangeDetection(event.node, event.column);\n };\n ChangeDetectionService.prototype.doChangeDetection = function (rowNode, column) {\n if (this.gridOptionsWrapper.isSuppressChangeDetection()) {\n return;\n }\n // step 1 of change detection is to update the aggregated values\n if (this.clientSideRowModel && !rowNode.isRowPinned()) {\n var onlyChangedColumns = this.gridOptionsWrapper.isAggregateOnlyChangedColumns();\n var changedPath = new ChangedPath(onlyChangedColumns, this.clientSideRowModel.getRootNode());\n changedPath.addParentNode(rowNode.parent, [column]);\n this.clientSideRowModel.doAggregate(changedPath);\n }\n // step 2 of change detection is to refresh the cells\n this.rowRenderer.refreshCells();\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ChangeDetectionService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('rowModel')\n ], ChangeDetectionService.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], ChangeDetectionService.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('eventService')\n ], ChangeDetectionService.prototype, \"eventService\", void 0);\n __decorate([\n PostConstruct\n ], ChangeDetectionService.prototype, \"init\", null);\n ChangeDetectionService = __decorate([\n Bean('changeDetectionService')\n ], ChangeDetectionService);\n return ChangeDetectionService;\n}(BeanStub));\nexport { ChangeDetectionService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean } from \"../../context/context\";\nimport { _ } from \"../../utils\";\nvar AgComponentUtils = /** @class */ (function () {\n function AgComponentUtils() {\n }\n AgComponentUtils.prototype.adaptFunction = function (propertyName, hardcodedJsFunction, componentFromFramework, source) {\n if (hardcodedJsFunction == null) {\n return {\n component: null,\n componentFromFramework: componentFromFramework,\n source: source,\n paramsFromSelector: null\n };\n }\n var metadata = this.componentMetadataProvider.retrieve(propertyName);\n if (metadata && metadata.functionAdapter) {\n return {\n componentFromFramework: componentFromFramework,\n component: metadata.functionAdapter(hardcodedJsFunction),\n source: source,\n paramsFromSelector: null\n };\n }\n return null;\n };\n AgComponentUtils.prototype.adaptCellRendererFunction = function (callback) {\n var Adapter = /** @class */ (function () {\n function Adapter() {\n }\n Adapter.prototype.refresh = function (params) {\n return false;\n };\n Adapter.prototype.getGui = function () {\n var callbackResult = callback(this.params);\n var type = typeof callbackResult;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return _.loadTemplate('' + callbackResult + '');\n }\n else {\n return callbackResult;\n }\n };\n Adapter.prototype.init = function (params) {\n this.params = params;\n };\n return Adapter;\n }());\n return Adapter;\n };\n AgComponentUtils.prototype.doesImplementIComponent = function (candidate) {\n if (!candidate) {\n return false;\n }\n return candidate.prototype && 'getGui' in candidate.prototype;\n };\n __decorate([\n Autowired(\"componentMetadataProvider\")\n ], AgComponentUtils.prototype, \"componentMetadataProvider\", void 0);\n AgComponentUtils = __decorate([\n Bean(\"agComponentUtils\")\n ], AgComponentUtils);\n return AgComponentUtils;\n}());\nexport { AgComponentUtils };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean, PostConstruct } from \"../../context/context\";\nvar ComponentMetadataProvider = /** @class */ (function () {\n function ComponentMetadataProvider() {\n }\n ComponentMetadataProvider.prototype.postConstruct = function () {\n this.componentMetaData = {\n dateComponent: {\n mandatoryMethodList: ['getDate', 'setDate'],\n optionalMethodList: ['afterGuiAttached']\n },\n detailCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh']\n },\n headerComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n headerGroupComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n loadingCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n loadingOverlayComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n noRowsOverlayComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n floatingFilterComponent: {\n mandatoryMethodList: ['onParentModelChanged'],\n optionalMethodList: ['afterGuiAttached']\n },\n floatingFilterWrapperComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n cellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n cellEditor: {\n mandatoryMethodList: ['getValue'],\n optionalMethodList: ['isPopup', 'isCancelBeforeStart', 'isCancelAfterEnd', 'focusIn', 'focusOut', 'afterGuiAttached']\n },\n innerRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n fullWidthCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n pinnedRowCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n groupRowInnerRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n groupRowRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n filter: {\n mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n optionalMethodList: ['afterGuiAttached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged']\n },\n filterComponent: {\n mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n optionalMethodList: ['afterGuiAttached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged']\n },\n statusPanel: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n },\n toolPanel: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached']\n },\n tooltipComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n }\n };\n };\n ComponentMetadataProvider.prototype.retrieve = function (name) {\n return this.componentMetaData[name];\n };\n __decorate([\n Autowired(\"agComponentUtils\")\n ], ComponentMetadataProvider.prototype, \"agComponentUtils\", void 0);\n __decorate([\n PostConstruct\n ], ComponentMetadataProvider.prototype, \"postConstruct\", null);\n ComponentMetadataProvider = __decorate([\n Bean(\"componentMetadataProvider\")\n ], ComponentMetadataProvider);\n return ComponentMetadataProvider;\n}());\nexport { ComponentMetadataProvider };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean, Optional, PostConstruct } from \"../context/context\";\n/** Using the IoC has a slight performance consideration, which is no problem most of the\n * time, unless we are trashing objects - which is the case when scrolling and rowComp\n * and cellComp. So for performance reasons, RowComp and CellComp do not get autowired\n * with the IoC. Instead they get passed this object which is all the beans the RowComp\n * and CellComp need. Not autowiring all the cells gives performance improvement. */\nvar Beans = /** @class */ (function () {\n function Beans() {\n }\n Beans.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n Beans.prototype.postConstruct = function () {\n this.doingMasterDetail = this.gridOptionsWrapper.isMasterDetail();\n };\n __decorate([\n Autowired('paginationProxy')\n ], Beans.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('context')\n ], Beans.prototype, \"context\", void 0);\n __decorate([\n Autowired('columnApi')\n ], Beans.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], Beans.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], Beans.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('expressionService')\n ], Beans.prototype, \"expressionService\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], Beans.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('$compile')\n ], Beans.prototype, \"$compile\", void 0);\n __decorate([\n Autowired('templateService')\n ], Beans.prototype, \"templateService\", void 0);\n __decorate([\n Autowired('valueService')\n ], Beans.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('eventService')\n ], Beans.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnController')\n ], Beans.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('columnAnimationService')\n ], Beans.prototype, \"columnAnimationService\", void 0);\n __decorate([\n Optional('rangeController')\n ], Beans.prototype, \"rangeController\", void 0);\n __decorate([\n Autowired('focusedCellController')\n ], Beans.prototype, \"focusedCellController\", void 0);\n __decorate([\n Optional('contextMenuFactory')\n ], Beans.prototype, \"contextMenuFactory\", void 0);\n __decorate([\n Autowired('cellRendererFactory')\n ], Beans.prototype, \"cellRendererFactory\", void 0);\n __decorate([\n Autowired('popupService')\n ], Beans.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('valueFormatterService')\n ], Beans.prototype, \"valueFormatterService\", void 0);\n __decorate([\n Autowired('stylingService')\n ], Beans.prototype, \"stylingService\", void 0);\n __decorate([\n Autowired('columnHoverService')\n ], Beans.prototype, \"columnHoverService\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], Beans.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('animationFrameService')\n ], Beans.prototype, \"taskQueue\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], Beans.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('sortController')\n ], Beans.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('filterManager')\n ], Beans.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('maxDivHeightScaler')\n ], Beans.prototype, \"maxDivHeightScaler\", void 0);\n __decorate([\n Autowired('tooltipManager')\n ], Beans.prototype, \"tooltipManager\", void 0);\n __decorate([\n Autowired('frameworkOverrides')\n ], Beans.prototype, \"frameworkOverrides\", void 0);\n __decorate([\n Autowired('detailRowCompCache')\n ], Beans.prototype, \"detailRowCompCache\", void 0);\n __decorate([\n Autowired('cellPositionUtils')\n ], Beans.prototype, \"cellPositionUtils\", void 0);\n __decorate([\n Autowired('rowPositionUtils')\n ], Beans.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n PostConstruct\n ], Beans.prototype, \"postConstruct\", null);\n Beans = __decorate([\n Bean('beans')\n ], Beans);\n return Beans;\n}());\nexport { Beans };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { Events } from \"../eventKeys\";\nvar AnimationFrameService = /** @class */ (function () {\n function AnimationFrameService() {\n // p1 and p2 are create tasks are to do with row and cell creation.\n // for them we want to execute according to row order, so we use\n // TaskItem so we know what index the item is for.\n this.createTasksP1 = { list: [], sorted: false }; // eg drawing back-ground of rows\n this.createTasksP2 = { list: [], sorted: false }; // eg cell renderers, adding hover functionality\n // destroy tasks are to do with row removal. they are done after row creation as the user will need to see new\n // rows first (as blank is scrolled into view), when we remove the old rows (no longer in view) is not as\n // important.\n this.destroyTasks = [];\n this.ticking = false;\n // we need to know direction of scroll, to build up rows in the direction of\n // the scroll. eg if user scrolls down, we extend the rows by building down.\n this.scrollGoingDown = true;\n this.lastScrollTop = 0;\n }\n AnimationFrameService.prototype.setScrollTop = function (scrollTop) {\n this.scrollGoingDown = scrollTop > this.lastScrollTop;\n this.lastScrollTop = scrollTop;\n };\n AnimationFrameService.prototype.init = function () {\n this.useAnimationFrame = !this.gridOptionsWrapper.isSuppressAnimationFrame();\n };\n // this method is for our ag-Grid sanity only - if animation frames are turned off,\n // then no place in the code should be looking to add any work to be done in animation\n // frames. this stops bugs - where some code is asking for a frame to be executed\n // when it should not.\n AnimationFrameService.prototype.verifyAnimationFrameOn = function (methodName) {\n if (this.useAnimationFrame === false) {\n console.warn(\"ag-Grid: AnimationFrameService.\" + methodName + \" called but animation frames are off\");\n }\n };\n AnimationFrameService.prototype.createTask = function (task, index, list) {\n this.verifyAnimationFrameOn(list);\n var taskItem = { task: task, index: index };\n this.addTaskToList(this[list], taskItem);\n this.schedule();\n };\n AnimationFrameService.prototype.addTaskToList = function (taskList, task) {\n taskList.list.push(task);\n taskList.sorted = false;\n };\n AnimationFrameService.prototype.sortTaskList = function (taskList) {\n if (taskList.sorted) {\n return;\n }\n var ascSortFunc = function (a, b) { return b.index - a.index; };\n var descSortFunc = function (a, b) { return a.index - b.index; };\n taskList.list.sort(this.scrollGoingDown ? ascSortFunc : descSortFunc);\n taskList.sorted = true;\n };\n AnimationFrameService.prototype.addDestroyTask = function (task) {\n this.verifyAnimationFrameOn('createTasksP3');\n this.destroyTasks.push(task);\n this.schedule();\n };\n AnimationFrameService.prototype.executeFrame = function (millis) {\n this.verifyAnimationFrameOn('executeFrame');\n var p1TaskList = this.createTasksP1;\n var p1Tasks = p1TaskList.list;\n var p2TaskList = this.createTasksP2;\n var p2Tasks = p2TaskList.list;\n var destroyTasks = this.destroyTasks;\n var frameStart = new Date().getTime();\n var duration = (new Date().getTime()) - frameStart;\n // 16ms is 60 fps\n var noMaxMillis = millis <= 0;\n while (noMaxMillis || duration < millis) {\n if (p1Tasks.length) {\n this.sortTaskList(p1TaskList);\n var taskItem = p1Tasks.pop();\n taskItem.task();\n }\n else if (p2Tasks.length) {\n this.sortTaskList(p2TaskList);\n var taskItem = p2Tasks.pop();\n taskItem.task();\n }\n else if (destroyTasks.length) {\n var task = destroyTasks.pop();\n task();\n }\n else {\n break;\n }\n duration = (new Date().getTime()) - frameStart;\n }\n if (p1Tasks.length || p2Tasks.length || destroyTasks.length) {\n this.requestFrame();\n }\n else {\n this.stopTicking();\n }\n };\n AnimationFrameService.prototype.stopTicking = function () {\n this.ticking = false;\n var event = {\n type: Events.EVENT_ANIMATION_QUEUE_EMPTY,\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n api: this.gridOptionsWrapper.getApi()\n };\n this.eventService.dispatchEvent(event);\n };\n AnimationFrameService.prototype.flushAllFrames = function () {\n if (!this.useAnimationFrame) {\n return;\n }\n this.executeFrame(-1);\n };\n AnimationFrameService.prototype.schedule = function () {\n if (!this.useAnimationFrame) {\n return;\n }\n if (!this.ticking) {\n this.ticking = true;\n this.requestFrame();\n }\n };\n AnimationFrameService.prototype.requestFrame = function () {\n // check for the existence of requestAnimationFrame, and if\n // it's missing, then we polyfill it with setTimeout()\n var callback = this.executeFrame.bind(this, 60);\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(callback);\n }\n else if (window.webkitRequestAnimationFrame) {\n window.webkitRequestAnimationFrame(callback);\n }\n else {\n window.setTimeout(callback, 0);\n }\n };\n AnimationFrameService.prototype.isQueueEmpty = function () {\n return this.ticking;\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], AnimationFrameService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('eventService')\n ], AnimationFrameService.prototype, \"eventService\", void 0);\n __decorate([\n PostConstruct\n ], AnimationFrameService.prototype, \"init\", null);\n AnimationFrameService = __decorate([\n Bean('animationFrameService')\n ], AnimationFrameService);\n return AnimationFrameService;\n}());\nexport { AnimationFrameService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean, Optional, PostConstruct } from \"../context/context\";\nimport { Constants } from \"../constants\";\nimport { _ } from \"../utils\";\nvar NavigationService = /** @class */ (function () {\n function NavigationService() {\n this.timeLastPageEventProcessed = 0;\n }\n NavigationService.prototype.init = function () {\n this.scrollWidth = this.gridOptionsWrapper.getScrollbarWidth();\n };\n NavigationService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n NavigationService.prototype.handlePageScrollingKey = function (event) {\n var key = event.which || event.keyCode;\n var alt = event.altKey;\n var ctrl = event.ctrlKey;\n var currentCell = this.mouseEventService.getCellPositionForEvent(event);\n if (!currentCell) {\n return false;\n }\n var processed = false;\n switch (key) {\n case Constants.KEY_PAGE_HOME:\n case Constants.KEY_PAGE_END:\n // handle home and end when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n this.onHomeOrEndKey(key);\n processed = true;\n }\n break;\n case Constants.KEY_LEFT:\n case Constants.KEY_RIGHT:\n // handle left and right when ctrl is pressed only\n if (ctrl && !alt) {\n this.onCtrlLeftOrRight(key, currentCell);\n processed = true;\n }\n break;\n case Constants.KEY_UP:\n case Constants.KEY_DOWN:\n // handle up and down when ctrl is pressed only\n if (ctrl && !alt) {\n this.onCtrlUpOrDown(key, currentCell);\n processed = true;\n }\n break;\n case Constants.KEY_PAGE_DOWN:\n // handle page up and page down when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n this.onPageDown(currentCell);\n processed = true;\n }\n break;\n case Constants.KEY_PAGE_UP:\n // handle page up and page down when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n this.onPageUp(currentCell);\n processed = true;\n }\n break;\n }\n if (processed) {\n event.preventDefault();\n }\n return processed;\n };\n // the page up/down keys caused a problem, in that if the user\n // held the page up/down key down, lots of events got generated,\n // which clogged up the event queue (as they take time to process)\n // which in turn froze the grid. Logic below makes sure we wait 100ms\n // between processing the page up/down events, so when user has finger\n // held down on key, we ignore page up/down events until 100ms has passed,\n // which effectively empties the queue of page up/down events.\n NavigationService.prototype.isTimeSinceLastPageEventToRecent = function () {\n var now = new Date().getTime();\n var diff = now - this.timeLastPageEventProcessed;\n return (diff < 100);\n };\n NavigationService.prototype.setTimeLastPageEventProcessed = function () {\n this.timeLastPageEventProcessed = new Date().getTime();\n };\n NavigationService.prototype.onPageDown = function (gridCell) {\n if (this.isTimeSinceLastPageEventToRecent()) {\n return;\n }\n var scrollPosition = this.gridPanel.getVScrollPosition();\n var pixelsInOnePage = scrollPosition.bottom - scrollPosition.top;\n if (this.gridPanel.isHorizontalScrollShowing()) {\n pixelsInOnePage -= this.scrollWidth;\n }\n var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n var currentPageBottomPixel = scrollPosition.top + pixelsInOnePage;\n var currentPageBottomRow = this.paginationProxy.getRowIndexAtPixel(currentPageBottomPixel + pagingPixelOffset);\n var scrollIndex = currentPageBottomRow;\n var currentCellPixel = this.paginationProxy.getRow(gridCell.rowIndex).rowTop;\n var nextCellPixel = currentCellPixel + pixelsInOnePage - pagingPixelOffset;\n var focusIndex = this.paginationProxy.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);\n var pageLastRow = this.paginationProxy.getPageLastRow();\n if (focusIndex > pageLastRow) {\n focusIndex = pageLastRow;\n }\n if (scrollIndex > pageLastRow) {\n scrollIndex = pageLastRow;\n }\n this.navigateTo(scrollIndex, 'top', null, focusIndex, gridCell.column);\n this.setTimeLastPageEventProcessed();\n };\n NavigationService.prototype.onPageUp = function (gridCell) {\n if (this.isTimeSinceLastPageEventToRecent()) {\n return;\n }\n var scrollPosition = this.gridPanel.getVScrollPosition();\n var pixelsInOnePage = scrollPosition.bottom - scrollPosition.top;\n if (this.gridPanel.isHorizontalScrollShowing()) {\n pixelsInOnePage -= this.scrollWidth;\n }\n var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n var currentPageTopPixel = scrollPosition.top;\n var currentPageTopRow = this.paginationProxy.getRowIndexAtPixel(currentPageTopPixel + pagingPixelOffset);\n var scrollIndex = currentPageTopRow;\n var currentRowNode = this.paginationProxy.getRow(gridCell.rowIndex);\n var nextCellPixel = currentRowNode.rowTop + currentRowNode.rowHeight - pixelsInOnePage - pagingPixelOffset;\n var focusIndex = this.paginationProxy.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);\n var firstRow = this.paginationProxy.getPageFirstRow();\n if (focusIndex < firstRow) {\n focusIndex = firstRow;\n }\n if (scrollIndex < firstRow) {\n scrollIndex = firstRow;\n }\n this.navigateTo(scrollIndex, 'bottom', null, focusIndex, gridCell.column);\n this.setTimeLastPageEventProcessed();\n };\n // common logic to navigate. takes parameters:\n // scrollIndex - what row to vertically scroll to\n // scrollType - what position to put scroll index ie top/bottom\n // scrollColumn - what column to horizontally scroll to\n // focusIndex / focusColumn - for page up / down, we want to scroll to one row/column, but focus another\n NavigationService.prototype.navigateTo = function (scrollIndex, scrollType, scrollColumn, focusIndex, focusColumn) {\n if (_.exists(scrollColumn)) {\n this.gridPanel.ensureColumnVisible(scrollColumn);\n }\n if (_.exists(scrollIndex)) {\n this.gridPanel.ensureIndexVisible(scrollIndex, scrollType);\n }\n // make sure the cell is rendered, needed if we are to focus\n this.animationFrameService.flushAllFrames();\n // if we don't do this, the range will be left on the last cell, which will leave the last focused cell\n // highlighted.\n this.focusedCellController.setFocusedCell(focusIndex, focusColumn, null, true);\n if (this.rangeController) {\n var cellPosition = { rowIndex: focusIndex, rowPinned: null, column: focusColumn };\n this.rangeController.setRangeToCell(cellPosition);\n }\n };\n // ctrl + up/down will bring focus to same column, first/last row. no horizontal scrolling.\n NavigationService.prototype.onCtrlUpOrDown = function (key, gridCell) {\n var upKey = key === Constants.KEY_UP;\n var rowIndexToScrollTo = upKey ? 0 : this.paginationProxy.getPageLastRow();\n this.navigateTo(rowIndexToScrollTo, null, gridCell.column, rowIndexToScrollTo, gridCell.column);\n };\n // ctrl + left/right will bring focus to same row, first/last cell. no vertical scrolling.\n NavigationService.prototype.onCtrlLeftOrRight = function (key, gridCell) {\n var leftKey = key === Constants.KEY_LEFT;\n var allColumns = this.columnController.getAllDisplayedColumns();\n var columnToSelect = leftKey ? allColumns[0] : _.last(allColumns);\n this.navigateTo(gridCell.rowIndex, null, columnToSelect, gridCell.rowIndex, columnToSelect);\n };\n // home brings focus to top left cell, end brings focus to bottom right, grid scrolled to bring\n // same cell into view (which means either scroll all the way up, or all the way down).\n NavigationService.prototype.onHomeOrEndKey = function (key) {\n var homeKey = key === Constants.KEY_PAGE_HOME;\n var allColumns = this.columnController.getAllDisplayedColumns();\n var columnToSelect = homeKey ? allColumns[0] : _.last(allColumns);\n var rowIndexToScrollTo = homeKey ? 0 : this.paginationProxy.getPageLastRow();\n this.navigateTo(rowIndexToScrollTo, null, columnToSelect, rowIndexToScrollTo, columnToSelect);\n };\n __decorate([\n Autowired('mouseEventService')\n ], NavigationService.prototype, \"mouseEventService\", void 0);\n __decorate([\n Autowired('paginationProxy')\n ], NavigationService.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('focusedCellController')\n ], NavigationService.prototype, \"focusedCellController\", void 0);\n __decorate([\n Autowired('animationFrameService')\n ], NavigationService.prototype, \"animationFrameService\", void 0);\n __decorate([\n Optional('rangeController')\n ], NavigationService.prototype, \"rangeController\", void 0);\n __decorate([\n Autowired('columnController')\n ], NavigationService.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], NavigationService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], NavigationService.prototype, \"init\", null);\n NavigationService = __decorate([\n Bean('navigationService')\n ], NavigationService);\n return NavigationService;\n}());\nexport { NavigationService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { BeanStub } from \"../context/beanStub\";\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { Events } from \"../eventKeys\";\nimport { _ } from \"../utils\";\n/**\n * This class solves the 'max height' problem, where the user might want to show more data than\n * the max div height actually allows.\n */\nvar MaxDivHeightScaler = /** @class */ (function (_super) {\n __extends(MaxDivHeightScaler, _super);\n function MaxDivHeightScaler() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // the scrollY position\n _this.scrollY = 0;\n // how tall the body is\n _this.uiBodyHeight = 0;\n return _this;\n }\n MaxDivHeightScaler.prototype.postConstruct = function () {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.updateOffset.bind(this));\n this.scrollBarWidth = this.gridOptionsWrapper.getScrollbarWidth();\n this.maxDivHeight = _.getMaxDivHeight();\n };\n MaxDivHeightScaler.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n MaxDivHeightScaler.prototype.isScaling = function () {\n return this.scaling;\n };\n MaxDivHeightScaler.prototype.getOffset = function () {\n return this.offset;\n };\n MaxDivHeightScaler.prototype.updateOffset = function () {\n if (!this.scaling) {\n return;\n }\n var newScrollY = this.gridPanel.getVScrollPosition().top;\n var newBodyHeight = this.getUiBodyHeight();\n var atLeastOneChanged = newScrollY !== this.scrollY || newBodyHeight !== this.uiBodyHeight;\n if (atLeastOneChanged) {\n this.scrollY = newScrollY;\n this.uiBodyHeight = newBodyHeight;\n this.calculateOffset();\n }\n };\n MaxDivHeightScaler.prototype.calculateOffset = function () {\n this.uiContainerHeight = this.maxDivHeight;\n this.pixelsToShave = this.modelHeight - this.uiContainerHeight;\n this.maxScrollY = this.uiContainerHeight - this.uiBodyHeight;\n var scrollPercent = this.scrollY / this.maxScrollY;\n this.setOffset(scrollPercent * this.pixelsToShave);\n };\n MaxDivHeightScaler.prototype.clearOffset = function () {\n this.uiContainerHeight = this.modelHeight;\n this.pixelsToShave = 0;\n this.setOffset(0);\n };\n MaxDivHeightScaler.prototype.setOffset = function (newOffset) {\n // because we are talking pixels, no point in confusing things with half numbers\n var newOffsetFloor = typeof newOffset === 'number' ? Math.floor(newOffset) : null;\n if (this.offset === newOffsetFloor) {\n return;\n }\n this.offset = newOffsetFloor;\n this.eventService.dispatchEvent({ type: Events.EVENT_HEIGHT_SCALE_CHANGED });\n };\n MaxDivHeightScaler.prototype.setModelHeight = function (modelHeight) {\n this.modelHeight = modelHeight;\n this.scaling = this.maxDivHeight > 0 && modelHeight > this.maxDivHeight;\n if (this.scaling) {\n this.calculateOffset();\n }\n else {\n this.clearOffset();\n }\n };\n MaxDivHeightScaler.prototype.getUiContainerHeight = function () {\n return this.uiContainerHeight;\n };\n MaxDivHeightScaler.prototype.getRealPixelPosition = function (modelPixel) {\n return modelPixel - this.offset;\n };\n MaxDivHeightScaler.prototype.getUiBodyHeight = function () {\n var pos = this.gridPanel.getVScrollPosition();\n return pos.bottom - pos.top;\n };\n MaxDivHeightScaler.prototype.getScrollPositionForPixel = function (rowTop) {\n if (this.pixelsToShave <= 0) {\n return rowTop;\n }\n var modelMaxScroll = this.modelHeight - this.getUiBodyHeight();\n var scrollPercent = rowTop / modelMaxScroll;\n var scrollPixel = this.maxScrollY * scrollPercent;\n return scrollPixel;\n };\n __decorate([\n Autowired('eventService')\n ], MaxDivHeightScaler.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], MaxDivHeightScaler.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], MaxDivHeightScaler.prototype, \"postConstruct\", null);\n MaxDivHeightScaler = __decorate([\n Bean('maxDivHeightScaler')\n ], MaxDivHeightScaler);\n return MaxDivHeightScaler;\n}(BeanStub));\nexport { MaxDivHeightScaler };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean } from \"../context/context\";\nimport { CellComp } from \"./cellComp\";\nimport { _ } from \"../utils\";\nvar AutoHeightCalculator = /** @class */ (function () {\n function AutoHeightCalculator() {\n }\n AutoHeightCalculator.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n AutoHeightCalculator.prototype.getPreferredHeightForRow = function (rowNode) {\n var _this = this;\n if (!this.eDummyContainer) {\n this.eDummyContainer = document.createElement('div');\n // so any styles on row also get applied in dummy, otherwise\n // the content in dummy may differ to the real\n _.addCssClass(this.eDummyContainer, 'ag-row ag-row-no-focus');\n }\n // we put the dummy into the body container, so it will inherit all the\n // css styles that the real cells are inheriting\n var eBodyContainer = this.gridPanel.getCenterContainer();\n eBodyContainer.appendChild(this.eDummyContainer);\n var cellComps = [];\n var autoRowHeightCols = this.columnController.getAllAutoRowHeightCols();\n var visibleAutoRowHeightCols = autoRowHeightCols.filter(function (col) { return col.isVisible(); });\n visibleAutoRowHeightCols.forEach(function (col) {\n var cellComp = new CellComp(_this.$scope, _this.beans, col, rowNode, null, true, false);\n cellComp.setParentRow(_this.eDummyContainer);\n cellComps.push(cellComp);\n });\n var template = cellComps.map(function (cellComp) { return cellComp.getCreateTemplate(); }).join(' ');\n this.eDummyContainer.innerHTML = template;\n // this gets any cellComps that are using components to put the components in\n cellComps.forEach(function (cellComp) { return cellComp.afterAttached(); });\n // we should be able to just take the height of the row at this point, however\n // the row isn't expanding to cover the cell heights, i don't know why, i couldn't\n // figure it out so instead looking at the individual cells instead\n var maxCellHeight = 0;\n for (var i = 0; i < this.eDummyContainer.children.length; i++) {\n var child = this.eDummyContainer.children[i];\n if (child.offsetHeight > maxCellHeight) {\n maxCellHeight = child.offsetHeight;\n }\n }\n // we are finished with the dummy container, so get rid of it\n eBodyContainer.removeChild(this.eDummyContainer);\n cellComps.forEach(function (cellComp) {\n // dunno why we need to detach first, doing it here to be consistent with code in RowComp\n cellComp.detach();\n cellComp.destroy();\n });\n // in case anything left over from last time\n _.clearElement(this.eDummyContainer);\n return maxCellHeight;\n };\n __decorate([\n Autowired('beans')\n ], AutoHeightCalculator.prototype, \"beans\", void 0);\n __decorate([\n Autowired(\"$scope\")\n ], AutoHeightCalculator.prototype, \"$scope\", void 0);\n __decorate([\n Autowired(\"columnController\")\n ], AutoHeightCalculator.prototype, \"columnController\", void 0);\n AutoHeightCalculator = __decorate([\n Bean('autoHeightCalculator')\n ], AutoHeightCalculator);\n return AutoHeightCalculator;\n}());\nexport { AutoHeightCalculator };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"../widgets/component\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { RefSelector } from \"../widgets/componentAnnotations\";\nimport { Events } from \"../events\";\nimport { _ } from \"../utils\";\nimport { Constants } from \"../constants\";\nvar PaginationComp = /** @class */ (function (_super) {\n __extends(PaginationComp, _super);\n function PaginationComp() {\n return _super.call(this) || this;\n }\n PaginationComp.prototype.postConstruct = function () {\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n this.setTemplate(this.getTemplate());\n this.btFirst.insertAdjacentElement('afterbegin', _.createIconNoSpan(isRtl ? 'last' : 'first', this.gridOptionsWrapper));\n this.btPrevious.insertAdjacentElement('afterbegin', _.createIconNoSpan(isRtl ? 'next' : 'previous', this.gridOptionsWrapper));\n this.btNext.insertAdjacentElement('afterbegin', _.createIconNoSpan(isRtl ? 'previous' : 'next', this.gridOptionsWrapper));\n this.btLast.insertAdjacentElement('afterbegin', _.createIconNoSpan(isRtl ? 'first' : 'last', this.gridOptionsWrapper));\n if (this.rowModel.getType() === Constants.ROW_MODEL_TYPE_SERVER_SIDE) {\n this.serverSideRowModel = this.rowModel;\n }\n var isPaging = this.gridOptionsWrapper.isPagination();\n var paginationPanelEnabled = isPaging && !this.gridOptionsWrapper.isSuppressPaginationPanel();\n if (!paginationPanelEnabled) {\n this.setDisplayed(false);\n return;\n }\n this.addDestroyableEventListener(this.eventService, Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n this.addDestroyableEventListener(this.btFirst, 'click', this.onBtFirst.bind(this));\n this.addDestroyableEventListener(this.btLast, 'click', this.onBtLast.bind(this));\n this.addDestroyableEventListener(this.btNext, 'click', this.onBtNext.bind(this));\n this.addDestroyableEventListener(this.btPrevious, 'click', this.onBtPrevious.bind(this));\n this.onPaginationChanged();\n };\n PaginationComp.prototype.onPaginationChanged = function () {\n this.enableOrDisableButtons();\n this.updateRowLabels();\n this.setCurrentPageLabel();\n this.setTotalLabels();\n };\n PaginationComp.prototype.setCurrentPageLabel = function () {\n var pagesExist = this.paginationProxy.getTotalPages() > 0;\n var currentPage = this.paginationProxy.getCurrentPage();\n var toDisplay = pagesExist ? currentPage + 1 : 0;\n this.lbCurrent.innerHTML = this.formatNumber(toDisplay);\n };\n PaginationComp.prototype.formatNumber = function (value) {\n var userFunc = this.gridOptionsWrapper.getPaginationNumberFormatterFunc();\n if (userFunc) {\n return userFunc({ value: value });\n }\n else {\n return _.formatNumberCommas(value);\n }\n };\n PaginationComp.prototype.getTemplate = function () {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var strPage = localeTextFunc('page', 'Page');\n var strTo = localeTextFunc('to', 'to');\n var strOf = localeTextFunc('of', 'of');\n var strFirst = localeTextFunc('first', 'First');\n var strPrevious = localeTextFunc('previous', 'Previous');\n var strNext = localeTextFunc('next', 'Next');\n var strLast = localeTextFunc('last', 'Last');\n return \"
\\n \\n \" + strTo + \" \" + strOf + \" \\n \\n \\n
\\n \\n
\\n
\\n \\n
\\n \" + strPage + \" \" + strOf + \" \\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\";\n };\n PaginationComp.prototype.onBtNext = function () {\n this.paginationProxy.goToNextPage();\n };\n PaginationComp.prototype.onBtPrevious = function () {\n this.paginationProxy.goToPreviousPage();\n };\n PaginationComp.prototype.onBtFirst = function () {\n this.paginationProxy.goToFirstPage();\n };\n PaginationComp.prototype.onBtLast = function () {\n this.paginationProxy.goToLastPage();\n };\n PaginationComp.prototype.enableOrDisableButtons = function () {\n var currentPage = this.paginationProxy.getCurrentPage();\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n var disablePreviousAndFirst = currentPage === 0;\n _.addOrRemoveCssClass(this.btPrevious, 'ag-disabled', disablePreviousAndFirst);\n _.addOrRemoveCssClass(this.btFirst, 'ag-disabled', disablePreviousAndFirst);\n var zeroPagesToDisplay = this.isZeroPagesToDisplay();\n var onLastPage = maxRowFound && currentPage === (totalPages - 1);\n var disableNext = onLastPage || zeroPagesToDisplay;\n _.addOrRemoveCssClass(this.btNext, 'ag-disabled', disableNext);\n var disableLast = !maxRowFound || zeroPagesToDisplay || currentPage === (totalPages - 1);\n _.addOrRemoveCssClass(this.btLast, 'ag-disabled', disableLast);\n };\n PaginationComp.prototype.updateRowLabels = function () {\n var currentPage = this.paginationProxy.getCurrentPage();\n var pageSize = this.paginationProxy.getPageSize();\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var rowCount = this.paginationProxy.isLastPageFound() ?\n this.paginationProxy.getMasterRowCount() : null;\n var startRow;\n var endRow;\n if (this.isZeroPagesToDisplay()) {\n startRow = 0;\n endRow = 0;\n }\n else {\n startRow = (pageSize * currentPage) + 1;\n endRow = startRow + pageSize - 1;\n if (maxRowFound && endRow > rowCount) {\n endRow = rowCount;\n }\n }\n this.lbFirstRowOnPage.innerHTML = this.formatNumber(startRow);\n if (this.serverSideRowModel && this.serverSideRowModel.isLoading()) {\n this.lbLastRowOnPage.innerHTML = '?';\n }\n else {\n this.lbLastRowOnPage.innerHTML = this.formatNumber(endRow);\n }\n };\n PaginationComp.prototype.isZeroPagesToDisplay = function () {\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n return maxRowFound && totalPages === 0;\n };\n PaginationComp.prototype.setTotalLabels = function () {\n var lastPageFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n var rowCount = this.paginationProxy.isLastPageFound() ?\n this.paginationProxy.getMasterRowCount() : null;\n if (lastPageFound) {\n this.lbTotal.innerHTML = this.formatNumber(totalPages);\n this.lbRecordCount.innerHTML = this.formatNumber(rowCount);\n }\n else {\n var moreText = this.gridOptionsWrapper.getLocaleTextFunc()('more', 'more');\n this.lbTotal.innerHTML = moreText;\n this.lbRecordCount.innerHTML = moreText;\n }\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], PaginationComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('eventService')\n ], PaginationComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('paginationProxy')\n ], PaginationComp.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], PaginationComp.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('rowModel')\n ], PaginationComp.prototype, \"rowModel\", void 0);\n __decorate([\n RefSelector('btFirst')\n ], PaginationComp.prototype, \"btFirst\", void 0);\n __decorate([\n RefSelector('btPrevious')\n ], PaginationComp.prototype, \"btPrevious\", void 0);\n __decorate([\n RefSelector('btNext')\n ], PaginationComp.prototype, \"btNext\", void 0);\n __decorate([\n RefSelector('btLast')\n ], PaginationComp.prototype, \"btLast\", void 0);\n __decorate([\n RefSelector('lbRecordCount')\n ], PaginationComp.prototype, \"lbRecordCount\", void 0);\n __decorate([\n RefSelector('lbFirstRowOnPage')\n ], PaginationComp.prototype, \"lbFirstRowOnPage\", void 0);\n __decorate([\n RefSelector('lbLastRowOnPage')\n ], PaginationComp.prototype, \"lbLastRowOnPage\", void 0);\n __decorate([\n RefSelector('eSummaryPanel')\n ], PaginationComp.prototype, \"eSummaryPanel\", void 0);\n __decorate([\n RefSelector('lbCurrent')\n ], PaginationComp.prototype, \"lbCurrent\", void 0);\n __decorate([\n RefSelector('lbTotal')\n ], PaginationComp.prototype, \"lbTotal\", void 0);\n __decorate([\n PostConstruct\n ], PaginationComp.prototype, \"postConstruct\", null);\n return PaginationComp;\n}(Component));\nexport { PaginationComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean, PostConstruct, PreDestroy } from \"../context/context\";\nimport { Constants } from \"../constants\";\n/**\n * For Master Detail, it is required to keep components between expanding & collapsing parents.\n * For example a user expands row A (and shows a detail grid for this row), then when row A\n * is closed, we want to keep the detail grid, so next time row A is expanded the detail grid\n * is showed with it's context intact, eg if user sorted in the detail grid, that sort should\n * still be applied after the detail grid is shown for the second time.\n */\nvar DetailRowCompCache = /** @class */ (function () {\n function DetailRowCompCache() {\n this.cacheItems = [];\n }\n DetailRowCompCache.prototype.postConstruct = function () {\n this.active = this.gridOptionsWrapper.isKeepDetailRows();\n this.maxCacheSize = this.gridOptionsWrapper.getKeepDetailRowsCount();\n };\n DetailRowCompCache.prototype.addOrDestroy = function (rowNode, pinned, comp) {\n // only accept detail rows\n var doNotUseCache = !this.active || !rowNode.detail;\n if (doNotUseCache) {\n this.destroyFullWidthRow(comp);\n return;\n }\n var item = this.getCacheItem(rowNode, true);\n // put the comp in the right location of the item.\n // we also destroy any previous comp - this should never happen\n // as the logic outside of this class shouldn't be adding same item to the\n // cache twice, however we cater for it in case in future releases code\n // outside of this class is changed and this could happen.\n switch (pinned) {\n case Constants.PINNED_LEFT:\n this.destroyFullWidthRow(item.left);\n item.left = comp;\n break;\n case Constants.PINNED_RIGHT:\n this.destroyFullWidthRow(item.right);\n item.right = comp;\n break;\n default:\n this.destroyFullWidthRow(item.center);\n item.center = comp;\n break;\n }\n this.cacheItems.sort(function (a, b) {\n return b.lastAccessedTime - a.lastAccessedTime;\n });\n this.purgeCache(this.maxCacheSize);\n };\n DetailRowCompCache.prototype.getCacheItem = function (rowNode, autoCreate) {\n if (autoCreate === void 0) { autoCreate = false; }\n var res;\n for (var i = 0; i < this.cacheItems.length; i++) {\n var item = this.cacheItems[i];\n if (item.rowNode === rowNode) {\n res = item;\n break;\n }\n }\n if (!res && autoCreate) {\n res = {\n rowNode: rowNode\n };\n this.cacheItems.push(res);\n }\n if (res) {\n this.stampCacheItem(res);\n }\n return res;\n };\n DetailRowCompCache.prototype.stampCacheItem = function (item) {\n item.lastAccessedTime = new Date().getTime();\n };\n DetailRowCompCache.prototype.destroyFullWidthRow = function (comp) {\n if (comp && comp.destroy) {\n comp.destroy();\n }\n };\n DetailRowCompCache.prototype.purgeCache = function (startIndex) {\n // delete all rows past the index of interest\n for (var i = startIndex; i < this.cacheItems.length; i++) {\n var item = this.cacheItems[i];\n this.destroyFullWidthRow(item.center);\n this.destroyFullWidthRow(item.left);\n this.destroyFullWidthRow(item.right);\n }\n // change the length of the array so it no longer contains the deleted items\n if (this.cacheItems.length > startIndex) {\n this.cacheItems.length = startIndex;\n }\n };\n DetailRowCompCache.prototype.get = function (rowNode, pinned) {\n if (!rowNode.detail) {\n return undefined;\n }\n var item = this.getCacheItem(rowNode);\n var res;\n if (item) {\n switch (pinned) {\n case Constants.PINNED_LEFT:\n if (item.left) {\n res = item.left;\n item.left = undefined;\n }\n break;\n case Constants.PINNED_RIGHT:\n if (item.right) {\n res = item.right;\n item.right = undefined;\n }\n break;\n default:\n if (item.center) {\n res = item.center;\n item.center = undefined;\n }\n break;\n }\n }\n return res;\n };\n DetailRowCompCache.prototype.destroy = function () {\n this.purgeCache(0);\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], DetailRowCompCache.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], DetailRowCompCache.prototype, \"postConstruct\", null);\n __decorate([\n PreDestroy\n ], DetailRowCompCache.prototype, \"destroy\", null);\n DetailRowCompCache = __decorate([\n Bean('detailRowCompCache')\n ], DetailRowCompCache);\n return DetailRowCompCache;\n}());\nexport { DetailRowCompCache };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { GridOptionsWrapper } from \"./gridOptionsWrapper\";\nimport { SelectionController } from \"./selectionController\";\nimport { ColumnApi } from \"./columnController/columnApi\";\nimport { ColumnController } from \"./columnController/columnController\";\nimport { RowRenderer } from \"./rendering/rowRenderer\";\nimport { HeaderRootComp } from \"./headerRendering/headerRootComp\";\nimport { FilterManager } from \"./filter/filterManager\";\nimport { ValueService } from \"./valueService/valueService\";\nimport { EventService } from \"./eventService\";\nimport { GridPanel } from \"./gridPanel/gridPanel\";\nimport { GridApi } from \"./gridApi\";\nimport { ColumnFactory } from \"./columnController/columnFactory\";\nimport { DisplayedGroupCreator } from \"./columnController/displayedGroupCreator\";\nimport { ExpressionService } from \"./valueService/expressionService\";\nimport { TemplateService } from \"./templateService\";\nimport { PopupService } from \"./widgets/popupService\";\nimport { Logger, LoggerFactory } from \"./logger\";\nimport { ColumnUtils } from \"./columnController/columnUtils\";\nimport { AutoWidthCalculator } from \"./rendering/autoWidthCalculator\";\nimport { HorizontalResizeService } from \"./headerRendering/horizontalResizeService\";\nimport { Context } from \"./context/context\";\nimport { GridCore } from \"./gridCore\";\nimport { StandardMenuFactory } from \"./headerRendering/standardMenu\";\nimport { DragAndDropService } from \"./dragAndDrop/dragAndDropService\";\nimport { DragService } from \"./dragAndDrop/dragService\";\nimport { SortController } from \"./sortController\";\nimport { FocusedCellController } from \"./focusedCellController\";\nimport { MouseEventService } from \"./gridPanel/mouseEventService\";\nimport { CellNavigationService } from \"./cellNavigationService\";\nimport { Events } from \"./events\";\nimport { CellRendererFactory } from \"./rendering/cellRendererFactory\";\nimport { ValueFormatterService } from \"./rendering/valueFormatterService\";\nimport { AgCheckbox } from \"./widgets/agCheckbox\";\nimport { AgRadioButton } from \"./widgets/agRadioButton\";\nimport { VanillaFrameworkOverrides } from \"./vanillaFrameworkOverrides\";\nimport { ScrollVisibleService } from \"./gridPanel/scrollVisibleService\";\nimport { StylingService } from \"./styling/stylingService\";\nimport { ColumnHoverService } from \"./rendering/columnHoverService\";\nimport { ColumnAnimationService } from \"./rendering/columnAnimationService\";\nimport { AutoGroupColService } from \"./columnController/autoGroupColService\";\nimport { PaginationProxy } from \"./pagination/paginationProxy\";\nimport { PaginationAutoPageSizeService } from \"./pagination/paginationAutoPageSizeService\";\nimport { Constants } from \"./constants\";\nimport { ValueCache } from \"./valueService/valueCache\";\nimport { ChangeDetectionService } from \"./valueService/changeDetectionService\";\nimport { AlignedGridsService } from \"./alignedGridsService\";\nimport { UserComponentFactory } from \"./components/framework/userComponentFactory\";\nimport { UserComponentRegistry } from \"./components/framework/userComponentRegistry\";\nimport { AgComponentUtils } from \"./components/framework/agComponentUtils\";\nimport { ComponentMetadataProvider } from \"./components/framework/componentMetadataProvider\";\nimport { Beans } from \"./rendering/beans\";\nimport { Environment } from \"./environment\";\nimport { AnimationFrameService } from \"./misc/animationFrameService\";\nimport { NavigationService } from \"./gridPanel/navigationService\";\nimport { MaxDivHeightScaler } from \"./rendering/maxDivHeightScaler\";\nimport { SelectableService } from \"./rowNodes/selectableService\";\nimport { AutoHeightCalculator } from \"./rendering/autoHeightCalculator\";\nimport { PaginationComp } from \"./pagination/paginationComp\";\nimport { ResizeObserverService } from \"./misc/resizeObserverService\";\nimport { TooltipManager } from \"./widgets/tooltipManager\";\nimport { OverlayWrapperComponent } from \"./rendering/overlays/overlayWrapperComponent\";\nimport { AgGroupComponent } from \"./widgets/agGroupComponent\";\nimport { AgDialog } from \"./widgets/agDialog\";\nimport { AgPanel } from \"./widgets/agPanel\";\nimport { AgInputTextField } from \"./widgets/agInputTextField\";\nimport { AgInputTextArea } from \"./widgets/agInputTextArea\";\nimport { AgSlider } from \"./widgets/agSlider\";\nimport { _ } from \"./utils\";\nimport { AgColorPicker } from \"./widgets/agColorPicker\";\nimport { AgInputNumberField } from \"./widgets/agInputNumberField\";\nimport { AgInputRange } from \"./widgets/agInputRange\";\nimport { AgSelect } from \"./widgets/agSelect\";\nimport { AgAngleSelect } from \"./widgets/agAngleSelect\";\nimport { AgToggleButton } from \"./widgets/agToggleButton\";\nimport { DetailRowCompCache } from \"./rendering/detailRowCompCache\";\nimport { RowPositionUtils } from \"./entities/rowPosition\";\nimport { CellPositionUtils } from \"./entities/cellPosition\";\nimport { PinnedRowModel } from \"./pinnedRowModel/pinnedRowModel\";\nimport { ModuleRegistry } from \"./modules/moduleRegistry\";\nimport { ModuleNames } from \"./modules/moduleNames\";\nvar Grid = /** @class */ (function () {\n function Grid(eGridDiv, gridOptions, params) {\n if (!eGridDiv) {\n console.error('ag-Grid: no div element provided to the grid');\n return;\n }\n if (!gridOptions) {\n console.error('ag-Grid: no gridOptions provided to the grid');\n return;\n }\n var debug = !!gridOptions.debug;\n this.gridOptions = gridOptions;\n var registeredModules = this.getRegisteredModules(params);\n var beanClasses = this.createBeansList(registeredModules);\n var agStackComponents = this.createAgStackComponentsList(registeredModules);\n var providedBeanInstances = this.createProvidedBeans(eGridDiv, params);\n if (!beanClasses) {\n return;\n } // happens when no row model found\n var contextParams = {\n providedBeanInstances: providedBeanInstances,\n beanClasses: beanClasses,\n components: agStackComponents,\n debug: debug\n };\n this.logger = new Logger('ag-Grid', function () { return gridOptions.debug; });\n var contextLogger = new Logger('Context', function () { return contextParams.debug; });\n this.context = new Context(contextParams, contextLogger);\n this.registerModuleUserComponents(registeredModules);\n var gridCore = new GridCore();\n this.context.wireBean(gridCore);\n this.setColumnsAndData();\n this.dispatchGridReadyEvent(gridOptions);\n var isEnterprise = ModuleRegistry.isRegistered(ModuleNames.EnterpriseCoreModule);\n this.logger.log(\"initialised successfully, enterprise = \" + isEnterprise);\n }\n Grid.prototype.getRegisteredModules = function (params) {\n var passedViaConstructor = params ? params.modules : null;\n var registered = ModuleRegistry.getRegisteredModules();\n var allModules = [];\n var mapNames = {};\n // adds to list and removes duplicates\n function addModule(module) {\n function addIndividualModule(module) {\n if (!mapNames[module.moduleName]) {\n mapNames[module.moduleName] = true;\n allModules.push(module);\n ModuleRegistry.register(module); // Niall / Sean - my addition\n }\n }\n addIndividualModule(module);\n if (module.dependantModules) {\n module.dependantModules.forEach(addModule); // Niall / Sean - my addition\n }\n }\n if (passedViaConstructor) {\n passedViaConstructor.forEach(addModule);\n }\n if (registered) {\n registered.forEach(addModule);\n }\n return allModules;\n };\n Grid.prototype.registerModuleUserComponents = function (registeredModules) {\n var userComponentRegistry = this.context.getBean('userComponentRegistry');\n var moduleUserComps = this.extractModuleEntity(registeredModules, function (module) { return module.userComponents ? module.userComponents : []; });\n moduleUserComps.forEach(function (compMeta) {\n userComponentRegistry.registerDefaultComponent(compMeta.componentName, compMeta.componentClass);\n });\n };\n Grid.prototype.createProvidedBeans = function (eGridDiv, params) {\n var frameworkOverrides = params ? params.frameworkOverrides : null;\n if (_.missing(frameworkOverrides)) {\n frameworkOverrides = new VanillaFrameworkOverrides();\n }\n var seed = {\n gridOptions: this.gridOptions,\n eGridDiv: eGridDiv,\n $scope: params ? params.$scope : null,\n $compile: params ? params.$compile : null,\n quickFilterOnScope: params ? params.quickFilterOnScope : null,\n globalEventListener: params ? params.globalEventListener : null,\n frameworkOverrides: frameworkOverrides\n };\n if (params && params.providedBeanInstances) {\n _.assign(seed, params.providedBeanInstances);\n }\n return seed;\n };\n Grid.prototype.createAgStackComponentsList = function (registeredModules) {\n var components = [\n { componentName: 'AgCheckbox', componentClass: AgCheckbox },\n { componentName: 'AgRadioButton', componentClass: AgRadioButton },\n { componentName: 'AgToggleButton', componentClass: AgToggleButton },\n { componentName: 'AgInputTextField', componentClass: AgInputTextField },\n { componentName: 'AgInputTextArea', componentClass: AgInputTextArea },\n { componentName: 'AgInputNumberField', componentClass: AgInputNumberField },\n { componentName: 'AgInputRange', componentClass: AgInputRange },\n { componentName: 'AgSelect', componentClass: AgSelect },\n { componentName: 'AgSlider', componentClass: AgSlider },\n { componentName: 'AgAngleSelect', componentClass: AgAngleSelect },\n { componentName: 'AgColorPicker', componentClass: AgColorPicker },\n { componentName: 'AgGridComp', componentClass: GridPanel },\n { componentName: 'AgHeaderRoot', componentClass: HeaderRootComp },\n { componentName: 'AgPagination', componentClass: PaginationComp },\n { componentName: 'AgOverlayWrapper', componentClass: OverlayWrapperComponent },\n { componentName: 'AgGroupComponent', componentClass: AgGroupComponent },\n { componentName: 'AgPanel', componentClass: AgPanel },\n { componentName: 'AgDialog', componentClass: AgDialog }\n ];\n var moduleAgStackComps = this.extractModuleEntity(registeredModules, function (module) { return module.agStackComponents ? module.agStackComponents : []; });\n components = components.concat(moduleAgStackComps);\n return components;\n };\n Grid.prototype.createBeansList = function (registeredModules) {\n var rowModelClass = this.getRowModelClass(registeredModules);\n if (!rowModelClass) {\n return undefined;\n }\n // beans should only contain SERVICES, it should NEVER contain COMPONENTS\n var beans = [\n rowModelClass, Beans, RowPositionUtils, CellPositionUtils,\n PaginationAutoPageSizeService, GridApi, UserComponentRegistry, AgComponentUtils,\n ComponentMetadataProvider, ResizeObserverService, UserComponentFactory,\n MaxDivHeightScaler, AutoHeightCalculator, CellRendererFactory, HorizontalResizeService,\n PinnedRowModel, DragService, DisplayedGroupCreator, EventService, GridOptionsWrapper, PopupService,\n SelectionController, FilterManager, ColumnController, PaginationProxy, RowRenderer, ExpressionService,\n ColumnFactory, TemplateService, AlignedGridsService,\n NavigationService, ValueCache, ValueService, LoggerFactory, ColumnUtils, AutoWidthCalculator,\n StandardMenuFactory, DragAndDropService, ColumnApi, FocusedCellController, MouseEventService, Environment,\n CellNavigationService, ValueFormatterService, StylingService, ScrollVisibleService, SortController,\n ColumnHoverService, ColumnAnimationService, SelectableService, AutoGroupColService,\n ChangeDetectionService, AnimationFrameService, TooltipManager, DetailRowCompCache\n ];\n var moduleBeans = this.extractModuleEntity(registeredModules, function (module) { return module.beans ? module.beans : []; });\n beans.push.apply(beans, moduleBeans);\n // check for duplicates, as different modules could include the same beans that\n // they depend on, eg ClientSideRowModel in enterprise, and ClientSideRowModel in community\n var beansNoDuplicates = [];\n beans.forEach(function (bean) {\n if (beansNoDuplicates.indexOf(bean) < 0) {\n beansNoDuplicates.push(bean);\n }\n });\n return beansNoDuplicates;\n };\n Grid.prototype.extractModuleEntity = function (moduleEntities, extractor) {\n return [].concat.apply([], moduleEntities.map(extractor));\n };\n Grid.prototype.setColumnsAndData = function () {\n var gridOptionsWrapper = this.context.getBean('gridOptionsWrapper');\n var columnController = this.context.getBean('columnController');\n var columnDefs = gridOptionsWrapper.getColumnDefs();\n if (_.exists(columnDefs)) {\n columnController.setColumnDefs(columnDefs, \"gridInitializing\");\n }\n var rowModel = this.context.getBean('rowModel');\n rowModel.start();\n };\n Grid.prototype.dispatchGridReadyEvent = function (gridOptions) {\n var eventService = this.context.getBean('eventService');\n var readyEvent = {\n type: Events.EVENT_GRID_READY,\n api: gridOptions.api,\n columnApi: gridOptions.columnApi\n };\n eventService.dispatchEvent(readyEvent);\n };\n Grid.prototype.getRowModelClass = function (registeredModules) {\n var rowModelType = this.gridOptions.rowModelType;\n //TODO: temporary measure before 'enterprise' is completely removed (similar handling in gridOptionsWrapper is also required)\n if (rowModelType === 'enterprise') {\n console.warn(\"ag-Grid: enterprise rowModel deprecated. Should now be called server side row model instead.\");\n rowModelType = Constants.ROW_MODEL_TYPE_SERVER_SIDE;\n }\n if (rowModelType === 'normal') {\n console.warn(\"ag-Grid: normal rowModel deprecated. Should now be called client side row model instead.\");\n rowModelType = Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n }\n // default to client side\n if (!rowModelType) {\n rowModelType = Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n }\n var rowModelClasses = {};\n registeredModules.forEach(function (module) {\n _.iterateObject(module.rowModels, function (key, value) {\n rowModelClasses[key] = value;\n });\n });\n var rowModelClass = rowModelClasses[rowModelType];\n if (_.exists(rowModelClass)) {\n return rowModelClass;\n }\n else {\n if (rowModelType === Constants.ROW_MODEL_TYPE_INFINITE) {\n console.error(\"ag-Grid: Row Model \\\"Infinite\\\" not found. Please ensure the \"\n + \"InfiniteRowModelModule is loaded using: import '@ag-grid-community/infinite-row-model';\");\n }\n console.error('ag-Grid: could not find matching row model for rowModelType ' + rowModelType);\n if (rowModelType === Constants.ROW_MODEL_TYPE_VIEWPORT) {\n console.error(\"ag-Grid: Row Model \\\"Viewport\\\" not found. For this row model to work you must \" +\n \"a) be using ag-Grid Enterprise and \" +\n \"b) ensure ViewportRowModelModule is \" +\n \"loaded using: import '@ag-grid-enterprise/viewport-row-model;\");\n }\n if (rowModelType === Constants.ROW_MODEL_TYPE_SERVER_SIDE) {\n console.error(\"ag-Grid: Row Model \\\"Server Side\\\" not found. For this row model to work you must \" +\n \"a) be using ag-Grid Enterprise and \" +\n \"b) ensure ServerSideRowModelModule is \" +\n \"loaded using: import '@ag-grid-enterprise/server-server-side-row-model';\");\n }\n if (rowModelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n console.error(\"ag-Grid: Row Model \\\"Client Side\\\" not found. Please ensure the \"\n + \"ClientSideRowModelModule is loaded using: import '@ag-grid-community/client-side-row-model';\");\n }\n return undefined;\n }\n };\n Grid.prototype.destroy = function () {\n this.gridOptions.api.destroy();\n };\n return Grid;\n}());\nexport { Grid };\n","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nvar hadKeyboardEvent = true;\nvar hadFocusVisibleRecently = false;\nvar hadFocusVisibleRecentlyTimeout = null;\nvar inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @return {boolean}\n */\n\nfunction focusTriggersKeyboardModality(node) {\n var type = node.type,\n tagName = node.tagName;\n\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n\n if (node.isContentEditable) {\n return true;\n }\n\n return false;\n}\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\n\n\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n\n hadKeyboardEvent = true;\n}\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\n\n\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\n\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\n\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\n\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\n\nfunction isFocusVisible(event) {\n var target = event.target;\n\n try {\n return target.matches(':focus-visible');\n } catch (error) {// browsers not implementing :focus-visible will throw a SyntaxError\n // we use our own heuristic for those browsers\n // rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n } // no need for validFocusTarget check. the user does that by attaching it to\n // focusable events only\n\n\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\n/**\n * Should be called if a blur event is fired on a focus-visible element\n */\n\n\nfunction handleBlurVisible() {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function () {\n hadFocusVisibleRecently = false;\n }, 100);\n}\n\nexport default function useIsFocusVisible() {\n var ref = React.useCallback(function (instance) {\n var node = ReactDOM.findDOMNode(instance);\n\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(isFocusVisible);\n }\n\n return {\n isFocusVisible: isFocusVisible,\n onBlurVisible: handleBlurVisible,\n ref: ref\n };\n}","import ownerDocument from './ownerDocument';\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc.defaultView || window;\n}","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { Events } from \"../events\";\nimport { HeaderRowComp, HeaderRowType } from \"./headerRowComp\";\nimport { BodyDropTarget } from \"./bodyDropTarget\";\nimport { _ } from \"../utils\";\nimport { Constants } from \"../constants\";\nvar HeaderContainer = /** @class */ (function () {\n function HeaderContainer(eContainer, eViewport, pinned) {\n this.headerRowComps = [];\n this.eContainer = eContainer;\n this.pinned = pinned;\n this.eViewport = eViewport;\n }\n HeaderContainer.prototype.registerGridComp = function (gridPanel) {\n this.setupDragAndDrop(gridPanel);\n };\n HeaderContainer.prototype.forEachHeaderElement = function (callback) {\n this.headerRowComps.forEach(function (headerRowComp) { return headerRowComp.forEachHeaderElement(callback); });\n };\n HeaderContainer.prototype.init = function () {\n this.scrollWidth = this.gridOptionsWrapper.getScrollbarWidth();\n // if value changes, then if not pivoting, we at least need to change the label eg from sum() to avg(),\n // if pivoting, then the columns have changed\n this.eventService.addEventListener(Events.EVENT_COLUMN_VALUE_CHANGED, this.onColumnValueChanged.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onColumnRowGroupChanged.bind(this));\n this.eventService.addEventListener(Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n this.eventService.addEventListener(Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n this.eventService.addEventListener(Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n };\n // if row group changes, that means we may need to add aggFuncs to the column headers,\n // if the grid goes from no aggregation (ie no grouping) to grouping\n HeaderContainer.prototype.onColumnRowGroupChanged = function () {\n this.onGridColumnsChanged();\n };\n // if the agg func of a column changes, then we may need to update the agg func in columns header\n HeaderContainer.prototype.onColumnValueChanged = function () {\n this.onGridColumnsChanged();\n };\n HeaderContainer.prototype.onColumnResized = function () {\n this.setWidthOfPinnedContainer();\n };\n HeaderContainer.prototype.onDisplayedColumnsChanged = function () {\n this.setWidthOfPinnedContainer();\n };\n HeaderContainer.prototype.onScrollVisibilityChanged = function () {\n this.setWidthOfPinnedContainer();\n };\n HeaderContainer.prototype.setWidthOfPinnedContainer = function () {\n var pinningLeft = this.pinned === Constants.PINNED_LEFT;\n var pinningRight = this.pinned === Constants.PINNED_RIGHT;\n var controller = this.columnController;\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n if (pinningLeft || pinningRight) {\n // size to fit all columns\n var width = controller[pinningLeft ? 'getPinnedLeftContainerWidth' : 'getPinnedRightContainerWidth']();\n // if there is a scroll showing (and taking up space, so Windows, and not iOS)\n // in the body, then we add extra space to keep header aligned with the body,\n // as body width fits the cols and the scrollbar\n var addPaddingForScrollbar = this.scrollVisibleService.isVerticalScrollShowing() && ((isRtl && pinningLeft) || (!isRtl && pinningRight));\n if (addPaddingForScrollbar) {\n width += this.scrollWidth;\n }\n _.setFixedWidth(this.eContainer, width);\n }\n };\n HeaderContainer.prototype.destroy = function () {\n this.removeHeaderRowComps();\n };\n HeaderContainer.prototype.getRowComps = function () {\n return this.headerRowComps;\n };\n // grid cols have changed - this also means the number of rows in the header can have\n // changed. so we remove all the old rows and insert new ones for a complete refresh\n HeaderContainer.prototype.onGridColumnsChanged = function () {\n this.removeAndCreateAllRowComps();\n };\n HeaderContainer.prototype.removeAndCreateAllRowComps = function () {\n this.removeHeaderRowComps();\n this.createHeaderRowComps();\n };\n // we expose this for gridOptions.api.refreshHeader() to call\n HeaderContainer.prototype.refresh = function () {\n this.removeAndCreateAllRowComps();\n };\n HeaderContainer.prototype.setupDragAndDrop = function (gridComp) {\n var dropContainer = this.eViewport ? this.eViewport : this.eContainer;\n var bodyDropTarget = new BodyDropTarget(this.pinned, dropContainer);\n this.context.wireBean(bodyDropTarget);\n bodyDropTarget.registerGridComp(gridComp);\n };\n HeaderContainer.prototype.removeHeaderRowComps = function () {\n this.headerRowComps.forEach(function (headerRowComp) {\n headerRowComp.destroy();\n });\n this.headerRowComps.length = 0;\n _.clearElement(this.eContainer);\n };\n HeaderContainer.prototype.createHeaderRowComps = function () {\n // if we are displaying header groups, then we have many rows here.\n // go through each row of the header, one by one.\n var rowCount = this.columnController.getHeaderRowCount();\n for (var dept = 0; dept < rowCount; dept++) {\n var groupRow = dept !== (rowCount - 1);\n var type = groupRow ? HeaderRowType.COLUMN_GROUP : HeaderRowType.COLUMN;\n var headerRowComp = new HeaderRowComp(dept, type, this.pinned, this.dropTarget);\n this.context.wireBean(headerRowComp);\n this.headerRowComps.push(headerRowComp);\n headerRowComp.getGui().setAttribute('aria-rowindex', this.headerRowComps.length.toString());\n this.eContainer.appendChild(headerRowComp.getGui());\n }\n var includeFloatingFilterRow = this.gridOptionsWrapper.isFloatingFilter() && !this.columnController.isPivotMode();\n if (includeFloatingFilterRow) {\n var headerRowComp = new HeaderRowComp(rowCount, HeaderRowType.FLOATING_FILTER, this.pinned, this.dropTarget);\n this.context.wireBean(headerRowComp);\n this.headerRowComps.push(headerRowComp);\n headerRowComp.getGui().setAttribute('aria-rowindex', this.headerRowComps.length.toString());\n this.eContainer.appendChild(headerRowComp.getGui());\n }\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], HeaderContainer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('context')\n ], HeaderContainer.prototype, \"context\", void 0);\n __decorate([\n Autowired('$scope')\n ], HeaderContainer.prototype, \"$scope\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], HeaderContainer.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('columnController')\n ], HeaderContainer.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], HeaderContainer.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('scrollVisibleService')\n ], HeaderContainer.prototype, \"scrollVisibleService\", void 0);\n __decorate([\n PostConstruct\n ], HeaderContainer.prototype, \"init\", null);\n return HeaderContainer;\n}());\nexport { HeaderContainer };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"./component\";\nimport { PostConstruct } from \"../context/context\";\nimport { _ } from \"../utils\";\nvar AgAbstractLabel = /** @class */ (function (_super) {\n __extends(AgAbstractLabel, _super);\n function AgAbstractLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.labelSeparator = '';\n _this.labelAlignment = 'left';\n _this.config = {};\n _this.label = '';\n return _this;\n }\n AgAbstractLabel.prototype.postConstruct = function () {\n _.addCssClass(this.getGui(), 'ag-labeled');\n var _a = this.config, labelSeparator = _a.labelSeparator, label = _a.label, labelWidth = _a.labelWidth, labelAlignment = _a.labelAlignment;\n if (labelSeparator != null) {\n this.setLabelSeparator(labelSeparator);\n }\n if (label != null) {\n this.setLabel(label);\n }\n if (labelWidth != null) {\n this.setLabelWidth(labelWidth);\n }\n this.setLabelAlignment(labelAlignment || this.labelAlignment);\n this.refreshLabel();\n };\n AgAbstractLabel.prototype.refreshLabel = function () {\n this.eLabel.innerText = this.label + this.labelSeparator;\n _.addOrRemoveCssClass(this.eLabel, 'ag-hidden', this.label === '');\n };\n AgAbstractLabel.prototype.setLabelSeparator = function (labelSeparator) {\n if (this.labelSeparator === labelSeparator) {\n return this;\n }\n this.labelSeparator = labelSeparator;\n if (this.label != null) {\n this.refreshLabel();\n }\n return this;\n };\n AgAbstractLabel.prototype.setLabel = function (label) {\n if (this.label === label) {\n return this;\n }\n this.label = label;\n this.refreshLabel();\n return this;\n };\n AgAbstractLabel.prototype.setLabelAlignment = function (alignment) {\n var eGui = this.getGui();\n _.addOrRemoveCssClass(eGui, 'ag-label-align-left', alignment === 'left');\n _.addOrRemoveCssClass(eGui, 'ag-label-align-right', alignment === 'right');\n _.addOrRemoveCssClass(eGui, 'ag-label-align-top', alignment === 'top');\n return this;\n };\n AgAbstractLabel.prototype.setLabelWidth = function (width) {\n if (this.label == null) {\n return this;\n }\n _.setElementWidth(this.eLabel, width);\n return this;\n };\n __decorate([\n PostConstruct\n ], AgAbstractLabel.prototype, \"postConstruct\", null);\n return AgAbstractLabel;\n}(Component));\nexport { AgAbstractLabel };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { BeanStub } from \"../context/beanStub\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nvar HoverFeature = /** @class */ (function (_super) {\n __extends(HoverFeature, _super);\n function HoverFeature(columns, element) {\n var _this = _super.call(this) || this;\n _this.columns = columns;\n _this.element = element;\n return _this;\n }\n HoverFeature.prototype.postConstruct = function () {\n this.addMouseHoverListeners();\n };\n HoverFeature.prototype.addMouseHoverListeners = function () {\n this.addDestroyableEventListener(this.element, 'mouseout', this.onMouseOut.bind(this));\n this.addDestroyableEventListener(this.element, 'mouseover', this.onMouseOver.bind(this));\n };\n HoverFeature.prototype.onMouseOut = function () {\n this.columnHoverService.clearMouseOver();\n };\n HoverFeature.prototype.onMouseOver = function () {\n this.columnHoverService.setMouseOver(this.columns);\n };\n __decorate([\n Autowired('columnHoverService')\n ], HoverFeature.prototype, \"columnHoverService\", void 0);\n __decorate([\n PostConstruct\n ], HoverFeature.prototype, \"postConstruct\", null);\n return HoverFeature;\n}(BeanStub));\nexport { HoverFeature };\n","export default function buildMatchPatternFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var matchResult = string.match(args.matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n\n if (!parseResult) {\n return null;\n }\n\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport useControlled from '../utils/useControlled';\nimport useFormControl from '../FormControl/useFormControl';\nimport withStyles from '../styles/withStyles';\nimport IconButton from '../IconButton';\nexport var styles = {\n root: {\n padding: 9\n },\n checked: {},\n disabled: {},\n input: {\n cursor: 'inherit',\n position: 'absolute',\n opacity: 0,\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n zIndex: 1\n }\n};\n/**\n * @ignore - internal component.\n */\n\nvar SwitchBase = /*#__PURE__*/React.forwardRef(function SwitchBase(props, ref) {\n var autoFocus = props.autoFocus,\n checkedProp = props.checked,\n checkedIcon = props.checkedIcon,\n classes = props.classes,\n className = props.className,\n defaultChecked = props.defaultChecked,\n disabledProp = props.disabled,\n icon = props.icon,\n id = props.id,\n inputProps = props.inputProps,\n inputRef = props.inputRef,\n name = props.name,\n onBlur = props.onBlur,\n onChange = props.onChange,\n onFocus = props.onFocus,\n readOnly = props.readOnly,\n required = props.required,\n tabIndex = props.tabIndex,\n type = props.type,\n value = props.value,\n other = _objectWithoutProperties(props, [\"autoFocus\", \"checked\", \"checkedIcon\", \"classes\", \"className\", \"defaultChecked\", \"disabled\", \"icon\", \"id\", \"inputProps\", \"inputRef\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"readOnly\", \"required\", \"tabIndex\", \"type\", \"value\"]);\n\n var _useControlled = useControlled({\n controlled: checkedProp,\n default: Boolean(defaultChecked),\n name: 'SwitchBase',\n state: 'checked'\n }),\n _useControlled2 = _slicedToArray(_useControlled, 2),\n checked = _useControlled2[0],\n setCheckedState = _useControlled2[1];\n\n var muiFormControl = useFormControl();\n\n var handleFocus = function handleFocus(event) {\n if (onFocus) {\n onFocus(event);\n }\n\n if (muiFormControl && muiFormControl.onFocus) {\n muiFormControl.onFocus(event);\n }\n };\n\n var handleBlur = function handleBlur(event) {\n if (onBlur) {\n onBlur(event);\n }\n\n if (muiFormControl && muiFormControl.onBlur) {\n muiFormControl.onBlur(event);\n }\n };\n\n var handleInputChange = function handleInputChange(event) {\n var newChecked = event.target.checked;\n setCheckedState(newChecked);\n\n if (onChange) {\n // TODO v5: remove the second argument.\n onChange(event, newChecked);\n }\n };\n\n var disabled = disabledProp;\n\n if (muiFormControl) {\n if (typeof disabled === 'undefined') {\n disabled = muiFormControl.disabled;\n }\n }\n\n var hasLabelFor = type === 'checkbox' || type === 'radio';\n return /*#__PURE__*/React.createElement(IconButton, _extends({\n component: \"span\",\n className: clsx(classes.root, className, checked && classes.checked, disabled && classes.disabled),\n disabled: disabled,\n tabIndex: null,\n role: undefined,\n onFocus: handleFocus,\n onBlur: handleBlur,\n ref: ref\n }, other), /*#__PURE__*/React.createElement(\"input\", _extends({\n autoFocus: autoFocus,\n checked: checkedProp,\n defaultChecked: defaultChecked,\n className: classes.input,\n disabled: disabled,\n id: hasLabelFor && id,\n name: name,\n onChange: handleInputChange,\n readOnly: readOnly,\n ref: inputRef,\n required: required,\n tabIndex: tabIndex,\n type: type,\n value: value\n }, inputProps)), checked ? checkedIcon : icon);\n}); // NB: If changed, please update Checkbox, Switch and Radio\n// so that the API documentation is updated.\n\nprocess.env.NODE_ENV !== \"production\" ? SwitchBase.propTypes = {\n /**\n * If `true`, the `input` element will be focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n\n /**\n * The icon to display when the component is checked.\n */\n checkedIcon: PropTypes.node.isRequired,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * @ignore\n */\n defaultChecked: PropTypes.bool,\n\n /**\n * If `true`, the switch will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * The icon to display when the component is unchecked.\n */\n icon: PropTypes.node.isRequired,\n\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n\n /*\n * @ignore\n */\n name: PropTypes.string,\n\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n\n /**\n * Callback fired when the state is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n\n /**\n * If `true`, the `input` element will be required.\n */\n required: PropTypes.bool,\n\n /**\n * @ignore\n */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * The input component prop `type`.\n */\n type: PropTypes.string.isRequired,\n\n /**\n * The value of the component.\n */\n value: PropTypes.any\n} : void 0;\nexport default withStyles(styles, {\n name: 'PrivateSwitchBase'\n})(SwitchBase);","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport startOfDay from '../startOfDay/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MILLISECONDS_IN_DAY = 86400000;\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * var result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\n\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight); // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import React from 'react';\nexport default React.createContext(null);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n userSelect: 'none',\n width: '1em',\n height: '1em',\n display: 'inline-block',\n fill: 'currentColor',\n flexShrink: 0,\n fontSize: theme.typography.pxToRem(24),\n transition: theme.transitions.create('fill', {\n duration: theme.transitions.duration.shorter\n })\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main\n },\n\n /* Styles applied to the root element if `color=\"action\"`. */\n colorAction: {\n color: theme.palette.action.active\n },\n\n /* Styles applied to the root element if `color=\"error\"`. */\n colorError: {\n color: theme.palette.error.main\n },\n\n /* Styles applied to the root element if `color=\"disabled\"`. */\n colorDisabled: {\n color: theme.palette.action.disabled\n },\n\n /* Styles applied to the root element if `fontSize=\"inherit\"`. */\n fontSizeInherit: {\n fontSize: 'inherit'\n },\n\n /* Styles applied to the root element if `fontSize=\"small\"`. */\n fontSizeSmall: {\n fontSize: theme.typography.pxToRem(20)\n },\n\n /* Styles applied to the root element if `fontSize=\"large\"`. */\n fontSizeLarge: {\n fontSize: theme.typography.pxToRem(35)\n }\n };\n};\nvar SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'inherit' : _props$color,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'svg' : _props$component,\n _props$fontSize = props.fontSize,\n fontSize = _props$fontSize === void 0 ? 'default' : _props$fontSize,\n htmlColor = props.htmlColor,\n titleAccess = props.titleAccess,\n _props$viewBox = props.viewBox,\n viewBox = _props$viewBox === void 0 ? '0 0 24 24' : _props$viewBox,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"titleAccess\", \"viewBox\"]);\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, color !== 'inherit' && classes[\"color\".concat(capitalize(color))], fontSize !== 'default' && classes[\"fontSize\".concat(capitalize(fontSize))]),\n focusable: \"false\",\n viewBox: viewBox,\n color: htmlColor,\n \"aria-hidden\": titleAccess ? undefined : true,\n role: titleAccess ? 'img' : undefined,\n ref: ref\n }, other), children, titleAccess ? /*#__PURE__*/React.createElement(\"title\", null, titleAccess) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Node passed into the SVG element.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n */\n color: PropTypes.oneOf(['action', 'disabled', 'error', 'inherit', 'primary', 'secondary']),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n */\n fontSize: PropTypes.oneOf(['default', 'inherit', 'large', 'small']),\n\n /**\n * Applies a color attribute to the SVG element.\n */\n htmlColor: PropTypes.string,\n\n /**\n * The shape-rendering attribute. The behavior of the different options is described on the\n * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n * If you are having issues with blurry icons you should investigate this property.\n */\n shapeRendering: PropTypes.string,\n\n /**\n * Provides a human-readable title for the element that contains it.\n * https://www.w3.org/TR/SVG-access/#Equivalent\n */\n titleAccess: PropTypes.string,\n\n /**\n * Allows you to redefine what the coordinates without units mean inside an SVG element.\n * For example, if the SVG element is 500 (width) by 200 (height),\n * and you pass viewBox=\"0 0 50 20\",\n * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n * to bottom right (50,20) and each unit will be worth 10px.\n */\n viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default withStyles(styles, {\n name: 'MuiSvgIcon'\n})(SvgIcon);","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 00-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n}), 'Edit');\n\nexports.default = _default;","import toInteger from '../_lib/toInteger/index.js';\nimport addMonths from '../addMonths/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * var result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\n\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z\"\n}), 'Help');\n\nexports.default = _default;","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * var result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\n\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\n\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports);\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports);\n global.String = mod.exports;\n }\n})(this, function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var camelize = exports.camelize = function camelize(str) {\n return str.split(' ').map(function (word) {\n return word.charAt(0).toUpperCase() + word.slice(1);\n }).join('');\n };\n});","export { default } from './InputBase';","export { default } from './StylesProvider';\nexport * from './StylesProvider';","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar ColDefUtil = /** @class */ (function () {\n function ColDefUtil() {\n }\n ColDefUtil.STRING_PROPERTIES = [\n 'headerName',\n 'columnGroupShow',\n 'headerClass',\n 'toolPanelClass',\n 'headerValueGetter',\n 'pivotKeys',\n 'groupId',\n 'colId',\n 'sort',\n 'field',\n 'type',\n 'tooltipComponent',\n 'tooltipField',\n 'headerTooltip',\n 'cellClass',\n 'showRowGroup',\n 'template',\n 'templateUrl',\n 'filter',\n 'aggFunc',\n 'cellRenderer',\n 'cellEditor',\n 'pinned',\n 'chartDataType'\n ];\n ColDefUtil.OBJECT_PROPERTIES = [\n 'headerGroupComponent',\n 'headerGroupComponentFramework',\n 'headerGroupComponentParams',\n 'cellStyle',\n 'cellRendererParams',\n 'cellEditorFramework',\n 'cellEditorParams',\n 'pinnedRowCellRendererFramework',\n 'pinnedRowCellRendererParams',\n 'filterFramework',\n 'filterParams',\n 'pivotValueColumn',\n 'headerComponent',\n 'headerComponentFramework',\n 'headerComponentParams',\n 'floatingFilterComponent',\n 'floatingFilterComponentParams',\n 'floatingFilterComponentFramework',\n 'tooltipComponent',\n 'tooltipComponentParams',\n 'tooltipComponentFramework',\n 'refData'\n ];\n ColDefUtil.ARRAY_PROPERTIES = [\n 'children',\n 'sortingOrder',\n 'allowedAggFuncs',\n 'menuTabs',\n 'pivotTotalColumnIds',\n 'cellClassRules',\n 'icons'\n ];\n ColDefUtil.NUMBER_PROPERTIES = [\n 'sortedAt',\n 'width',\n 'minWidth',\n 'maxWidth',\n 'rowGroupIndex',\n 'pivotIndex'\n ];\n ColDefUtil.BOOLEAN_PROPERTIES = [\n 'suppressCellFlash',\n 'suppressColumnsToolPanel',\n 'suppressFiltersToolPanel',\n 'openByDefault',\n 'marryChildren',\n 'hide',\n 'rowGroup',\n 'pivot',\n 'checkboxSelection',\n 'headerCheckboxSelection',\n 'headerCheckboxSelectionFilteredOnly',\n 'suppressMenu',\n 'suppressSorting',\n 'suppressMovable',\n 'suppressFilter',\n 'lockPosition',\n 'lockVisible',\n 'lockPinned',\n 'unSortIcon',\n 'suppressSizeToFit',\n 'suppressResize',\n 'suppressAutoSize',\n 'enableRowGroup',\n 'enablePivot',\n 'enableValue',\n 'editable',\n 'suppressPaste',\n 'suppressNavigable',\n 'enableCellChangeFlash',\n 'rowDrag',\n 'dndSource',\n 'autoHeight',\n 'sortable',\n 'resizable',\n 'singleClickEdit'\n ];\n ColDefUtil.FUNCTION_PROPERTIES = [\n 'dndSourceOnRowDrag',\n 'valueGetter',\n 'valueSetter',\n 'filterValueGetter',\n 'keyCreator',\n 'cellRenderer',\n 'cellRendererFramework',\n 'pinnedRowCellRenderer',\n 'valueFormatter',\n 'pinnedRowValueFormatter',\n 'valueParser',\n 'comparator',\n 'equals',\n 'pivotComparator',\n 'suppressKeyboardEvent',\n 'colSpan',\n 'rowSpan',\n 'getQuickFilterText',\n 'newValueHandler',\n 'onCellValueChanged',\n 'onCellClicked',\n 'onCellDoubleClicked',\n 'onCellContextMenu',\n 'tooltip',\n 'tooltipValueGetter',\n 'tooltipComponent',\n 'tooltipComponentFramework',\n 'cellRendererSelector',\n 'cellEditorSelector'\n ];\n ColDefUtil.ALL_PROPERTIES = ColDefUtil.ARRAY_PROPERTIES\n .concat(ColDefUtil.OBJECT_PROPERTIES)\n .concat(ColDefUtil.STRING_PROPERTIES)\n .concat(ColDefUtil.NUMBER_PROPERTIES)\n .concat(ColDefUtil.FUNCTION_PROPERTIES)\n .concat(ColDefUtil.BOOLEAN_PROPERTIES);\n // used when doing property checks - this causes noise when using frameworks which can add their own fw specific\n // properties to colDefs, gridOptions etc\n ColDefUtil.FRAMEWORK_PROPERTIES = ['__ob__', '__metadata__', 'mappedColumnProperties', 'hasChildColumns',\n 'toColDef', 'createColDefFromGridColumn'];\n return ColDefUtil;\n}());\nexport { ColDefUtil };\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","var nodejsCustomInspectSymbol = typeof Symbol === 'function' && typeof Symbol.for === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined;\nexport default nodejsCustomInspectSymbol;\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","exports.AgGridReact = require('./lib/agGridReact').AgGridReact;\nexports.AgGridColumn = require('./lib/agGridColumn').AgGridColumn;\n","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z\"\n}), 'KeyboardArrowRight');","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z\"\n}), 'KeyboardArrowLeft');","import startOfDay from '../startOfDay/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day?\n *\n * @description\n * Are the given dates in the same day?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n */\n\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","/*\n *\n * Copryright 2018, Craig Condon\n * Licensed under MIT\n *\n * Filter JavaScript objects with mongodb queries\n */\n\n/**\n */\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\n/**\n */\n\nfunction isArray(value) {\n return Object.prototype.toString.call(value) === '[object Array]';\n}\n\n/**\n */\n\nfunction comparable(value) {\n if (value instanceof Date) {\n return value.getTime();\n } else if (isArray(value)) {\n return value.map(comparable);\n } else if (value && typeof value.toJSON === 'function') {\n return value.toJSON();\n } else {\n return value;\n }\n}\n\nfunction get(obj, key) {\n return isFunction(obj.get) ? obj.get(key) : obj[key];\n}\n\n/**\n */\n\nfunction or(validator) {\n return function(a, b) {\n if (!isArray(b) || !b.length) {\n return validator(a, b);\n }\n for (var i = 0, n = b.length; i < n; i++) {\n if (validator(a, get(b,i))) return true;\n }\n return false;\n }\n}\n\n/**\n */\n\nfunction and(validator) {\n return function(a, b) {\n if (!isArray(b) || !b.length) {\n return validator(a, b);\n }\n for (var i = 0, n = b.length; i < n; i++) {\n if (!validator(a, get(b, i))) return false;\n }\n return true;\n };\n}\n\nfunction validate(validator, b, k, o) {\n return validator.v(validator.a, b, k, o);\n}\n\nvar OPERATORS = {\n\n /**\n */\n\n $eq: or(function(a, b) {\n return a(b);\n }),\n\n /**\n */\n\n $ne: and(function(a, b) {\n return !a(b);\n }),\n\n /**\n */\n\n $gt: or(function(a, b) {\n return compare(comparable(b), a) > 0;\n }),\n\n /**\n */\n\n $gte: or(function(a, b) {\n return compare(comparable(b), a) >= 0;\n }),\n\n /**\n */\n\n $lt: or(function(a, b) {\n return compare(comparable(b), a) < 0;\n }),\n\n /**\n */\n\n $lte: or(function(a, b) {\n return compare(comparable(b), a) <= 0;\n }),\n\n /**\n */\n\n $mod: or(function(a, b) {\n return b % a[0] == a[1];\n }),\n\n /**\n */\n\n $in: function(a, b) {\n\n if (b instanceof Array) {\n for (var i = b.length; i--;) {\n if (~a.indexOf(comparable(get(b, i)))) {\n return true;\n }\n }\n } else {\n var comparableB = comparable(b);\n if (comparableB === b && typeof b === 'object') {\n for (var i = a.length; i--;) {\n if (String(a[i]) === String(b) && String(b) !== '[object Object]') {\n return true;\n }\n }\n }\n\n /*\n Handles documents that are undefined, whilst also\n having a 'null' element in the parameters to $in.\n */\n if (typeof comparableB == 'undefined') {\n for (var i = a.length; i--;) {\n if (a[i] == null) {\n return true;\n }\n }\n }\n\n /*\n Handles the case of {'field': {$in: [/regexp1/, /regexp2/, ...]}}\n */\n for (var i = a.length; i--;) {\n var validator = createRootValidator(get(a, i), undefined);\n var result = validate(validator, b, i, a);\n if ((result) && (String(result) !== '[object Object]') && (String(b) !== '[object Object]')) {\n return true;\n }\n }\n\n return !!~a.indexOf(comparableB);\n }\n\n return false;\n },\n\n /**\n */\n\n $nin: function(a, b, k, o) {\n return !OPERATORS.$in(a, b, k, o);\n },\n\n /**\n */\n\n $not: function(a, b, k, o) {\n return !validate(a, b, k, o);\n },\n\n /**\n */\n\n $type: function(a, b) {\n return b != void 0 ? b instanceof a || b.constructor == a : false;\n },\n\n /**\n */\n\n $all: function(a, b, k, o) {\n return OPERATORS.$and(a, b, k, o);\n },\n\n /**\n */\n\n $size: function(a, b) {\n return b ? a === b.length : false;\n },\n\n /**\n */\n\n $or: function(a, b, k, o) {\n for (var i = 0, n = a.length; i < n; i++) if (validate(get(a, i), b, k, o)) return true;\n return false;\n },\n\n /**\n */\n\n $nor: function(a, b, k, o) {\n return !OPERATORS.$or(a, b, k, o);\n },\n\n /**\n */\n\n $and: function(a, b, k, o) {\n for (var i = 0, n = a.length; i < n; i++) {\n if (!validate(get(a, i), b, k, o)) {\n return false;\n }\n }\n return true;\n },\n\n /**\n */\n\n $regex: or(function(a, b) {\n return typeof b === 'string' && a.test(b);\n }),\n\n /**\n */\n\n $where: function(a, b, k, o) {\n return a.call(b, b, k, o);\n },\n\n /**\n */\n\n $elemMatch: function(a, b, k, o) {\n if (isArray(b)) {\n return !!~search(b, a);\n }\n return validate(a, b, k, o);\n },\n\n /**\n */\n\n $exists: function(a, b, k, o) {\n return o.hasOwnProperty(k) === a;\n }\n};\n\n/**\n */\n\nvar prepare = {\n\n /**\n */\n\n $eq: function(a) {\n\n if (a instanceof RegExp) {\n return function(b) {\n return typeof b === 'string' && a.test(b);\n };\n } else if (a instanceof Function) {\n return a;\n } else if (isArray(a) && !a.length) {\n // Special case of a == []\n return function(b) {\n return (isArray(b) && !b.length);\n };\n } else if (a === null){\n return function(b){\n //will match both null and undefined\n return b == null;\n }\n }\n\n return function(b) {\n return compare(comparable(b), comparable(a)) === 0;\n };\n },\n\n /**\n */\n\n $ne: function(a) {\n return prepare.$eq(a);\n },\n\n /**\n */\n\n $and: function(a) {\n return a.map(parse);\n },\n\n /**\n */\n\n $all: function(a) {\n return prepare.$and(a);\n },\n\n /**\n */\n\n $or: function(a) {\n return a.map(parse);\n },\n\n /**\n */\n\n $nor: function(a) {\n return a.map(parse);\n },\n\n /**\n */\n\n $not: function(a) {\n return parse(a);\n },\n\n /**\n */\n\n $regex: function(a, query) {\n return new RegExp(a, query.$options);\n },\n\n /**\n */\n\n $where: function(a) {\n return typeof a === 'string' ? new Function('obj', 'return ' + a) : a;\n },\n\n /**\n */\n\n $elemMatch: function(a) {\n return parse(a);\n },\n\n /**\n */\n\n $exists: function(a) {\n return !!a;\n }\n};\n\n/**\n */\n\nfunction search(array, validator) {\n\n for (var i = 0; i < array.length; i++) {\n var result = get(array, i);\n if (validate(validator, get(array, i))) {\n return i;\n }\n }\n\n return -1;\n}\n\n/**\n */\n\nfunction createValidator(a, validate) {\n return { a: a, v: validate };\n}\n\n/**\n */\n\nfunction nestedValidator(a, b) {\n var values = [];\n findValues(b, a.k, 0, b, values);\n\n if (values.length === 1) {\n var first = values[0];\n return validate(a.nv, first[0], first[1], first[2]);\n }\n\n // If the query contains $ne, need to test all elements ANDed together\n var inclusive = a && a.q && typeof a.q.$ne !== 'undefined';\n var allValid = inclusive;\n for (var i = 0; i < values.length; i++) {\n var result = values[i];\n var isValid = validate(a.nv, result[0], result[1], result[2]);\n if (inclusive) {\n allValid &= isValid;\n } else {\n allValid |= isValid;\n }\n }\n return allValid;\n}\n\n/**\n */\n\nfunction findValues(current, keypath, index, object, values) {\n\n if (index === keypath.length || current == void 0) {\n\n values.push([current, keypath[index - 1], object]);\n return;\n }\n\n var k = get(keypath, index);\n\n // ensure that if current is an array, that the current key\n // is NOT an array index. This sort of thing needs to work:\n // sift({'foo.0':42}, [{foo: [42]}]);\n if (isArray(current) && isNaN(Number(k))) {\n for (var i = 0, n = current.length; i < n; i++) {\n findValues(get(current, i), keypath, index, current, values);\n }\n } else {\n findValues(get(current, k), keypath, index + 1, current, values);\n }\n}\n\n/**\n */\n\nfunction createNestedValidator(keypath, a, q) {\n return { a: { k: keypath, nv: a, q: q }, v: nestedValidator };\n}\n\n/**\n * flatten the query\n */\n\nfunction isVanillaObject(value) {\n return value && value.constructor === Object;\n}\n\nfunction parse(query) {\n query = comparable(query);\n\n if (!query || !isVanillaObject(query)) { // cross browser support\n query = { $eq: query };\n }\n\n var validators = [];\n\n for (var key in query) {\n var a = query[key];\n\n if (key === '$options') {\n continue;\n }\n\n if (OPERATORS[key]) {\n if (prepare[key]) a = prepare[key](a, query);\n validators.push(createValidator(comparable(a), OPERATORS[key]));\n } else {\n\n if (key.charCodeAt(0) === 36) {\n throw new Error('Unknown operation ' + key);\n }\n validators.push(createNestedValidator(key.split('.'), parse(a), a));\n }\n }\n\n return validators.length === 1 ? validators[0] : createValidator(validators, OPERATORS.$and);\n}\n\n/**\n */\n\nfunction createRootValidator(query, getter) {\n var validator = parse(query);\n if (getter) {\n validator = {\n a: validator,\n v: function(a, b, k, o) {\n return validate(a, getter(b), k, o);\n }\n };\n }\n return validator;\n}\n\n/**\n */\n\nexport default function sift(query, array, getter) {\n\n if (isFunction(array)) {\n getter = array;\n array = void 0;\n }\n\n var validator = createRootValidator(query, getter);\n\n function filter(b, k, o) {\n return validate(validator, b, k, o);\n }\n\n if (array) {\n return array.filter(filter);\n }\n\n return filter;\n}\n\n/**\n */\n\nexport function indexOf(query, array, getter) {\n return search(array, createRootValidator(query, getter));\n};\n\n/**\n */\n\nexport function compare(a, b) {\n if(a===b) return 0;\n if(typeof a === typeof b) {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n }\n};","import sift from 'sift';\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction ForbiddenError(message, options) {\n if (options === void 0) {\n options = {};\n }\n\n Error.call(this);\n this.constructor = ForbiddenError;\n this.subject = options.subject;\n this.subjectName = options.subjectName;\n this.action = options.action;\n this.field = options.field;\n this.message = message || \"Cannot execute \\\"\" + this.action + \"\\\" on \\\"\" + this.subjectName + \"\\\"\";\n\n if (typeof Error.captureStackTrace === 'function') {\n this.name = this.constructor.name;\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = new Error(this.message).stack;\n }\n}\nForbiddenError.prototype = Object.create(Error.prototype);\n\nfunction wrapArray(value) {\n return Array.isArray(value) ? value : [value];\n}\nfunction getSubjectName(subject) {\n if (!subject || typeof subject === 'string') {\n return subject;\n }\n\n var Type = typeof subject === 'object' ? subject.constructor : subject;\n return Type.modelName || Type.name;\n}\nfunction clone(object) {\n return JSON.parse(JSON.stringify(object));\n}\n\nvar REGEXP_SPECIAL_CHARS = /[-/\\\\^$+?.()|[\\]{}]/g;\nvar REGEXP_ANY = /\\.?\\*+\\.?/g;\nvar REGEXP_STARS = /\\*+/;\nvar REGEXP_DOT = /\\./g;\n\nfunction detectRegexpPattern(match, index, string) {\n var quantifier = string[0] === '*' || match[0] === '.' && match[match.length - 1] === '.' ? '+' : '*';\n var matcher = match.indexOf('**') === -1 ? '[^.]' : '.';\n var pattern = match.replace(REGEXP_DOT, '\\\\$&').replace(REGEXP_STARS, matcher + quantifier);\n return index + match.length === string.length ? \"(?:\" + pattern + \")?\" : pattern;\n}\n\nfunction escapeRegexp(match, index, string) {\n if (match === '.' && (string[index - 1] === '*' || string[index + 1] === '*')) {\n return match;\n }\n\n return \"\\\\\" + match;\n}\n\nfunction createPattern(fields) {\n var patterns = fields.map(function (field) {\n return field.replace(REGEXP_SPECIAL_CHARS, escapeRegexp).replace(REGEXP_ANY, detectRegexpPattern);\n });\n var pattern = patterns.length > 1 ? \"(?:\" + patterns.join('|') + \")\" : patterns[0];\n return new RegExp(\"^\" + pattern + \"$\");\n}\n\nvar Rule =\n/*#__PURE__*/\nfunction () {\n function Rule(params) {\n this.actions = params.actions || params.action;\n this.subject = params.subject;\n this.fields = !params.fields || params.fields.length === 0 ? undefined : wrapArray(params.fields);\n Object.defineProperty(this, '_fieldsPattern', {\n writable: true\n });\n this.inverted = !!params.inverted;\n this.conditions = params.conditions;\n Object.defineProperty(this, '_matches', {\n writable: true,\n value: this.conditions ? sift(this.conditions) : undefined\n });\n this.reason = params.reason;\n }\n\n var _proto = Rule.prototype;\n\n _proto.matches = function matches(object) {\n if (!this._matches) {\n return true;\n }\n\n if (typeof object === 'string') {\n return !this.inverted;\n }\n\n return this._matches(object);\n };\n\n _proto.isRelevantFor = function isRelevantFor(object, field) {\n if (!this.fields) {\n return true;\n }\n\n if (!field) {\n return !this.inverted;\n }\n\n return this.matchesField(field);\n };\n\n _proto.matchesField = function matchesField(field) {\n if (typeof this._fieldsPattern === 'undefined') {\n this._fieldsPattern = this.fields.join('').indexOf('*') === -1 ? null : createPattern(this.fields);\n }\n\n if (this._fieldsPattern === null || field.indexOf('*') !== -1) {\n return this.fields.indexOf(field) !== -1;\n }\n\n return this._fieldsPattern.test(field);\n };\n\n return Rule;\n}();\n\nvar PRIVATE_FIELD = typeof Symbol !== 'undefined' ? Symbol('private') : \"__\" + Date.now();\nvar DEFAULT_ALIASES = {\n crud: ['create', 'read', 'update', 'delete']\n};\n\nfunction hasAction(action, actions) {\n return action === actions || Array.isArray(actions) && actions.indexOf(action) !== -1;\n}\n\nvar Ability =\n/*#__PURE__*/\nfunction () {\n Ability.addAlias = function addAlias(alias, actions) {\n if (alias === 'manage' || hasAction('manage', actions)) {\n throw new Error('Cannot add alias for \"manage\" action because it represents any action');\n }\n\n if (hasAction(alias, actions)) {\n throw new Error(\"Attempt to alias action to itself: \" + alias + \" -> \" + actions.toString());\n }\n\n DEFAULT_ALIASES[alias] = actions;\n return this;\n };\n\n function Ability(rules, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$RuleType = _ref.RuleType,\n RuleType = _ref$RuleType === void 0 ? Rule : _ref$RuleType,\n _ref$subjectName = _ref.subjectName,\n subjectName = _ref$subjectName === void 0 ? getSubjectName : _ref$subjectName;\n\n this[PRIVATE_FIELD] = {\n RuleType: RuleType,\n subjectName: subjectName,\n originalRules: rules || [],\n hasPerFieldRules: false,\n indexedRules: Object.create(null),\n mergedRules: Object.create(null),\n events: {},\n aliases: clone(DEFAULT_ALIASES)\n };\n this.update(rules);\n }\n\n var _proto = Ability.prototype;\n\n _proto.update = function update(rules) {\n if (!Array.isArray(rules)) {\n return this;\n }\n\n var payload = {\n rules: rules,\n ability: this\n };\n this.emit('update', payload);\n this[PRIVATE_FIELD].originalRules = rules.slice(0);\n this[PRIVATE_FIELD].mergedRules = Object.create(null);\n var index = this.buildIndexFor(rules);\n\n if (process.env.NODE_ENV !== 'production' && index.isAllInverted && rules.length) {\n // eslint-disable-next-line\n console.warn('[casl]: Ability contains only inverted rules. That means user will not be able to do any actions. This will be changed to Error throw in the next major version');\n }\n\n this[PRIVATE_FIELD].indexedRules = index.rules;\n this[PRIVATE_FIELD].hasPerFieldRules = index.hasPerFieldRules;\n this.emit('updated', payload);\n return this;\n };\n\n _proto.buildIndexFor = function buildIndexFor(rules) {\n var indexedRules = Object.create(null);\n var RuleType = this[PRIVATE_FIELD].RuleType;\n var isAllInverted = true;\n var hasPerFieldRules = false;\n\n for (var i = 0; i < rules.length; i++) {\n var rule = new RuleType(rules[i]);\n var actions = this.expandActions(rule.actions);\n var subjects = wrapArray(rule.subject);\n var priority = rules.length - i - 1;\n isAllInverted = !!(isAllInverted && rule.inverted);\n\n if (!hasPerFieldRules && rule.fields) {\n hasPerFieldRules = true;\n }\n\n for (var k = 0; k < subjects.length; k++) {\n var subject = subjects[k];\n indexedRules[subject] = indexedRules[subject] || Object.create(null);\n\n for (var j = 0; j < actions.length; j++) {\n var action = actions[j];\n indexedRules[subject][action] = indexedRules[subject][action] || Object.create(null);\n indexedRules[subject][action][priority] = rule;\n }\n }\n }\n\n return {\n isAllInverted: isAllInverted,\n hasPerFieldRules: hasPerFieldRules,\n rules: indexedRules\n };\n };\n\n _proto.expandActions = function expandActions(rawActions) {\n var aliases = this[PRIVATE_FIELD].aliases;\n var actions = wrapArray(rawActions);\n var i = 0;\n\n while (i < actions.length) {\n var action = actions[i++];\n\n if (aliases.hasOwnProperty(action)) {\n actions = actions.concat(aliases[action]);\n }\n }\n\n return actions;\n };\n\n _proto.can = function can(action, subject, field) {\n if (field && typeof field !== 'string') {\n // eslint-disable-next-line\n throw new Error('Ability.can expects 3rd parameter to be a string. See https://stalniy.github.io/casl/abilities/2017/07/21/check-abilities.html#checking-fields for details');\n }\n\n var rule = this.relevantRuleFor(action, subject, field);\n return !!rule && !rule.inverted;\n };\n\n _proto.relevantRuleFor = function relevantRuleFor(action, subject, field) {\n var rules = this.rulesFor(action, subject, field);\n\n for (var i = 0; i < rules.length; i++) {\n if (rules[i].matches(subject)) {\n return rules[i];\n }\n }\n\n return null;\n };\n\n _proto.possibleRulesFor = function possibleRulesFor(action, subject) {\n var subjectName = this[PRIVATE_FIELD].subjectName(subject);\n var mergedRules = this[PRIVATE_FIELD].mergedRules;\n var key = subjectName + \"_\" + action;\n\n if (!mergedRules[key]) {\n mergedRules[key] = this.mergeRulesFor(action, subjectName);\n }\n\n return mergedRules[key];\n };\n\n _proto.mergeRulesFor = function mergeRulesFor(action, subjectName) {\n var indexedRules = this[PRIVATE_FIELD].indexedRules;\n var mergedRules = [subjectName, 'all'].reduce(function (rules, subjectType) {\n var subjectRules = indexedRules[subjectType];\n\n if (!subjectRules) {\n return rules;\n }\n\n return Object.assign(rules, subjectRules[action], subjectRules.manage);\n }, []); // TODO: think whether there is a better way to prioritize rules\n // or convert sparse array to regular one\n\n return mergedRules.filter(Boolean);\n };\n\n _proto.rulesFor = function rulesFor(action, subject, field) {\n var rules = this.possibleRulesFor(action, subject);\n\n if (!this[PRIVATE_FIELD].hasPerFieldRules) {\n return rules;\n }\n\n return rules.filter(function (rule) {\n return rule.isRelevantFor(subject, field);\n });\n };\n\n _proto.cannot = function cannot() {\n return !this.can.apply(this, arguments);\n };\n\n _proto.throwUnlessCan = function throwUnlessCan() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var rule = this.relevantRuleFor.apply(this, args);\n\n if (!rule || rule.inverted) {\n var action = args[0],\n subject = args[1],\n field = args[2];\n var subjectName = this[PRIVATE_FIELD].subjectName(subject);\n throw new ForbiddenError(rule ? rule.reason : null, {\n action: action,\n subjectName: subjectName,\n subject: subject,\n field: field\n });\n }\n };\n\n _proto.on = function on(event, handler) {\n var events = this[PRIVATE_FIELD].events;\n var isAttached = true;\n\n if (!events[event]) {\n events[event] = [];\n }\n\n events[event].push(handler);\n return function () {\n if (isAttached) {\n var index = events[event].indexOf(handler);\n events[event].splice(index, 1);\n isAttached = false;\n }\n };\n };\n\n _proto.emit = function emit(event, payload) {\n var handlers = this[PRIVATE_FIELD].events[event];\n\n if (handlers) {\n handlers.slice(0).forEach(function (handler) {\n return handler(payload);\n });\n }\n };\n\n _createClass(Ability, [{\n key: \"rules\",\n get: function get() {\n return this[PRIVATE_FIELD].originalRules;\n }\n }]);\n\n return Ability;\n}();\n\nfunction isStringOrNonEmptyArray(value) {\n return ![].concat(value).some(function (item) {\n return typeof item !== 'string';\n });\n}\n\nfunction isObject(value) {\n return value && typeof value === 'object';\n}\n\nvar RuleBuilder =\n/*#__PURE__*/\nfunction () {\n function RuleBuilder(rule) {\n this.rule = rule;\n }\n\n var _proto = RuleBuilder.prototype;\n\n _proto.because = function because(reason) {\n this.rule.reason = reason;\n return this;\n };\n\n return RuleBuilder;\n}();\nvar AbilityBuilder =\n/*#__PURE__*/\nfunction () {\n AbilityBuilder.define = function define(params, dsl) {\n var options = typeof params === 'function' ? {} : params;\n var define = params === options ? dsl : params;\n var builder = new this(options);\n var result = define(builder.can.bind(builder), builder.cannot.bind(builder));\n\n var buildAbility = function buildAbility() {\n return new Ability(builder.rules, options);\n };\n\n return result && typeof result.then === 'function' ? result.then(buildAbility) : buildAbility();\n };\n\n AbilityBuilder.extract = function extract() {\n var builder = new this();\n return {\n can: builder.can.bind(builder),\n cannot: builder.cannot.bind(builder),\n rules: builder.rules\n };\n };\n\n function AbilityBuilder(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$subjectName = _ref.subjectName,\n subjectName = _ref$subjectName === void 0 ? getSubjectName : _ref$subjectName;\n\n this.rules = [];\n this.subjectName = subjectName;\n }\n\n var _proto2 = AbilityBuilder.prototype;\n\n _proto2.can = function can(actions, subject, conditionsOrFields, conditions) {\n if (!isStringOrNonEmptyArray(actions)) {\n throw new TypeError('AbilityBuilder#can expects the first parameter to be an action or array of actions');\n }\n\n var subjectName = [].concat(subject).map(this.subjectName);\n\n if (!isStringOrNonEmptyArray(subjectName)) {\n throw new TypeError('AbilityBuilder#can expects the second argument to be a subject name/type or an array of subject names/types');\n }\n\n var rule = {\n actions: actions,\n subject: subjectName\n };\n\n if (Array.isArray(conditionsOrFields) || typeof conditionsOrFields === 'string') {\n rule.fields = conditionsOrFields;\n }\n\n if (isObject(conditions) || !rule.fields && isObject(conditionsOrFields)) {\n rule.conditions = conditions || conditionsOrFields;\n }\n\n this.rules.push(rule);\n return new RuleBuilder(rule);\n };\n\n _proto2.cannot = function cannot() {\n var builder = this.can.apply(this, arguments);\n builder.rule.inverted = true;\n return builder;\n };\n\n return AbilityBuilder;\n}();\n\nexport { Ability, AbilityBuilder, ForbiddenError, Rule, RuleBuilder };\n","export default {\n disabled: false\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : PropTypes.instanceOf(Element)\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n var elevations = {};\n theme.shadows.forEach(function (shadow, index) {\n elevations[\"elevation\".concat(index)] = {\n boxShadow: shadow\n };\n });\n return _extends({\n /* Styles applied to the root element. */\n root: {\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n transition: theme.transitions.create('box-shadow')\n },\n\n /* Styles applied to the root element if `square={false}`. */\n rounded: {\n borderRadius: theme.shape.borderRadius\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"`. */\n outlined: {\n border: \"1px solid \".concat(theme.palette.divider)\n }\n }, elevations);\n};\nvar Paper = /*#__PURE__*/React.forwardRef(function Paper(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _props$square = props.square,\n square = _props$square === void 0 ? false : _props$square,\n _props$elevation = props.elevation,\n elevation = _props$elevation === void 0 ? 1 : _props$elevation,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'elevation' : _props$variant,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\", \"square\", \"elevation\", \"variant\"]);\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, variant === 'outlined' ? classes.outlined : classes[\"elevation\".concat(elevation)], !square && classes.rounded),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Paper.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * Shadow depth, corresponds to `dp` in the spec.\n * It accepts values between 0 and 24 inclusive.\n */\n elevation: chainPropTypes(PropTypes.number, function (props) {\n var classes = props.classes,\n elevation = props.elevation; // in case `withStyles` fails to inject we don't need this warning\n\n if (classes === undefined) {\n return null;\n }\n\n if (elevation != null && classes[\"elevation\".concat(elevation)] === undefined) {\n return new Error(\"Material-UI: This elevation `\".concat(elevation, \"` is not implemented.\"));\n }\n\n return null;\n }),\n\n /**\n * If `true`, rounded corners are disabled.\n */\n square: PropTypes.bool,\n\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['elevation', 'outlined'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiPaper'\n})(Paper);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@material-ui/utils';\nimport createGenerateClassName from '../createGenerateClassName';\nimport { create } from 'jss';\nimport jssPreset from '../jssPreset'; // Default JSS instance.\n\nvar jss = create(jssPreset()); // Use a singleton or the provided one by the context.\n//\n// The counter-based approach doesn't tolerate any mistake.\n// It's much safer to use the same counter everywhere.\n\nvar generateClassName = createGenerateClassName(); // Exported for test purposes\n\nexport var sheetsManager = new Map();\nvar defaultOptions = {\n disableGeneration: false,\n generateClassName: generateClassName,\n jss: jss,\n sheetsCache: null,\n sheetsManager: sheetsManager,\n sheetsRegistry: null\n};\nexport var StylesContext = React.createContext(defaultOptions);\n\nif (process.env.NODE_ENV !== 'production') {\n StylesContext.displayName = 'StylesContext';\n}\n\nvar injectFirstNode;\nexport default function StylesProvider(props) {\n var children = props.children,\n _props$injectFirst = props.injectFirst,\n injectFirst = _props$injectFirst === void 0 ? false : _props$injectFirst,\n _props$disableGenerat = props.disableGeneration,\n disableGeneration = _props$disableGenerat === void 0 ? false : _props$disableGenerat,\n localOptions = _objectWithoutProperties(props, [\"children\", \"injectFirst\", \"disableGeneration\"]);\n\n var outerOptions = React.useContext(StylesContext);\n\n var context = _extends(_extends({}, outerOptions), {}, {\n disableGeneration: disableGeneration\n }, localOptions);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof window === 'undefined' && !context.sheetsManager) {\n console.error('Material-UI: You need to use the ServerStyleSheets API when rendering on the server.');\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (context.jss.options.insertionPoint && injectFirst) {\n console.error('Material-UI: You cannot use a custom insertionPoint and at the same time.');\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (injectFirst && localOptions.jss) {\n console.error('Material-UI: You cannot use the jss and injectFirst props at the same time.');\n }\n }\n\n if (!context.jss.options.insertionPoint && injectFirst && typeof window !== 'undefined') {\n if (!injectFirstNode) {\n var head = document.head;\n injectFirstNode = document.createComment('mui-inject-first');\n head.insertBefore(injectFirstNode, head.firstChild);\n }\n\n context.jss = create({\n plugins: jssPreset().plugins,\n insertionPoint: injectFirstNode\n });\n }\n\n return /*#__PURE__*/React.createElement(StylesContext.Provider, {\n value: context\n }, children);\n}\nprocess.env.NODE_ENV !== \"production\" ? StylesProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node.isRequired,\n\n /**\n * You can disable the generation of the styles with this option.\n * It can be useful when traversing the React tree outside of the HTML\n * rendering step on the server.\n * Let's say you are using react-apollo to extract all\n * the queries made by the interface server-side - you can significantly speed up the traversal with this prop.\n */\n disableGeneration: PropTypes.bool,\n\n /**\n * JSS's class name generator.\n */\n generateClassName: PropTypes.func,\n\n /**\n * By default, the styles are injected last in the element of the page.\n * As a result, they gain more specificity than any other style sheet.\n * If you want to override Material-UI's styles, set this prop.\n */\n injectFirst: PropTypes.bool,\n\n /**\n * JSS's instance.\n */\n jss: PropTypes.object,\n\n /**\n * @ignore\n */\n serverGenerateClassName: PropTypes.func,\n\n /**\n * @ignore\n *\n * Beta feature.\n *\n * Cache for the sheets.\n */\n sheetsCache: PropTypes.object,\n\n /**\n * @ignore\n *\n * The sheetsManager is used to deduplicate style sheet injection in the page.\n * It's deduplicating using the (theme, styles) couple.\n * On the server, you should provide a new instance for each request.\n */\n sheetsManager: PropTypes.object,\n\n /**\n * @ignore\n *\n * Collect the sheets.\n */\n sheetsRegistry: PropTypes.object\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? StylesProvider.propTypes = exactProp(StylesProvider.propTypes) : void 0;\n}","import style from './style';\nimport compose from './compose';\n\nfunction getBorder(value) {\n if (typeof value !== 'number') {\n return value;\n }\n\n return \"\".concat(value, \"px solid\");\n}\n\nexport var border = style({\n prop: 'border',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderTop = style({\n prop: 'borderTop',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderRight = style({\n prop: 'borderRight',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderBottom = style({\n prop: 'borderBottom',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderLeft = style({\n prop: 'borderLeft',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderColor = style({\n prop: 'borderColor',\n themeKey: 'palette'\n});\nexport var borderRadius = style({\n prop: 'borderRadius',\n themeKey: 'shape'\n});\nvar borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderRadius);\nexport default borders;","import style from './style';\nimport compose from './compose';\nexport var flexBasis = style({\n prop: 'flexBasis'\n});\nexport var flexDirection = style({\n prop: 'flexDirection'\n});\nexport var flexWrap = style({\n prop: 'flexWrap'\n});\nexport var justifyContent = style({\n prop: 'justifyContent'\n});\nexport var alignItems = style({\n prop: 'alignItems'\n});\nexport var alignContent = style({\n prop: 'alignContent'\n});\nexport var order = style({\n prop: 'order'\n});\nexport var flex = style({\n prop: 'flex'\n});\nexport var flexGrow = style({\n prop: 'flexGrow'\n});\nexport var flexShrink = style({\n prop: 'flexShrink'\n});\nexport var alignSelf = style({\n prop: 'alignSelf'\n});\nexport var justifyItems = style({\n prop: 'justifyItems'\n});\nexport var justifySelf = style({\n prop: 'justifySelf'\n});\nvar flexbox = compose(flexBasis, flexDirection, flexWrap, justifyContent, alignItems, alignContent, order, flex, flexGrow, flexShrink, alignSelf, justifyItems, justifySelf);\nexport default flexbox;","import style from './style';\nimport compose from './compose';\nexport var gridGap = style({\n prop: 'gridGap'\n});\nexport var gridColumnGap = style({\n prop: 'gridColumnGap'\n});\nexport var gridRowGap = style({\n prop: 'gridRowGap'\n});\nexport var gridColumn = style({\n prop: 'gridColumn'\n});\nexport var gridRow = style({\n prop: 'gridRow'\n});\nexport var gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport var gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport var gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport var gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport var gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport var gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport var gridArea = style({\n prop: 'gridArea'\n});\nvar grid = compose(gridGap, gridColumnGap, gridRowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport var position = style({\n prop: 'position'\n});\nexport var zIndex = style({\n prop: 'zIndex',\n themeKey: 'zIndex'\n});\nexport var top = style({\n prop: 'top'\n});\nexport var right = style({\n prop: 'right'\n});\nexport var bottom = style({\n prop: 'bottom'\n});\nexport var left = style({\n prop: 'left'\n});\nexport default compose(position, zIndex, top, right, bottom, left);","import style from './style';\nimport compose from './compose';\nexport var color = style({\n prop: 'color',\n themeKey: 'palette'\n});\nexport var bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette'\n});\nvar palette = compose(color, bgcolor);\nexport default palette;","import style from './style';\nimport compose from './compose';\n\nfunction transform(value) {\n return value <= 1 ? \"\".concat(value * 100, \"%\") : value;\n}\n\nexport var width = style({\n prop: 'width',\n transform: transform\n});\nexport var maxWidth = style({\n prop: 'maxWidth',\n transform: transform\n});\nexport var minWidth = style({\n prop: 'minWidth',\n transform: transform\n});\nexport var height = style({\n prop: 'height',\n transform: transform\n});\nexport var maxHeight = style({\n prop: 'maxHeight',\n transform: transform\n});\nexport var minHeight = style({\n prop: 'minHeight',\n transform: transform\n});\nexport var sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: transform\n});\nexport var sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: transform\n});\nexport var boxSizing = style({\n prop: 'boxSizing'\n});\nvar sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import style from './style';\nimport compose from './compose';\nexport var fontFamily = style({\n prop: 'fontFamily',\n themeKey: 'typography'\n});\nexport var fontSize = style({\n prop: 'fontSize',\n themeKey: 'typography'\n});\nexport var fontStyle = style({\n prop: 'fontStyle',\n themeKey: 'typography'\n});\nexport var fontWeight = style({\n prop: 'fontWeight',\n themeKey: 'typography'\n});\nexport var letterSpacing = style({\n prop: 'letterSpacing'\n});\nexport var lineHeight = style({\n prop: 'lineHeight'\n});\nexport var textAlign = style({\n prop: 'textAlign'\n});\nvar typography = compose(fontFamily, fontSize, fontStyle, fontWeight, letterSpacing, lineHeight, textAlign);\nexport default typography;","export { default } from './Input';","export { default } from './OutlinedInput';","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport merge from './merge';\nimport memoize from './memoize';\nvar properties = {\n m: 'margin',\n p: 'padding'\n};\nvar directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nvar aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n}; // memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\n\nvar getCssProperties = memoize(function (prop) {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n\n var _prop$split = prop.split(''),\n _prop$split2 = _slicedToArray(_prop$split, 2),\n a = _prop$split2[0],\n b = _prop$split2[1];\n\n var property = properties[a];\n var direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(function (dir) {\n return property + dir;\n }) : [property + direction];\n});\nvar spacingKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY'];\nexport function createUnarySpacing(theme) {\n var themeSpacing = theme.spacing || 8;\n\n if (typeof themeSpacing === 'number') {\n return function (abs) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(\"Material-UI: Expected spacing argument to be a number, got \".concat(abs, \".\"));\n }\n }\n\n return themeSpacing * abs;\n };\n }\n\n if (Array.isArray(themeSpacing)) {\n return function (abs) {\n if (process.env.NODE_ENV !== 'production') {\n if (abs > themeSpacing.length - 1) {\n console.error([\"Material-UI: The value provided (\".concat(abs, \") overflows.\"), \"The supported values are: \".concat(JSON.stringify(themeSpacing), \".\"), \"\".concat(abs, \" > \").concat(themeSpacing.length - 1, \", you need to add the missing values.\")].join('\\n'));\n }\n }\n\n return themeSpacing[abs];\n };\n }\n\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n console.error([\"Material-UI: The `theme.spacing` value (\".concat(themeSpacing, \") is invalid.\"), 'It should be a number, an array or a function.'].join('\\n'));\n }\n\n return function () {\n return undefined;\n };\n}\n\nfunction getValue(transformer, propValue) {\n if (typeof propValue === 'string') {\n return propValue;\n }\n\n var abs = Math.abs(propValue);\n var transformed = transformer(abs);\n\n if (propValue >= 0) {\n return transformed;\n }\n\n if (typeof transformed === 'number') {\n return -transformed;\n }\n\n return \"-\".concat(transformed);\n}\n\nfunction getStyleFromPropValue(cssProperties, transformer) {\n return function (propValue) {\n return cssProperties.reduce(function (acc, cssProperty) {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n };\n}\n\nfunction spacing(props) {\n var theme = props.theme;\n var transformer = createUnarySpacing(theme);\n return Object.keys(props).map(function (prop) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (spacingKeys.indexOf(prop) === -1) {\n return null;\n }\n\n var cssProperties = getCssProperties(prop);\n var styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n var propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n }).reduce(merge, {});\n}\n\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce(function (obj, key) {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n\n return cache[arg];\n };\n}","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n// class returns a unique id to use for the column. it checks the existing columns, and if the requested\n// id is already taken, it will start appending numbers until it gets a unique id.\n// eg, if the col field is 'name', it will try ids: {name, name_1, name_2...}\n// if no field or id provided in the col, it will try the ids of natural numbers\nimport { _ } from \"../utils\";\nvar ColumnKeyCreator = /** @class */ (function () {\n function ColumnKeyCreator() {\n this.existingKeys = {};\n }\n ColumnKeyCreator.prototype.addExistingKeys = function (keys) {\n for (var i = 0; i < keys.length; i++) {\n this.existingKeys[keys[i]] = true;\n }\n };\n ColumnKeyCreator.prototype.getUniqueKey = function (colId, colField) {\n // in case user passed in number for colId, convert to string\n colId = _.toStringOrNull(colId);\n var count = 0;\n while (true) {\n var idToTry = void 0;\n if (colId) {\n idToTry = colId;\n if (count !== 0) {\n idToTry += '_' + count;\n }\n }\n else if (colField) {\n idToTry = colField;\n if (count !== 0) {\n idToTry += '_' + count;\n }\n }\n else {\n idToTry = '' + count;\n }\n if (!this.existingKeys[idToTry]) {\n this.existingKeys[idToTry] = true;\n return idToTry;\n }\n count++;\n }\n };\n return ColumnKeyCreator;\n}());\nexport { ColumnKeyCreator };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { ColumnGroup } from \"../entities/columnGroup\";\nimport { Column } from \"../entities/column\";\nimport { Events } from \"../events\";\nimport { OriginalColumnGroup } from \"../entities/originalColumnGroup\";\nimport { GroupInstanceIdCreator } from \"./groupInstanceIdCreator\";\nimport { Autowired, Bean, Optional, PostConstruct, Qualifier } from \"../context/context\";\nimport { _ } from \"../utils\";\nimport { Constants } from \"../constants\";\nvar ColumnController = /** @class */ (function () {\n function ColumnController() {\n // header row count, based on user provided columns\n this.primaryHeaderRowCount = 0;\n this.secondaryHeaderRowCount = 0;\n this.secondaryColumnsPresent = false;\n // header row count, either above, or based on pivoting if we are pivoting\n this.gridHeaderRowCount = 0;\n // these are the lists used by the rowRenderer to render nodes. almost the leaf nodes of the above\n // displayed trees, however it also takes into account if the groups are open or not.\n this.displayedLeftColumns = [];\n this.displayedRightColumns = [];\n this.displayedCenterColumns = [];\n // all three lists above combined\n this.allDisplayedColumns = [];\n // same as above, except trimmed down to only columns within the viewport\n this.allDisplayedVirtualColumns = [];\n this.allDisplayedCenterVirtualColumns = [];\n this.rowGroupColumns = [];\n this.valueColumns = [];\n this.pivotColumns = [];\n this.ready = false;\n this.autoGroupsNeedBuilding = false;\n this.pivotMode = false;\n this.bodyWidth = 0;\n this.leftWidth = 0;\n this.rightWidth = 0;\n this.bodyWidthDirty = true;\n }\n ColumnController.prototype.init = function () {\n var pivotMode = this.gridOptionsWrapper.isPivotMode();\n this.suppressColumnVirtualisation = this.gridOptionsWrapper.isSuppressColumnVirtualisation();\n if (this.isPivotSettingAllowed(pivotMode)) {\n this.pivotMode = pivotMode;\n }\n this.usingTreeData = this.gridOptionsWrapper.isTreeData();\n };\n ColumnController.prototype.setColumnDefs = function (columnDefs, source) {\n if (source === void 0) { source = \"api\"; }\n var colsPreviouslyExisted = !!this.columnDefs;\n this.columnDefs = columnDefs;\n // always invalidate cache on changing columns, as the column id's for the new columns\n // could overlap with the old id's, so the cache would return old values for new columns.\n this.valueCache.expire();\n // NOTE ==================\n // we should be destroying the existing columns and groups if they exist, for example, the original column\n // group adds a listener to the columns, it should be also removing the listeners\n this.autoGroupsNeedBuilding = true;\n var oldPrimaryColumns = this.primaryColumns;\n var balancedTreeResult = this.columnFactory.createColumnTree(columnDefs, true, oldPrimaryColumns);\n this.primaryColumnTree = balancedTreeResult.columnTree;\n this.primaryHeaderRowCount = balancedTreeResult.treeDept + 1;\n this.primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);\n this.extractRowGroupColumns(source, oldPrimaryColumns);\n this.extractPivotColumns(source, oldPrimaryColumns);\n this.createValueColumns(source, oldPrimaryColumns);\n this.ready = true;\n this.updateGridColumns();\n this.updateDisplayedColumns(source);\n this.checkDisplayedVirtualColumns();\n if (this.gridOptionsWrapper.isDeltaColumnMode() && colsPreviouslyExisted) {\n this.resetColumnState(true, source);\n }\n var eventEverythingChanged = {\n type: Events.EVENT_COLUMN_EVERYTHING_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(eventEverythingChanged);\n var newColumnsLoadedEvent = {\n type: Events.EVENT_NEW_COLUMNS_LOADED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(newColumnsLoadedEvent);\n };\n ColumnController.prototype.isAutoRowHeightActive = function () {\n return this.autoRowHeightColumns && this.autoRowHeightColumns.length > 0;\n };\n ColumnController.prototype.getAllAutoRowHeightCols = function () {\n return this.autoRowHeightColumns;\n };\n ColumnController.prototype.setVirtualViewportLeftAndRight = function () {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n this.viewportLeft = this.bodyWidth - this.scrollPosition - this.scrollWidth;\n this.viewportRight = this.bodyWidth - this.scrollPosition;\n }\n else {\n this.viewportLeft = this.scrollPosition;\n this.viewportRight = this.scrollWidth + this.scrollPosition;\n }\n };\n // used by clipboard service, to know what columns to paste into\n ColumnController.prototype.getDisplayedColumnsStartingAt = function (column) {\n var currentColumn = column;\n var result = [];\n while (currentColumn && _.exists(currentColumn)) {\n result.push(currentColumn);\n currentColumn = this.getDisplayedColAfter(currentColumn);\n }\n return result;\n };\n // checks what columns are currently displayed due to column virtualisation. fires an event\n // if the list of columns has changed.\n // + setColumnWidth(), setVirtualViewportPosition(), setColumnDefs(), sizeColumnsToFit()\n ColumnController.prototype.checkDisplayedVirtualColumns = function () {\n // check displayCenterColumnTree exists first, as it won't exist when grid is initialising\n if (_.exists(this.displayedCenterColumns)) {\n var hashBefore = this.allDisplayedVirtualColumns.map(function (column) { return column.getId(); }).join('#');\n this.updateVirtualSets();\n var hashAfter = this.allDisplayedVirtualColumns.map(function (column) { return column.getId(); }).join('#');\n if (hashBefore !== hashAfter) {\n var event_1 = {\n type: Events.EVENT_VIRTUAL_COLUMNS_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n }\n };\n ColumnController.prototype.setVirtualViewportPosition = function (scrollWidth, scrollPosition) {\n if (scrollWidth !== this.scrollWidth || scrollPosition !== this.scrollPosition || this.bodyWidthDirty) {\n this.scrollWidth = scrollWidth;\n this.scrollPosition = scrollPosition;\n // we need to call setVirtualViewportLeftAndRight() at least once after the body width changes,\n // as the viewport can stay the same, but in RTL, if body width changes, we need to work out the\n // virtual columns again\n this.bodyWidthDirty = true;\n this.setVirtualViewportLeftAndRight();\n if (this.ready) {\n this.checkDisplayedVirtualColumns();\n }\n }\n };\n ColumnController.prototype.isPivotMode = function () {\n return this.pivotMode;\n };\n ColumnController.prototype.isPivotSettingAllowed = function (pivot) {\n if (pivot) {\n if (this.gridOptionsWrapper.isTreeData()) {\n console.warn(\"ag-Grid: Pivot mode not available in conjunction Tree Data i.e. 'gridOptions.treeData: true'\");\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n };\n ColumnController.prototype.setPivotMode = function (pivotMode, source) {\n if (source === void 0) { source = \"api\"; }\n if (pivotMode === this.pivotMode) {\n return;\n }\n if (!this.isPivotSettingAllowed(this.pivotMode)) {\n return;\n }\n this.pivotMode = pivotMode;\n // we need to update grid columns to cover the scenario where user has groupSuppressAutoColumn=true, as\n // this means we don't use auto group column UNLESS we are in pivot mode (it's mandatory in pivot mode),\n // so need to updateGridColumn() to check it autoGroupCol needs to be added / removed\n this.autoGroupsNeedBuilding = true;\n this.updateGridColumns();\n this.updateDisplayedColumns(source);\n var event = {\n type: Events.EVENT_COLUMN_PIVOT_MODE_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) {\n if (!this.secondaryColumnsPresent) {\n return null;\n }\n var valueColumnToFind = this.getPrimaryColumn(valueColKey);\n var foundColumn = null;\n if (this.secondaryColumns) {\n this.secondaryColumns.forEach(function (column) {\n var thisPivotKeys = column.getColDef().pivotKeys;\n var pivotValueColumn = column.getColDef().pivotValueColumn;\n var pivotKeyMatches = _.compareArrays(thisPivotKeys, pivotKeys);\n var pivotValueMatches = pivotValueColumn === valueColumnToFind;\n if (pivotKeyMatches && pivotValueMatches) {\n foundColumn = column;\n }\n });\n }\n return foundColumn;\n };\n ColumnController.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ColumnController');\n };\n ColumnController.prototype.setFirstRightAndLastLeftPinned = function (source) {\n var lastLeft;\n var firstRight;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n lastLeft = this.displayedLeftColumns ? this.displayedLeftColumns[0] : null;\n firstRight = this.displayedRightColumns ? _.last(this.displayedRightColumns) : null;\n }\n else {\n lastLeft = this.displayedLeftColumns ? _.last(this.displayedLeftColumns) : null;\n firstRight = this.displayedRightColumns ? this.displayedRightColumns[0] : null;\n }\n this.gridColumns.forEach(function (column) {\n column.setLastLeftPinned(column === lastLeft, source);\n column.setFirstRightPinned(column === firstRight, source);\n });\n };\n ColumnController.prototype.autoSizeColumns = function (keys, source) {\n // because of column virtualisation, we can only do this function on columns that are\n // actually rendered, as non-rendered columns (outside the viewport and not rendered\n // due to column virtualisation) are not present. this can result in all rendered columns\n // getting narrowed, which in turn introduces more rendered columns on the RHS which\n // did not get autosized in the original run, leaving the visible grid with columns on\n // the LHS sized, but RHS no. so we keep looping through teh visible columns until\n // no more cols are available (rendered) to be resized\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n // keep track of which cols we have resized in here\n var columnsAutosized = [];\n // initialise with anything except 0 so that while loop executes at least once\n var changesThisTimeAround = -1;\n while (changesThisTimeAround !== 0) {\n changesThisTimeAround = 0;\n this.actionOnGridColumns(keys, function (column) {\n // if already autosized, skip it\n if (columnsAutosized.indexOf(column) >= 0) {\n return false;\n }\n // get how wide this col should be\n var preferredWidth = _this.autoWidthCalculator.getPreferredWidthForColumn(column);\n // preferredWidth = -1 if this col is not on the screen\n if (preferredWidth > 0) {\n var newWidth = _this.normaliseColumnWidth(column, preferredWidth);\n column.setActualWidth(newWidth, source);\n columnsAutosized.push(column);\n changesThisTimeAround++;\n }\n return true;\n }, source);\n }\n if (columnsAutosized.length > 0) {\n var event_2 = {\n type: Events.EVENT_COLUMN_RESIZED,\n columns: columnsAutosized,\n column: columnsAutosized.length === 1 ? columnsAutosized[0] : null,\n finished: true,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: \"autosizeColumns\"\n };\n this.eventService.dispatchEvent(event_2);\n }\n };\n ColumnController.prototype.autoSizeColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.autoSizeColumns([key], source);\n }\n };\n ColumnController.prototype.autoSizeAllColumns = function (source) {\n if (source === void 0) { source = \"api\"; }\n var allDisplayedColumns = this.getAllDisplayedColumns();\n this.autoSizeColumns(allDisplayedColumns, source);\n };\n ColumnController.prototype.getColumnsFromTree = function (rootColumns) {\n var result = [];\n recursiveFindColumns(rootColumns);\n return result;\n function recursiveFindColumns(childColumns) {\n for (var i = 0; i < childColumns.length; i++) {\n var child = childColumns[i];\n if (child instanceof Column) {\n result.push(child);\n }\n else if (child instanceof OriginalColumnGroup) {\n recursiveFindColumns(child.getChildren());\n }\n }\n }\n };\n ColumnController.prototype.getAllDisplayedColumnGroups = function () {\n if (this.displayedLeftColumnTree && this.displayedRightColumnTree && this.displayedCentreColumnTree) {\n return this.displayedLeftColumnTree\n .concat(this.displayedCentreColumnTree)\n .concat(this.displayedRightColumnTree);\n }\n else {\n return null;\n }\n };\n // + columnSelectPanel\n ColumnController.prototype.getPrimaryColumnTree = function () {\n return this.primaryColumnTree;\n };\n // + gridPanel -> for resizing the body and setting top margin\n ColumnController.prototype.getHeaderRowCount = function () {\n return this.gridHeaderRowCount;\n };\n // + headerRenderer -> setting pinned body width\n ColumnController.prototype.getLeftDisplayedColumnGroups = function () {\n return this.displayedLeftColumnTree;\n };\n // + headerRenderer -> setting pinned body width\n ColumnController.prototype.getRightDisplayedColumnGroups = function () {\n return this.displayedRightColumnTree;\n };\n // + headerRenderer -> setting pinned body width\n ColumnController.prototype.getCenterDisplayedColumnGroups = function () {\n return this.displayedCentreColumnTree;\n };\n ColumnController.prototype.getDisplayedColumnGroups = function (type) {\n switch (type) {\n case Constants.PINNED_LEFT:\n return this.getLeftDisplayedColumnGroups();\n case Constants.PINNED_RIGHT:\n return this.getRightDisplayedColumnGroups();\n default:\n return this.getCenterDisplayedColumnGroups();\n }\n };\n // gridPanel -> ensureColumnVisible\n ColumnController.prototype.isColumnDisplayed = function (column) {\n return this.getAllDisplayedColumns().indexOf(column) >= 0;\n };\n // + csvCreator\n ColumnController.prototype.getAllDisplayedColumns = function () {\n return this.allDisplayedColumns;\n };\n ColumnController.prototype.getAllDisplayedVirtualColumns = function () {\n return this.allDisplayedVirtualColumns;\n };\n ColumnController.prototype.getDisplayedLeftColumnsForRow = function (rowNode) {\n if (!this.colSpanActive) {\n return this.displayedLeftColumns;\n }\n else {\n return this.getDisplayedColumnsForRow(rowNode, this.displayedLeftColumns);\n }\n };\n ColumnController.prototype.getDisplayedRightColumnsForRow = function (rowNode) {\n if (!this.colSpanActive) {\n return this.displayedRightColumns;\n }\n else {\n return this.getDisplayedColumnsForRow(rowNode, this.displayedRightColumns);\n }\n };\n ColumnController.prototype.getDisplayedColumnsForRow = function (rowNode, displayedColumns, filterCallback, emptySpaceBeforeColumn) {\n var result = [];\n var lastConsideredCol = null;\n var _loop_1 = function (i) {\n var col = displayedColumns[i];\n var maxAllowedColSpan = displayedColumns.length - i;\n var colSpan = Math.min(col.getColSpan(rowNode), maxAllowedColSpan);\n var columnsToCheckFilter = [col];\n if (colSpan > 1) {\n var colsToRemove = colSpan - 1;\n for (var j = 1; j <= colsToRemove; j++) {\n columnsToCheckFilter.push(displayedColumns[i + j]);\n }\n i += colsToRemove;\n }\n // see which cols we should take out for column virtualisation\n var filterPasses;\n if (filterCallback) {\n // if user provided a callback, means some columns may not be in the viewport.\n // the user will NOT provide a callback if we are talking about pinned areas,\n // as pinned areas have no horizontal scroll and do not virtualise the columns.\n // if lots of columns, that means column spanning, and we set filterPasses = true\n // if one or more of the columns spanned pass the filter.\n filterPasses = false;\n columnsToCheckFilter.forEach(function (colForFilter) {\n if (filterCallback(colForFilter)) {\n filterPasses = true;\n }\n });\n }\n else {\n filterPasses = true;\n }\n if (filterPasses) {\n if (result.length === 0 && lastConsideredCol) {\n var gapBeforeColumn = emptySpaceBeforeColumn ? emptySpaceBeforeColumn(col) : false;\n if (gapBeforeColumn) {\n result.push(lastConsideredCol);\n }\n }\n result.push(col);\n }\n lastConsideredCol = col;\n out_i_1 = i;\n };\n var out_i_1;\n for (var i = 0; i < displayedColumns.length; i++) {\n _loop_1(i);\n i = out_i_1;\n }\n return result;\n };\n // + rowRenderer\n // if we are not column spanning, this just returns back the virtual centre columns,\n // however if we are column spanning, then different rows can have different virtual\n // columns, so we have to work out the list for each individual row.\n ColumnController.prototype.getAllDisplayedCenterVirtualColumnsForRow = function (rowNode) {\n var _this = this;\n if (!this.colSpanActive) {\n return this.allDisplayedCenterVirtualColumns;\n }\n var emptySpaceBeforeColumn = function (col) { return col.getLeft() > _this.viewportLeft; };\n // if doing column virtualisation, then we filter based on the viewport.\n var filterCallback = this.suppressColumnVirtualisation ? null : this.isColumnInViewport.bind(this);\n return this.getDisplayedColumnsForRow(rowNode, this.displayedCenterColumns, filterCallback, emptySpaceBeforeColumn);\n };\n ColumnController.prototype.isColumnInViewport = function (col) {\n var columnLeft = col.getLeft();\n var columnRight = col.getLeft() + col.getActualWidth();\n // adding 200 for buffer size, so some cols off viewport are rendered.\n // this helps horizontal scrolling so user rarely sees white space (unless\n // they scroll horizontally fast). however we are conservative, as the more\n // buffer the slower the vertical redraw speed\n var leftBounds = this.viewportLeft - 200;\n var rightBounds = this.viewportRight + 200;\n var columnToMuchLeft = columnLeft < leftBounds && columnRight < leftBounds;\n var columnToMuchRight = columnLeft > rightBounds && columnRight > rightBounds;\n return !columnToMuchLeft && !columnToMuchRight;\n };\n // used by:\n // + angularGrid -> setting pinned body width\n // note: this should be cached\n ColumnController.prototype.getPinnedLeftContainerWidth = function () {\n return this.getWidthOfColsInList(this.displayedLeftColumns);\n };\n // note: this should be cached\n ColumnController.prototype.getPinnedRightContainerWidth = function () {\n return this.getWidthOfColsInList(this.displayedRightColumns);\n };\n ColumnController.prototype.updatePrimaryColumnList = function (keys, masterList, actionIsAdd, columnCallback, eventType, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n if (!keys || _.missingOrEmpty(keys)) {\n return;\n }\n var atLeastOne = false;\n keys.forEach(function (key) {\n var columnToAdd = _this.getPrimaryColumn(key);\n if (!columnToAdd) {\n return;\n }\n if (actionIsAdd) {\n if (masterList.indexOf(columnToAdd) >= 0) {\n return;\n }\n masterList.push(columnToAdd);\n }\n else {\n if (masterList.indexOf(columnToAdd) < 0) {\n return;\n }\n _.removeFromArray(masterList, columnToAdd);\n }\n columnCallback(columnToAdd);\n atLeastOne = true;\n });\n if (!atLeastOne) {\n return;\n }\n if (this.autoGroupsNeedBuilding) {\n this.updateGridColumns();\n }\n this.updateDisplayedColumns(source);\n var event = {\n type: eventType,\n columns: masterList,\n column: masterList.length === 1 ? masterList[0] : null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.setRowGroupColumns = function (colKeys, source) {\n if (source === void 0) { source = \"api\"; }\n this.autoGroupsNeedBuilding = true;\n this.setPrimaryColumnList(colKeys, this.rowGroupColumns, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.setRowGroupActive.bind(this), source);\n };\n ColumnController.prototype.setRowGroupActive = function (active, column, source) {\n if (active === column.isRowGroupActive()) {\n return;\n }\n column.setRowGroupActive(active, source);\n if (!active && !this.gridOptionsWrapper.isSuppressMakeColumnVisibleAfterUnGroup()) {\n column.setVisible(true, source);\n }\n };\n ColumnController.prototype.addRowGroupColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.addRowGroupColumns([key], source);\n }\n };\n ColumnController.prototype.addRowGroupColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.autoGroupsNeedBuilding = true;\n this.updatePrimaryColumnList(keys, this.rowGroupColumns, true, this.setRowGroupActive.bind(this, true), Events.EVENT_COLUMN_ROW_GROUP_CHANGED, source);\n };\n ColumnController.prototype.removeRowGroupColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.autoGroupsNeedBuilding = true;\n this.updatePrimaryColumnList(keys, this.rowGroupColumns, false, this.setRowGroupActive.bind(this, false), Events.EVENT_COLUMN_ROW_GROUP_CHANGED, source);\n };\n ColumnController.prototype.removeRowGroupColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.removeRowGroupColumns([key], source);\n }\n };\n ColumnController.prototype.addPivotColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.pivotColumns, true, function (column) { return column.setPivotActive(true, source); }, Events.EVENT_COLUMN_PIVOT_CHANGED, source);\n };\n ColumnController.prototype.setPivotColumns = function (colKeys, source) {\n if (source === void 0) { source = \"api\"; }\n this.setPrimaryColumnList(colKeys, this.pivotColumns, Events.EVENT_COLUMN_PIVOT_CHANGED, function (added, column) {\n column.setPivotActive(added, source);\n }, source);\n };\n ColumnController.prototype.addPivotColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n this.addPivotColumns([key], source);\n };\n ColumnController.prototype.removePivotColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.pivotColumns, false, function (column) { return column.setPivotActive(false, source); }, Events.EVENT_COLUMN_PIVOT_CHANGED, source);\n };\n ColumnController.prototype.removePivotColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n this.removePivotColumns([key], source);\n };\n ColumnController.prototype.setPrimaryColumnList = function (colKeys, masterList, eventName, columnCallback, source) {\n var _this = this;\n masterList.length = 0;\n if (_.exists(colKeys)) {\n colKeys.forEach(function (key) {\n var column = _this.getPrimaryColumn(key);\n if (column) {\n masterList.push(column);\n }\n });\n }\n this.primaryColumns.forEach(function (column) {\n var added = masterList.indexOf(column) >= 0;\n columnCallback(added, column);\n });\n if (this.autoGroupsNeedBuilding) {\n this.updateGridColumns();\n }\n this.updateDisplayedColumns(source);\n var event = {\n type: eventName,\n columns: masterList,\n column: masterList.length === 1 ? masterList[0] : null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.setValueColumns = function (colKeys, source) {\n if (source === void 0) { source = \"api\"; }\n this.setPrimaryColumnList(colKeys, this.valueColumns, Events.EVENT_COLUMN_VALUE_CHANGED, this.setValueActive.bind(this), source);\n };\n ColumnController.prototype.setValueActive = function (active, column, source) {\n if (active === column.isValueActive()) {\n return;\n }\n column.setValueActive(active, source);\n if (active && !column.getAggFunc()) {\n var defaultAggFunc = this.aggFuncService.getDefaultAggFunc(column);\n column.setAggFunc(defaultAggFunc);\n }\n };\n ColumnController.prototype.addValueColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.valueColumns, true, this.setValueActive.bind(this, true), Events.EVENT_COLUMN_VALUE_CHANGED, source);\n };\n ColumnController.prototype.addValueColumn = function (colKey, source) {\n if (source === void 0) { source = \"api\"; }\n if (colKey) {\n this.addValueColumns([colKey], source);\n }\n };\n ColumnController.prototype.removeValueColumn = function (colKey, source) {\n if (source === void 0) { source = \"api\"; }\n this.removeValueColumns([colKey], source);\n };\n ColumnController.prototype.removeValueColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.valueColumns, false, this.setValueActive.bind(this, false), Events.EVENT_COLUMN_VALUE_CHANGED, source);\n };\n // returns the width we can set to this col, taking into consideration min and max widths\n ColumnController.prototype.normaliseColumnWidth = function (column, newWidth) {\n if (newWidth < column.getMinWidth()) {\n newWidth = column.getMinWidth();\n }\n if (column.isGreaterThanMax(newWidth)) {\n newWidth = column.getMaxWidth();\n }\n return newWidth;\n };\n ColumnController.prototype.getPrimaryOrGridColumn = function (key) {\n var column = this.getPrimaryColumn(key);\n if (column) {\n return column;\n }\n else {\n return this.getGridColumn(key);\n }\n };\n ColumnController.prototype.setColumnWidth = function (key, // @key - the column who's size we want to change\n newWidth, // @newWidth - width in pixels\n shiftKey, // @takeFromAdjacent - if user has 'shift' pressed, then pixels are taken from adjacent column\n finished, // @finished - ends up in the event, tells the user if more events are to come\n source) {\n if (source === void 0) { source = \"api\"; }\n var col = this.getPrimaryOrGridColumn(key);\n if (!col) {\n return;\n }\n var sets = [];\n sets.push({\n width: newWidth,\n ratios: [1],\n columns: [col]\n });\n // if user wants to do shift resize by default, then we invert the shift operation\n var defaultIsShift = this.gridOptionsWrapper.getColResizeDefault() === 'shift';\n if (defaultIsShift) {\n shiftKey = !shiftKey;\n }\n if (shiftKey) {\n var otherCol = this.getDisplayedColAfter(col);\n if (!otherCol) {\n return;\n }\n var widthDiff = col.getActualWidth() - newWidth;\n var otherColWidth = otherCol.getActualWidth() + widthDiff;\n sets.push({\n width: otherColWidth,\n ratios: [1],\n columns: [otherCol]\n });\n }\n this.resizeColumnSets(sets, finished, source);\n };\n ColumnController.prototype.checkMinAndMaxWidthsForSet = function (columnResizeSet) {\n var columns = columnResizeSet.columns, width = columnResizeSet.width;\n // every col has a min width, so sum them all up and see if we have enough room\n // for all the min widths\n var minWidthAccumulated = 0;\n var maxWidthAccumulated = 0;\n var maxWidthActive = true;\n columns.forEach(function (col) {\n minWidthAccumulated += col.getMinWidth();\n if (col.getMaxWidth() > 0) {\n maxWidthAccumulated += col.getMaxWidth();\n }\n else {\n // if at least one columns has no max width, it means the group of columns\n // then has no max width, as at least one column can take as much width as possible\n maxWidthActive = false;\n }\n });\n var minWidthPasses = width >= minWidthAccumulated;\n var maxWidthPasses = !maxWidthActive || (width <= maxWidthAccumulated);\n return minWidthPasses && maxWidthPasses;\n };\n // method takes sets of columns and resizes them. either all sets will be resized, or nothing\n // be resized. this is used for example when user tries to resize a group and holds shift key,\n // then both the current group (grows), and the adjacent group (shrinks), will get resized,\n // so that's two sets for this method.\n ColumnController.prototype.resizeColumnSets = function (resizeSets, finished, source) {\n var passMinMaxCheck = _.every(resizeSets, this.checkMinAndMaxWidthsForSet.bind(this));\n if (!passMinMaxCheck) {\n // even though we are not going to resize beyond min/max size, we still need to raise event when finished\n if (finished) {\n var columns = resizeSets && resizeSets.length > 0 ? resizeSets[0].columns : null;\n var event_3 = {\n type: Events.EVENT_COLUMN_RESIZED,\n columns: columns,\n column: columns && columns.length === 1 ? columns[0] : null,\n finished: finished,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_3);\n }\n return; // don't resize!\n }\n var changedCols = [];\n var allCols = [];\n resizeSets.forEach(function (set) {\n var width = set.width, columns = set.columns, ratios = set.ratios;\n // keep track of pixels used, and last column gets the remaining,\n // to cater for rounding errors, and min width adjustments\n var newWidths = {};\n var finishedCols = {};\n columns.forEach(function (col) { return allCols.push(col); });\n // the loop below goes through each col. if a col exceeds it's min/max width,\n // it then gets set to its min/max width and the column is removed marked as 'finished'\n // and the calculation is done again leaving this column out. take for example columns\n // {A, width: 50, maxWidth: 100}\n // {B, width: 50}\n // {C, width: 50}\n // and then the set is set to width 600 - on the first pass the grid tries to set each column\n // to 200. it checks A and sees 200 > 100 and so sets the width to 100. col A is then marked\n // as 'finished' and the calculation is done again with the remaining cols B and C, which end up\n // splitting the remaining 500 pixels.\n var finishedColsGrew = true;\n var loopCount = 0;\n var _loop_2 = function () {\n loopCount++;\n if (loopCount > 1000) {\n // this should never happen, but in the future, someone might introduce a bug here,\n // so we stop the browser from hanging and report bug properly\n console.error('ag-Grid: infinite loop in resizeColumnSets');\n return \"break\";\n }\n finishedColsGrew = false;\n var subsetCols = [];\n var subsetRatios = [];\n var subsetRatioTotal = 0;\n var pixelsToDistribute = width;\n columns.forEach(function (col, index) {\n var thisColFinished = finishedCols[col.getId()];\n if (thisColFinished) {\n pixelsToDistribute -= newWidths[col.getId()];\n }\n else {\n subsetCols.push(col);\n var ratioThisCol = ratios[index];\n subsetRatioTotal += ratioThisCol;\n subsetRatios.push(ratioThisCol);\n }\n });\n // because we are not using all of the ratios (cols can be missing),\n // we scale the ratio. if all columns are included, then subsetRatioTotal=1,\n // and so the ratioScale will be 1.\n var ratioScale = 1 / subsetRatioTotal;\n subsetCols.forEach(function (col, index) {\n var lastCol = index === (subsetCols.length - 1);\n var colNewWidth;\n if (lastCol) {\n colNewWidth = pixelsToDistribute;\n }\n else {\n colNewWidth = Math.round(ratios[index] * width * ratioScale);\n pixelsToDistribute -= colNewWidth;\n }\n if (colNewWidth < col.getMinWidth()) {\n colNewWidth = col.getMinWidth();\n finishedCols[col.getId()] = true;\n finishedColsGrew = true;\n }\n else if (col.getMaxWidth() > 0 && colNewWidth > col.getMaxWidth()) {\n colNewWidth = col.getMaxWidth();\n finishedCols[col.getId()] = true;\n finishedColsGrew = true;\n }\n newWidths[col.getId()] = colNewWidth;\n });\n };\n while (finishedColsGrew) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n columns.forEach(function (col) {\n var newWidth = newWidths[col.getId()];\n if (col.getActualWidth() !== newWidth) {\n col.setActualWidth(newWidth, source);\n changedCols.push(col);\n }\n });\n });\n // if no cols changed, then no need to update more or send event.\n var atLeastOneColChanged = changedCols.length > 0;\n if (atLeastOneColChanged) {\n this.setLeftValues(source);\n this.updateBodyWidths();\n this.checkDisplayedVirtualColumns();\n }\n // check for change first, to avoid unnecessary firing of events\n // however we always fire 'finished' events. this is important\n // when groups are resized, as if the group is changing slowly,\n // eg 1 pixel at a time, then each change will fire change events\n // in all the columns in the group, but only one with get the pixel.\n if (atLeastOneColChanged || finished) {\n var event_4 = {\n type: Events.EVENT_COLUMN_RESIZED,\n columns: allCols,\n column: allCols.length === 1 ? allCols[0] : null,\n finished: finished,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_4);\n }\n };\n ColumnController.prototype.setColumnAggFunc = function (column, aggFunc, source) {\n if (source === void 0) { source = \"api\"; }\n if (column) {\n column.setAggFunc(aggFunc);\n var event_5 = {\n type: Events.EVENT_COLUMN_VALUE_CHANGED,\n columns: [column],\n column: column,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_5);\n }\n };\n ColumnController.prototype.moveRowGroupColumn = function (fromIndex, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n var column = this.rowGroupColumns[fromIndex];\n this.rowGroupColumns.splice(fromIndex, 1);\n this.rowGroupColumns.splice(toIndex, 0, column);\n var event = {\n type: Events.EVENT_COLUMN_ROW_GROUP_CHANGED,\n columns: this.rowGroupColumns,\n column: this.rowGroupColumns.length === 1 ? this.rowGroupColumns[0] : null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.moveColumns = function (columnsToMoveKeys, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n this.columnAnimationService.start();\n if (toIndex > this.gridColumns.length - columnsToMoveKeys.length) {\n console.warn('ag-Grid: tried to insert columns in invalid location, toIndex = ' + toIndex);\n console.warn('ag-Grid: remember that you should not count the moving columns when calculating the new index');\n return;\n }\n // we want to pull all the columns out first and put them into an ordered list\n var columnsToMove = this.getGridColumns(columnsToMoveKeys);\n var failedRules = !this.doesMovePassRules(columnsToMove, toIndex);\n if (failedRules) {\n return;\n }\n _.moveInArray(this.gridColumns, columnsToMove, toIndex);\n this.updateDisplayedColumns(source);\n var event = {\n type: Events.EVENT_COLUMN_MOVED,\n columns: columnsToMove,\n column: columnsToMove.length === 1 ? columnsToMove[0] : null,\n toIndex: toIndex,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n this.columnAnimationService.finish();\n };\n ColumnController.prototype.doesMovePassRules = function (columnsToMove, toIndex) {\n // make a copy of what the grid columns would look like after the move\n var proposedColumnOrder = this.gridColumns.slice();\n _.moveInArray(proposedColumnOrder, columnsToMove, toIndex);\n // then check that the new proposed order of the columns passes all rules\n if (!this.doesMovePassMarryChildren(proposedColumnOrder)) {\n return false;\n }\n if (!this.doesMovePassLockedPositions(proposedColumnOrder)) {\n return false;\n }\n return true;\n };\n ColumnController.prototype.doesMovePassLockedPositions = function (proposedColumnOrder) {\n var foundNonLocked = false;\n var rulePassed = true;\n // go though the cols, see if any non-locked appear before any locked\n proposedColumnOrder.forEach(function (col) {\n if (col.getColDef().lockPosition) {\n if (foundNonLocked) {\n rulePassed = false;\n }\n }\n else {\n foundNonLocked = true;\n }\n });\n return rulePassed;\n };\n ColumnController.prototype.doesMovePassMarryChildren = function (allColumnsCopy) {\n var rulePassed = true;\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (child) {\n if (!(child instanceof OriginalColumnGroup)) {\n return;\n }\n var columnGroup = child;\n var marryChildren = columnGroup.getColGroupDef() && columnGroup.getColGroupDef().marryChildren;\n if (!marryChildren) {\n return;\n }\n var newIndexes = [];\n columnGroup.getLeafColumns().forEach(function (col) {\n var newColIndex = allColumnsCopy.indexOf(col);\n newIndexes.push(newColIndex);\n });\n var maxIndex = Math.max.apply(Math, newIndexes);\n var minIndex = Math.min.apply(Math, newIndexes);\n // spread is how far the first column in this group is away from the last column\n var spread = maxIndex - minIndex;\n var maxSpread = columnGroup.getLeafColumns().length - 1;\n // if the columns\n if (spread > maxSpread) {\n rulePassed = false;\n }\n // console.log(`maxIndex = ${maxIndex}, minIndex = ${minIndex}, spread = ${spread}, maxSpread = ${maxSpread}, fail = ${spread > (count-1)}`)\n // console.log(allColumnsCopy.map( col => col.getColDef().field).join(','));\n });\n return rulePassed;\n };\n ColumnController.prototype.moveColumn = function (key, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n this.moveColumns([key], toIndex, source);\n };\n ColumnController.prototype.moveColumnByIndex = function (fromIndex, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n var column = this.gridColumns[fromIndex];\n this.moveColumn(column, toIndex, source);\n };\n // used by:\n // + angularGrid -> for setting body width\n // + rowController -> setting main row widths (when inserting and resizing)\n // need to cache this\n ColumnController.prototype.getBodyContainerWidth = function () {\n return this.bodyWidth;\n };\n ColumnController.prototype.getContainerWidth = function (pinned) {\n switch (pinned) {\n case Constants.PINNED_LEFT:\n return this.leftWidth;\n case Constants.PINNED_RIGHT:\n return this.rightWidth;\n default:\n return this.bodyWidth;\n }\n };\n // after setColumnWidth or updateGroupsAndDisplayedColumns\n ColumnController.prototype.updateBodyWidths = function () {\n var newBodyWidth = this.getWidthOfColsInList(this.displayedCenterColumns);\n var newLeftWidth = this.getWidthOfColsInList(this.displayedLeftColumns);\n var newRightWidth = this.getWidthOfColsInList(this.displayedRightColumns);\n // this is used by virtual col calculation, for RTL only, as a change to body width can impact displayed\n // columns, due to RTL inverting the y coordinates\n this.bodyWidthDirty = this.bodyWidth !== newBodyWidth;\n var atLeastOneChanged = this.bodyWidth !== newBodyWidth || this.leftWidth !== newLeftWidth || this.rightWidth !== newRightWidth;\n if (atLeastOneChanged) {\n this.bodyWidth = newBodyWidth;\n this.leftWidth = newLeftWidth;\n this.rightWidth = newRightWidth;\n // when this fires, it is picked up by the gridPanel, which ends up in\n // gridPanel calling setWidthAndScrollPosition(), which in turn calls setVirtualViewportPosition()\n var event_6 = {\n type: Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_6);\n }\n };\n // + rowController\n ColumnController.prototype.getValueColumns = function () {\n return this.valueColumns ? this.valueColumns : [];\n };\n // + rowController\n ColumnController.prototype.getPivotColumns = function () {\n return this.pivotColumns ? this.pivotColumns : [];\n };\n // + clientSideRowModel\n ColumnController.prototype.isPivotActive = function () {\n return this.pivotColumns && this.pivotColumns.length > 0 && this.pivotMode;\n };\n // + toolPanel\n ColumnController.prototype.getRowGroupColumns = function () {\n return this.rowGroupColumns ? this.rowGroupColumns : [];\n };\n // + rowController -> while inserting rows\n ColumnController.prototype.getDisplayedCenterColumns = function () {\n return this.displayedCenterColumns;\n };\n // + rowController -> while inserting rows\n ColumnController.prototype.getDisplayedLeftColumns = function () {\n return this.displayedLeftColumns;\n };\n ColumnController.prototype.getDisplayedRightColumns = function () {\n return this.displayedRightColumns;\n };\n ColumnController.prototype.getDisplayedColumns = function (type) {\n switch (type) {\n case Constants.PINNED_LEFT:\n return this.getDisplayedLeftColumns();\n case Constants.PINNED_RIGHT:\n return this.getDisplayedRightColumns();\n default:\n return this.getDisplayedCenterColumns();\n }\n };\n // used by:\n // + clientSideRowController -> sorting, building quick filter text\n // + headerRenderer -> sorting (clearing icon)\n ColumnController.prototype.getAllPrimaryColumns = function () {\n return this.primaryColumns ? this.primaryColumns.slice() : null;\n };\n ColumnController.prototype.getSecondaryColumns = function () {\n return this.secondaryColumns ? this.secondaryColumns.slice() : null;\n };\n ColumnController.prototype.getAllColumnsForQuickFilter = function () {\n return this.columnsForQuickFilter;\n };\n // + moveColumnController\n ColumnController.prototype.getAllGridColumns = function () {\n return this.gridColumns;\n };\n ColumnController.prototype.isEmpty = function () {\n return _.missingOrEmpty(this.gridColumns);\n };\n ColumnController.prototype.isRowGroupEmpty = function () {\n return _.missingOrEmpty(this.rowGroupColumns);\n };\n ColumnController.prototype.setColumnVisible = function (key, visible, source) {\n if (source === void 0) { source = \"api\"; }\n this.setColumnsVisible([key], visible, source);\n };\n ColumnController.prototype.setColumnsVisible = function (keys, visible, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n this.columnAnimationService.start();\n this.actionOnGridColumns(keys, function (column) {\n if (column.isVisible() !== visible) {\n column.setVisible(visible, source);\n return true;\n }\n else {\n return false;\n }\n }, source, function () {\n var event = {\n type: Events.EVENT_COLUMN_VISIBLE,\n visible: visible,\n column: null,\n columns: null,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n source: source\n };\n return event;\n });\n this.columnAnimationService.finish();\n };\n ColumnController.prototype.setColumnPinned = function (key, pinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.setColumnsPinned([key], pinned, source);\n }\n };\n ColumnController.prototype.setColumnsPinned = function (keys, pinned, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n if (this.gridOptionsWrapper.getDomLayout() === 'print') {\n console.warn(\"Changing the column pinning status is not allowed with domLayout='print'\");\n return;\n }\n this.columnAnimationService.start();\n var actualPinned;\n if (pinned === true || pinned === Constants.PINNED_LEFT) {\n actualPinned = Constants.PINNED_LEFT;\n }\n else if (pinned === Constants.PINNED_RIGHT) {\n actualPinned = Constants.PINNED_RIGHT;\n }\n else {\n actualPinned = null;\n }\n this.actionOnGridColumns(keys, function (col) {\n if (col.getPinned() !== actualPinned) {\n col.setPinned(actualPinned);\n return true;\n }\n else {\n return false;\n }\n }, source, function () {\n var event = {\n type: Events.EVENT_COLUMN_PINNED,\n pinned: actualPinned,\n column: null,\n columns: null,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n source: source\n };\n return event;\n });\n this.columnAnimationService.finish();\n };\n // does an action on a set of columns. provides common functionality for looking up the\n // columns based on key, getting a list of effected columns, and then updated the event\n // with either one column (if it was just one col) or a list of columns\n // used by: autoResize, setVisible, setPinned\n ColumnController.prototype.actionOnGridColumns = function (// the column keys this action will be on\n keys, \n // the action to do - if this returns false, the column was skipped\n // and won't be included in the event\n action, \n // should return back a column event of the right type\n source, createEvent) {\n var _this = this;\n if (_.missingOrEmpty(keys)) {\n return;\n }\n var updatedColumns = [];\n keys.forEach(function (key) {\n var column = _this.getGridColumn(key);\n if (!column) {\n return;\n }\n // need to check for false with type (ie !== instead of !=)\n // as not returning anything (undefined) would also be false\n var resultOfAction = action(column);\n if (resultOfAction !== false) {\n updatedColumns.push(column);\n }\n });\n if (updatedColumns.length === 0) {\n return;\n }\n this.updateDisplayedColumns(source);\n if (_.exists(createEvent) && createEvent) {\n var event_7 = createEvent();\n event_7.columns = updatedColumns;\n event_7.column = updatedColumns.length === 1 ? updatedColumns[0] : null;\n this.eventService.dispatchEvent(event_7);\n }\n };\n ColumnController.prototype.getDisplayedColBefore = function (col) {\n var allDisplayedColumns = this.getAllDisplayedColumns();\n var oldIndex = allDisplayedColumns.indexOf(col);\n if (oldIndex > 0) {\n return allDisplayedColumns[oldIndex - 1];\n }\n else {\n return null;\n }\n };\n // used by:\n // + rowRenderer -> for navigation\n ColumnController.prototype.getDisplayedColAfter = function (col) {\n var allDisplayedColumns = this.getAllDisplayedColumns();\n var oldIndex = allDisplayedColumns.indexOf(col);\n if (oldIndex < (allDisplayedColumns.length - 1)) {\n return allDisplayedColumns[oldIndex + 1];\n }\n else {\n return null;\n }\n };\n ColumnController.prototype.getDisplayedGroupAfter = function (columnGroup) {\n // pick one col in this group at random\n var col = columnGroup.getDisplayedLeafColumns()[0];\n var requiredLevel = columnGroup.getOriginalColumnGroup().getLevel();\n while (true) {\n // keep moving to the next col, until we get to another group\n col = this.getDisplayedColAfter(col);\n // if no col after, means no group after\n if (!col) {\n return null;\n }\n // get group at same level as the one we are looking for\n var groupPointer = col.getParent();\n while (groupPointer.getOriginalColumnGroup().getLevel() !== requiredLevel) {\n groupPointer = groupPointer.getParent();\n }\n if (groupPointer !== columnGroup) {\n return groupPointer;\n }\n }\n };\n ColumnController.prototype.isPinningLeft = function () {\n return this.displayedLeftColumns.length > 0;\n };\n ColumnController.prototype.isPinningRight = function () {\n return this.displayedRightColumns.length > 0;\n };\n ColumnController.prototype.getPrimaryAndSecondaryAndAutoColumns = function () {\n var result = this.primaryColumns ? this.primaryColumns.slice(0) : [];\n if (this.groupAutoColumns && _.exists(this.groupAutoColumns)) {\n this.groupAutoColumns.forEach(function (col) { return result.push(col); });\n }\n if (this.secondaryColumnsPresent && this.secondaryColumns) {\n this.secondaryColumns.forEach(function (column) { return result.push(column); });\n }\n return result;\n };\n ColumnController.prototype.createStateItemFromColumn = function (column) {\n var rowGroupIndex = column.isRowGroupActive() ? this.rowGroupColumns.indexOf(column) : null;\n var pivotIndex = column.isPivotActive() ? this.pivotColumns.indexOf(column) : null;\n var aggFunc = column.isValueActive() ? column.getAggFunc() : null;\n return {\n colId: column.getColId(),\n hide: !column.isVisible(),\n aggFunc: aggFunc,\n width: column.getActualWidth(),\n pivotIndex: pivotIndex,\n pinned: column.getPinned(),\n rowGroupIndex: rowGroupIndex\n };\n };\n ColumnController.prototype.getColumnState = function () {\n if (_.missing(this.primaryColumns)) {\n return [];\n }\n var primaryColumnState = this.primaryColumns.map(this.createStateItemFromColumn.bind(this));\n var groupAutoColumnState = this.groupAutoColumns\n // if groupAutoCols, then include them\n ? this.groupAutoColumns.map(this.createStateItemFromColumn.bind(this))\n // otherwise no\n : [];\n var columnStateList = groupAutoColumnState.concat(primaryColumnState);\n if (!this.pivotMode) {\n this.orderColumnStateList(columnStateList);\n }\n return columnStateList;\n };\n ColumnController.prototype.orderColumnStateList = function (columnStateList) {\n var gridColumnIds = this.gridColumns.map(function (column) { return column.getColId(); });\n columnStateList.sort(function (itemA, itemB) {\n var posA = gridColumnIds.indexOf(itemA.colId);\n var posB = gridColumnIds.indexOf(itemB.colId);\n return posA - posB;\n });\n };\n ColumnController.prototype.resetColumnState = function (suppressEverythingEvent, source) {\n // NOTE = there is one bug here that no customer has noticed - if a column has colDef.lockPosition,\n // this is ignored below when ordering the cols. to work, we should always put lockPosition cols first.\n // As a work around, developers should just put lockPosition columns first in their colDef list.\n if (suppressEverythingEvent === void 0) { suppressEverythingEvent = false; }\n if (source === void 0) { source = \"api\"; }\n // we can't use 'allColumns' as the order might of messed up, so get the primary ordered list\n var primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);\n var columnStates = [];\n // we start at 1000, so if user has mix of rowGroup and group specified, it will work with both.\n // eg IF user has ColA.rowGroupIndex=0, ColB.rowGroupIndex=1, ColC.rowGroup=true,\n // THEN result will be ColA.rowGroupIndex=0, ColB.rowGroupIndex=1, ColC.rowGroup=1000\n var letRowGroupIndex = 1000;\n var letPivotIndex = 1000;\n if (primaryColumns) {\n primaryColumns.forEach(function (column) {\n var rowGroupIndex = column.getColDef().rowGroupIndex;\n var rowGroup = column.getColDef().rowGroup;\n var pivotIndex = column.getColDef().pivotIndex;\n var pivot = column.getColDef().pivot;\n var stateItem = {\n colId: column.getColId(),\n aggFunc: column.getColDef().aggFunc,\n hide: column.getColDef().hide,\n pinned: column.getColDef().pinned,\n rowGroupIndex: rowGroupIndex,\n pivotIndex: column.getColDef().pivotIndex,\n width: column.getColDef().width\n };\n if (_.missing(rowGroupIndex) && rowGroup) {\n stateItem.rowGroupIndex = letRowGroupIndex++;\n }\n if (_.missing(pivotIndex) && pivot) {\n stateItem.pivotIndex = letPivotIndex++;\n }\n columnStates.push(stateItem);\n });\n }\n this.setColumnState(columnStates, suppressEverythingEvent, source);\n };\n ColumnController.prototype.setColumnState = function (columnStates, suppressEverythingEvent, source) {\n var _this = this;\n if (suppressEverythingEvent === void 0) { suppressEverythingEvent = false; }\n if (source === void 0) { source = \"api\"; }\n if (_.missingOrEmpty(this.primaryColumns)) {\n return false;\n }\n var columnStateBefore = this.getColumnState();\n this.autoGroupsNeedBuilding = true;\n // at the end below, this list will have all columns we got no state for\n var columnsWithNoState = this.primaryColumns.slice();\n this.rowGroupColumns = [];\n this.valueColumns = [];\n this.pivotColumns = [];\n var success = true;\n var rowGroupIndexes = {};\n var pivotIndexes = {};\n var autoGroupColumnStates = [];\n if (columnStates) {\n columnStates.forEach(function (state) {\n // auto group columns are re-created so deferring syncing with ColumnState\n if (_.exists(_this.getAutoColumn(state.colId))) {\n autoGroupColumnStates.push(state);\n return;\n }\n var column = _this.getPrimaryColumn(state.colId);\n if (!column) {\n console.warn('ag-grid: column ' + state.colId + ' not found');\n success = false;\n }\n else {\n _this.syncColumnWithStateItem(column, state, rowGroupIndexes, pivotIndexes, source);\n _.removeFromArray(columnsWithNoState, column);\n }\n });\n }\n // anything left over, we got no data for, so add in the column as non-value, non-rowGroup and hidden\n columnsWithNoState.forEach(this.syncColumnWithNoState.bind(this));\n // sort the lists according to the indexes that were provided\n this.rowGroupColumns.sort(this.sortColumnListUsingIndexes.bind(this, rowGroupIndexes));\n this.pivotColumns.sort(this.sortColumnListUsingIndexes.bind(this, pivotIndexes));\n this.updateGridColumns();\n // sync newly created auto group columns with ColumnState\n autoGroupColumnStates.forEach(function (stateItem) {\n var autoCol = _this.getAutoColumn(stateItem.colId);\n _this.syncColumnWithStateItem(autoCol, stateItem, rowGroupIndexes, pivotIndexes, source);\n });\n if (columnStates) {\n var orderOfColIds_1 = columnStates.map(function (stateItem) { return stateItem.colId; });\n this.gridColumns.sort(function (colA, colB) {\n var indexA = orderOfColIds_1.indexOf(colA.getId());\n var indexB = orderOfColIds_1.indexOf(colB.getId());\n return indexA - indexB;\n });\n }\n // this is already done in updateGridColumns, however we changed the order above (to match the order of the state\n // columns) so we need to do it again. we could of put logic into the order above to take into account fixed\n // columns, however if we did then we would have logic for updating fixed columns twice. reusing the logic here\n // is less sexy for the code here, but it keeps consistency.\n this.putFixedColumnsFirst();\n this.updateDisplayedColumns(source);\n if (!suppressEverythingEvent) {\n var event_8 = {\n type: Events.EVENT_COLUMN_EVERYTHING_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_8);\n }\n this.raiseColumnEvents(columnStateBefore, source);\n return success;\n };\n ColumnController.prototype.raiseColumnEvents = function (columnStateBefore, source) {\n var _this = this;\n if (this.gridOptionsWrapper.isSuppressSetColumnStateEvents()) {\n return;\n }\n var columnStateAfter = this.getColumnState();\n // raises generic ColumnEvents where all columns are returned rather than what has changed\n var raiseEventWithAllColumns = function (eventType, idMapper, columns) {\n var unchanged = _.compareArrays(columnStateBefore.map(idMapper).sort(), columnStateAfter.map(idMapper).sort());\n if (unchanged) {\n return;\n }\n // returning all columns rather than what has changed!\n var event = {\n type: eventType,\n columns: columns,\n column: columns.length === 1 ? columns[0] : null,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n source: source\n };\n _this.eventService.dispatchEvent(event);\n };\n // determines which columns have changed according to supplied predicate\n var getChangedColumns = function (changedPredicate) {\n var changedColumns = [];\n var columnStateBeforeMap = {};\n columnStateBefore.forEach(function (col) {\n columnStateBeforeMap[col.colId] = col;\n });\n _this.gridColumns.forEach(function (column) {\n var colStateBefore = columnStateBeforeMap[column.getColId()];\n if (!colStateBefore || changedPredicate(colStateBefore, column)) {\n changedColumns.push(column);\n }\n });\n return changedColumns;\n };\n // generic ColumnEvents which return current column list\n var valueColumnIdMapper = function (cs) { return cs.colId + '-' + cs.aggFunc; };\n raiseEventWithAllColumns(Events.EVENT_COLUMN_VALUE_CHANGED, valueColumnIdMapper, this.valueColumns);\n var pivotColumnIdMapper = function (cs) { return cs.colId + '-' + cs.pivotIndex; };\n raiseEventWithAllColumns(Events.EVENT_COLUMN_PIVOT_CHANGED, pivotColumnIdMapper, this.pivotColumns);\n var rowGroupColumnIdMapper = function (cs) { return cs.colId + '-' + cs.rowGroupIndex; };\n raiseEventWithAllColumns(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, rowGroupColumnIdMapper, this.rowGroupColumns);\n // specific ColumnEvents which return what's changed\n var pinnedChangePredicate = function (cs, c) { return cs.pinned !== c.getPinned(); };\n this.raiseColumnPinnedEvent(getChangedColumns(pinnedChangePredicate), source);\n var visibilityChangePredicate = function (cs, c) { return cs.hide === c.isVisible(); };\n var cols = getChangedColumns(visibilityChangePredicate);\n this.raiseColumnVisibleEvent(cols, source);\n var resizeChangePredicate = function (cs, c) { return cs.width !== c.getActualWidth(); };\n this.raiseColumnResizeEvent(getChangedColumns(resizeChangePredicate), source);\n // special handling for moved column events\n this.raiseColumnMovedEvent(columnStateBefore, source);\n };\n ColumnController.prototype.raiseColumnPinnedEvent = function (changedColumns, source) {\n if (changedColumns.length > 0) {\n var event_9 = {\n type: Events.EVENT_COLUMN_PINNED,\n pinned: null,\n columns: changedColumns,\n column: null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_9);\n }\n };\n ColumnController.prototype.raiseColumnVisibleEvent = function (changedColumns, source) {\n if (changedColumns.length > 0) {\n var event_10 = {\n type: Events.EVENT_COLUMN_VISIBLE,\n visible: undefined,\n columns: changedColumns,\n column: null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_10);\n }\n };\n ColumnController.prototype.raiseColumnResizeEvent = function (changedColumns, source) {\n if (changedColumns.length > 0) {\n var event_11 = {\n type: Events.EVENT_COLUMN_RESIZED,\n columns: changedColumns,\n column: null,\n finished: true,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_11);\n }\n };\n ColumnController.prototype.raiseColumnMovedEvent = function (columnStateBefore, source) {\n var movedColumns = [];\n var columnStateAfter = this.getColumnState();\n var _loop_3 = function (i) {\n var before = columnStateBefore[i];\n var after = columnStateAfter[i];\n // don't consider column if reintroduced or hidden\n if (!before || after.hide) {\n return \"continue\";\n }\n if (before.colId !== after.colId) {\n var predicate = function (column) { return column.getColId() === after.colId; };\n var movedColumn = _.find(this_1.allDisplayedColumns, predicate);\n movedColumns.push(movedColumn);\n }\n };\n var this_1 = this;\n for (var i = 0; i < columnStateAfter.length; i++) {\n _loop_3(i);\n }\n if (movedColumns.length > 0) {\n var event_12 = {\n type: Events.EVENT_COLUMN_MOVED,\n columns: movedColumns,\n column: null,\n toIndex: undefined,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_12);\n }\n };\n ColumnController.prototype.sortColumnListUsingIndexes = function (indexes, colA, colB) {\n var indexA = indexes[colA.getId()];\n var indexB = indexes[colB.getId()];\n return indexA - indexB;\n };\n ColumnController.prototype.syncColumnWithNoState = function (column, source) {\n column.setVisible(false, source);\n column.setAggFunc(null);\n column.setPinned(null);\n column.setRowGroupActive(false, source);\n column.setPivotActive(false, source);\n column.setValueActive(false, source);\n };\n ColumnController.prototype.syncColumnWithStateItem = function (column, stateItem, rowGroupIndexes, pivotIndexes, source) {\n if (!column) {\n return;\n }\n // following ensures we are left with boolean true or false, eg converts (null, undefined, 0) all to true\n column.setVisible(!stateItem.hide, source);\n // sets pinned to 'left' or 'right'\n column.setPinned(stateItem.pinned);\n // if width provided and valid, use it, otherwise stick with the old width\n var minColWidth = this.gridOptionsWrapper.getMinColWidth();\n if (stateItem.width && minColWidth &&\n (stateItem.width >= minColWidth)) {\n column.setActualWidth(stateItem.width, source);\n }\n if (typeof stateItem.aggFunc === 'string') {\n column.setAggFunc(stateItem.aggFunc);\n column.setValueActive(true, source);\n this.valueColumns.push(column);\n }\n else {\n if (_.exists(stateItem.aggFunc)) {\n console.warn('ag-Grid: stateItem.aggFunc must be a string. if using your own aggregation ' +\n 'functions, register the functions first before using them in get/set state. This is because it is' +\n 'intended for the column state to be stored and retrieved as simple JSON.');\n }\n column.setAggFunc(null);\n column.setValueActive(false, source);\n }\n if (typeof stateItem.rowGroupIndex === 'number') {\n this.rowGroupColumns.push(column);\n column.setRowGroupActive(true, source);\n rowGroupIndexes[column.getId()] = stateItem.rowGroupIndex;\n }\n else {\n column.setRowGroupActive(false, source);\n }\n if (typeof stateItem.pivotIndex === 'number') {\n this.pivotColumns.push(column);\n column.setPivotActive(true, source);\n pivotIndexes[column.getId()] = stateItem.pivotIndex;\n }\n else {\n column.setPivotActive(false, source);\n }\n };\n ColumnController.prototype.getGridColumns = function (keys) {\n return this.getColumns(keys, this.getGridColumn.bind(this));\n };\n ColumnController.prototype.getColumns = function (keys, columnLookupCallback) {\n var foundColumns = [];\n if (keys) {\n keys.forEach(function (key) {\n var column = columnLookupCallback(key);\n if (column) {\n foundColumns.push(column);\n }\n });\n }\n return foundColumns;\n };\n // used by growGroupPanel\n ColumnController.prototype.getColumnWithValidation = function (key) {\n if (key == null) {\n return null;\n }\n var column = this.getGridColumn(key);\n if (!column) {\n console.warn('ag-Grid: could not find column ' + key);\n }\n return column;\n };\n ColumnController.prototype.getPrimaryColumn = function (key) {\n return this.getColumn(key, this.primaryColumns);\n };\n ColumnController.prototype.getGridColumn = function (key) {\n return this.getColumn(key, this.gridColumns);\n };\n ColumnController.prototype.getColumn = function (key, columnList) {\n if (!key) {\n return null;\n }\n for (var i = 0; i < columnList.length; i++) {\n if (this.columnsMatch(columnList[i], key)) {\n return columnList[i];\n }\n }\n return this.getAutoColumn(key);\n };\n ColumnController.prototype.getAutoColumn = function (key) {\n var _this = this;\n if (!this.groupAutoColumns || !_.exists(this.groupAutoColumns) || _.missing(this.groupAutoColumns)) {\n return null;\n }\n return _.find(this.groupAutoColumns, function (groupCol) {\n return _this.columnsMatch(groupCol, key);\n });\n };\n ColumnController.prototype.columnsMatch = function (column, key) {\n var columnMatches = column === key;\n var colDefMatches = column.getColDef() === key;\n var idMatches = column.getColId() == key;\n return columnMatches || colDefMatches || idMatches;\n };\n ColumnController.prototype.getDisplayNameForColumn = function (column, location, includeAggFunc) {\n if (includeAggFunc === void 0) { includeAggFunc = false; }\n if (!column) {\n return null;\n }\n var headerName = this.getHeaderName(column.getColDef(), column, null, null, location);\n if (includeAggFunc) {\n return this.wrapHeaderNameWithAggFunc(column, headerName);\n }\n else {\n return headerName;\n }\n };\n ColumnController.prototype.getDisplayNameForOriginalColumnGroup = function (columnGroup, originalColumnGroup, location) {\n var colGroupDef = originalColumnGroup ? originalColumnGroup.getColGroupDef() : null;\n if (colGroupDef) {\n return this.getHeaderName(colGroupDef, null, columnGroup, originalColumnGroup, location);\n }\n else {\n return null;\n }\n };\n ColumnController.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) {\n return this.getDisplayNameForOriginalColumnGroup(columnGroup, columnGroup.getOriginalColumnGroup(), location);\n };\n // location is where the column is going to appear, ie who is calling us\n ColumnController.prototype.getHeaderName = function (colDef, column, columnGroup, originalColumnGroup, location) {\n var headerValueGetter = colDef.headerValueGetter;\n if (headerValueGetter) {\n var params = {\n colDef: colDef,\n column: column,\n columnGroup: columnGroup,\n originalColumnGroup: originalColumnGroup,\n location: location,\n api: this.gridOptionsWrapper.getApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n if (typeof headerValueGetter === 'function') {\n // valueGetter is a function, so just call it\n return headerValueGetter(params);\n }\n else if (typeof headerValueGetter === 'string') {\n // valueGetter is an expression, so execute the expression\n return this.expressionService.evaluate(headerValueGetter, params);\n }\n else {\n console.warn('ag-grid: headerValueGetter must be a function or a string');\n return '';\n }\n }\n else if (colDef.headerName != null) {\n return colDef.headerName;\n }\n else if (colDef.field) {\n return _.camelCaseToHumanText(colDef.field);\n }\n else {\n return '';\n }\n };\n /*\n private getHeaderGroupName(columnGroup: ColumnGroup): string {\n let colGroupDef = columnGroup.getOriginalColumnGroup().getColGroupDef();\n let headerValueGetter = colGroupDef.headerValueGetter;\n\n if (headerValueGetter) {\n let params = {\n columnGroup: columnGroup,\n colDef: colGroupDef,\n api: this.gridOptionsWrapper.getApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n\n if (typeof headerValueGetter === 'function') {\n // valueGetter is a function, so just call it\n return headerValueGetter(params);\n } else if (typeof headerValueGetter === 'string') {\n // valueGetter is an expression, so execute the expression\n return this.expressionService.evaluate(headerValueGetter, params);\n } else {\n console.warn('ag-grid: headerValueGetter must be a function or a string');\n return '';\n }\n } else {\n return colGroupDef.headerName;\n }\n }\n */\n ColumnController.prototype.wrapHeaderNameWithAggFunc = function (column, headerName) {\n if (this.gridOptionsWrapper.isSuppressAggFuncInHeader()) {\n return headerName;\n }\n // only columns with aggregation active can have aggregations\n var pivotValueColumn = column.getColDef().pivotValueColumn;\n var pivotActiveOnThisColumn = _.exists(pivotValueColumn);\n var aggFunc = null;\n var aggFuncFound;\n // otherwise we have a measure that is active, and we are doing aggregation on it\n if (pivotActiveOnThisColumn) {\n aggFunc = pivotValueColumn ? pivotValueColumn.getAggFunc() : null;\n aggFuncFound = true;\n }\n else {\n var measureActive = column.isValueActive();\n var aggregationPresent = this.pivotMode || !this.isRowGroupEmpty();\n if (measureActive && aggregationPresent) {\n aggFunc = column.getAggFunc();\n aggFuncFound = true;\n }\n else {\n aggFuncFound = false;\n }\n }\n if (aggFuncFound) {\n var aggFuncString = (typeof aggFunc === 'string') ? aggFunc : 'func';\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);\n return aggFuncStringTranslated + \"(\" + headerName + \")\";\n }\n else {\n return headerName;\n }\n };\n // returns the group with matching colId and instanceId. If instanceId is missing,\n // matches only on the colId.\n ColumnController.prototype.getColumnGroup = function (colId, instanceId) {\n if (!colId) {\n return null;\n }\n if (colId instanceof ColumnGroup) {\n return colId;\n }\n var allColumnGroups = this.getAllDisplayedColumnGroups();\n var checkInstanceId = typeof instanceId === 'number';\n var result = null;\n this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {\n if (child instanceof ColumnGroup) {\n var columnGroup = child;\n var matched = void 0;\n if (checkInstanceId) {\n matched = colId === columnGroup.getGroupId() && instanceId === columnGroup.getInstanceId();\n }\n else {\n matched = colId === columnGroup.getGroupId();\n }\n if (matched) {\n result = columnGroup;\n }\n }\n });\n return result;\n };\n ColumnController.prototype.isReady = function () {\n return this.ready;\n };\n ColumnController.prototype.createValueColumns = function (source, oldPrimaryColumns) {\n this.valueColumns = this.extractColumns(oldPrimaryColumns, this.valueColumns, function (col, flag) { return col.setValueActive(flag, source); }, \n // aggFunc doesn't have index variant, cos order of value cols doesn't matter, so always return null\n function () { return null; }, \n // aggFunc is a string, so return it's existence\n function (colDef) { return !!colDef.aggFunc; });\n // all new columns added will have aggFunc missing, so set it to what is in the colDef\n this.valueColumns.forEach(function (col) {\n if (!col.getAggFunc()) {\n col.setAggFunc(col.getColDef().aggFunc);\n }\n });\n };\n ColumnController.prototype.extractRowGroupColumns = function (source, oldPrimaryColumns) {\n this.rowGroupColumns = this.extractColumns(oldPrimaryColumns, this.rowGroupColumns, function (col, flag) { return col.setRowGroupActive(flag, source); }, function (colDef) { return colDef.rowGroupIndex; }, function (colDef) { return colDef.rowGroup; });\n };\n ColumnController.prototype.extractColumns = function (oldPrimaryColumns, previousCols, setFlagFunc, getIndexFunc, getValueFunc) {\n var _this = this;\n if (!previousCols) {\n previousCols = [];\n }\n // remove cols that no longer exist\n var colPresentInPrimaryFunc = function (col) { return _this.primaryColumns.indexOf(col) >= 0; };\n var colMissingFromPrimaryFunc = function (col) { return _this.primaryColumns.indexOf(col) < 0; };\n var colNewFunc = function (col) { return !oldPrimaryColumns || oldPrimaryColumns.indexOf(col) < 0; };\n var removedCols = previousCols.filter(colMissingFromPrimaryFunc);\n var existingCols = previousCols.filter(colPresentInPrimaryFunc);\n var newPrimaryCols = this.primaryColumns.filter(colNewFunc);\n removedCols.forEach(function (col) { return setFlagFunc(col, false); });\n var newCols = [];\n // we only want to work on new columns, as old columns already got processed first time around\n // pull out items with xxxIndex\n newPrimaryCols.forEach(function (col) {\n var index = getIndexFunc(col.getColDef());\n if (typeof index === 'number') {\n newCols.push(col);\n }\n });\n // then sort them\n newCols.sort(function (colA, colB) {\n var indexA = getIndexFunc(colA.getColDef());\n var indexB = getIndexFunc(colB.getColDef());\n if (indexA === indexB) {\n return 0;\n }\n else if (indexA < indexB) {\n return -1;\n }\n else {\n return 1;\n }\n });\n // now just pull out items xxx (boolean value), they will be added at the end\n // after the indexed ones, but in the order the columns appear\n newPrimaryCols.forEach(function (col) {\n var booleanValue = getValueFunc(col.getColDef());\n if (booleanValue) {\n // if user already specified xxxIndex then we skip it as this col already included\n if (newCols.indexOf(col) >= 0) {\n return;\n }\n newCols.push(col);\n }\n });\n newCols.forEach(function (col) { return setFlagFunc(col, true); });\n var res = existingCols.concat(newCols);\n return res;\n };\n ColumnController.prototype.extractPivotColumns = function (source, oldPrimaryColumns) {\n this.pivotColumns = this.extractColumns(oldPrimaryColumns, this.pivotColumns, function (col, flag) { return col.setPivotActive(flag, source); }, function (colDef) { return colDef.pivotIndex; }, function (colDef) { return colDef.pivot; });\n };\n ColumnController.prototype.resetColumnGroupState = function (source) {\n if (source === void 0) { source = \"api\"; }\n var stateItems = [];\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.primaryColumnTree, function (child) {\n if (child instanceof OriginalColumnGroup) {\n var groupState = {\n groupId: child.getGroupId(),\n open: child.getColGroupDef().openByDefault\n };\n stateItems.push(groupState);\n }\n });\n this.setColumnGroupState(stateItems, source);\n };\n ColumnController.prototype.getColumnGroupState = function () {\n var columnGroupState = [];\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (node) {\n if (node instanceof OriginalColumnGroup) {\n var originalColumnGroup = node;\n columnGroupState.push({\n groupId: originalColumnGroup.getGroupId(),\n open: originalColumnGroup.isExpanded()\n });\n }\n });\n return columnGroupState;\n };\n ColumnController.prototype.setColumnGroupState = function (stateItems, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n this.columnAnimationService.start();\n var impactedGroups = [];\n stateItems.forEach(function (stateItem) {\n var groupKey = stateItem.groupId;\n var newValue = stateItem.open;\n var originalColumnGroup = _this.getOriginalColumnGroup(groupKey);\n if (!originalColumnGroup) {\n return;\n }\n if (originalColumnGroup.isExpanded() === newValue) {\n return;\n }\n _this.logger.log('columnGroupOpened(' + originalColumnGroup.getGroupId() + ',' + newValue + ')');\n originalColumnGroup.setExpanded(newValue);\n impactedGroups.push(originalColumnGroup);\n });\n this.updateGroupsAndDisplayedColumns(source);\n this.setFirstRightAndLastLeftPinned(source);\n impactedGroups.forEach(function (originalColumnGroup) {\n var event = {\n type: Events.EVENT_COLUMN_GROUP_OPENED,\n columnGroup: originalColumnGroup,\n api: _this.gridApi,\n columnApi: _this.columnApi\n };\n _this.eventService.dispatchEvent(event);\n });\n this.columnAnimationService.finish();\n };\n // called by headerRenderer - when a header is opened or closed\n ColumnController.prototype.setColumnGroupOpened = function (key, newValue, source) {\n if (source === void 0) { source = \"api\"; }\n var keyAsString;\n if (key instanceof OriginalColumnGroup) {\n keyAsString = key.getId();\n }\n else {\n keyAsString = key;\n }\n this.setColumnGroupState([{ groupId: keyAsString, open: newValue }], source);\n };\n ColumnController.prototype.getOriginalColumnGroup = function (key) {\n if (key instanceof OriginalColumnGroup) {\n return key;\n }\n if (typeof key !== 'string') {\n console.error('ag-Grid: group key must be a string');\n }\n // otherwise, search for the column group by id\n var res = null;\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (node) {\n if (node instanceof OriginalColumnGroup) {\n var originalColumnGroup = node;\n if (originalColumnGroup.getId() === key) {\n res = originalColumnGroup;\n }\n }\n });\n return res;\n };\n ColumnController.prototype.calculateColumnsForDisplay = function () {\n var _this = this;\n var columnsForDisplay;\n if (this.pivotMode && !this.secondaryColumnsPresent) {\n // pivot mode is on, but we are not pivoting, so we only\n // show columns we are aggregating on\n columnsForDisplay = this.gridColumns.filter(function (column) {\n var isAutoGroupCol = _this.groupAutoColumns && _.includes(_this.groupAutoColumns, column);\n var isValueCol = _this.valueColumns && _.includes(_this.valueColumns, column);\n return isAutoGroupCol || isValueCol;\n });\n }\n else {\n // otherwise continue as normal. this can be working on the primary\n // or secondary columns, whatever the gridColumns are set to\n columnsForDisplay = this.gridColumns.filter(function (column) {\n // keep col if a) it's auto-group or b) it's visible\n var isAutoGroupCol = _this.groupAutoColumns && _.includes(_this.groupAutoColumns, column);\n return isAutoGroupCol || column.isVisible();\n });\n }\n return columnsForDisplay;\n };\n ColumnController.prototype.checkColSpanActiveInCols = function (columns) {\n var result = false;\n columns.forEach(function (col) {\n if (_.exists(col.getColDef().colSpan)) {\n result = true;\n }\n });\n return result;\n };\n ColumnController.prototype.calculateColumnsForGroupDisplay = function () {\n var _this = this;\n this.groupDisplayColumns = [];\n var checkFunc = function (col) {\n var colDef = col.getColDef();\n if (colDef && _.exists(colDef.showRowGroup)) {\n _this.groupDisplayColumns.push(col);\n }\n };\n this.gridColumns.forEach(checkFunc);\n if (this.groupAutoColumns) {\n this.groupAutoColumns.forEach(checkFunc);\n }\n };\n ColumnController.prototype.getGroupDisplayColumns = function () {\n return this.groupDisplayColumns;\n };\n ColumnController.prototype.updateDisplayedColumns = function (source) {\n var columnsForDisplay = this.calculateColumnsForDisplay();\n this.buildDisplayedTrees(columnsForDisplay);\n this.calculateColumnsForGroupDisplay();\n // also called when group opened/closed\n this.updateGroupsAndDisplayedColumns(source);\n // also called when group opened/closed\n this.setFirstRightAndLastLeftPinned(source);\n };\n ColumnController.prototype.isSecondaryColumnsPresent = function () {\n return this.secondaryColumnsPresent;\n };\n ColumnController.prototype.setSecondaryColumns = function (colDefs, source) {\n if (source === void 0) { source = \"api\"; }\n var newColsPresent = colDefs && colDefs.length > 0;\n // if not cols passed, and we had to cols anyway, then do nothing\n if (!newColsPresent && !this.secondaryColumnsPresent) {\n return;\n }\n if (newColsPresent) {\n this.processSecondaryColumnDefinitions(colDefs);\n var balancedTreeResult = this.columnFactory.createColumnTree(colDefs, false);\n this.secondaryBalancedTree = balancedTreeResult.columnTree;\n this.secondaryHeaderRowCount = balancedTreeResult.treeDept + 1;\n this.secondaryColumns = this.getColumnsFromTree(this.secondaryBalancedTree);\n this.secondaryColumnsPresent = true;\n }\n else {\n this.secondaryBalancedTree = null;\n this.secondaryHeaderRowCount = -1;\n this.secondaryColumns = null;\n this.secondaryColumnsPresent = false;\n }\n this.updateGridColumns();\n this.updateDisplayedColumns(source);\n };\n ColumnController.prototype.processSecondaryColumnDefinitions = function (colDefs) {\n var columnCallback = this.gridOptionsWrapper.getProcessSecondaryColDefFunc();\n var groupCallback = this.gridOptionsWrapper.getProcessSecondaryColGroupDefFunc();\n if (!columnCallback && !groupCallback) {\n return undefined;\n }\n if (colDefs) {\n searchForColDefs(colDefs);\n }\n function searchForColDefs(colDefs2) {\n colDefs2.forEach(function (abstractColDef) {\n var isGroup = _.exists(abstractColDef.children);\n if (isGroup) {\n var colGroupDef = abstractColDef;\n if (groupCallback) {\n groupCallback(colGroupDef);\n }\n searchForColDefs(colGroupDef.children);\n }\n else {\n var colDef = abstractColDef;\n if (columnCallback) {\n columnCallback(colDef);\n }\n }\n });\n }\n };\n // called from: setColumnState, setColumnDefs, setSecondaryColumns\n ColumnController.prototype.updateGridColumns = function () {\n if (this.gridColsArePrimary) {\n this.lastPrimaryOrder = this.gridColumns;\n }\n if (this.secondaryColumns && this.secondaryBalancedTree) {\n this.gridBalancedTree = this.secondaryBalancedTree.slice();\n this.gridHeaderRowCount = this.secondaryHeaderRowCount;\n this.gridColumns = this.secondaryColumns.slice();\n this.gridColsArePrimary = false;\n }\n else {\n this.gridBalancedTree = this.primaryColumnTree.slice();\n this.gridHeaderRowCount = this.primaryHeaderRowCount;\n this.gridColumns = this.primaryColumns.slice();\n this.gridColsArePrimary = true;\n // updateGridColumns gets called after user adds a row group. we want to maintain the order of the columns\n // when this happens (eg if user moved a column) rather than revert back to the original column order.\n // likewise if changing in/out of pivot mode, we want to maintain the order of the primary cols\n this.orderGridColsLikeLastPrimary();\n }\n this.addAutoGroupToGridColumns();\n this.autoRowHeightColumns = this.gridColumns.filter(function (col) { return col.getColDef().autoHeight; });\n this.putFixedColumnsFirst();\n this.setupQuickFilterColumns();\n this.clearDisplayedColumns();\n this.colSpanActive = this.checkColSpanActiveInCols(this.gridColumns);\n var event = {\n type: Events.EVENT_GRID_COLUMNS_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.orderGridColsLikeLastPrimary = function () {\n var _this = this;\n if (_.missing(this.lastPrimaryOrder)) {\n return;\n }\n // only do the sort if at least one column is accounted for. columns will be not accounted for\n // if changing from secondary to primary columns\n var noColsFound = true;\n this.gridColumns.forEach(function (col) {\n if (_this.lastPrimaryOrder.indexOf(col) >= 0) {\n noColsFound = false;\n }\n });\n if (noColsFound) {\n return;\n }\n // order cols in the same order as before. we need to make sure that all\n // cols still exists, so filter out any that no longer exist.\n var oldColsOrdered = this.lastPrimaryOrder.filter(function (col) { return _this.gridColumns.indexOf(col) >= 0; });\n var newColsOrdered = this.gridColumns.filter(function (col) { return oldColsOrdered.indexOf(col) < 0; });\n // add in the new columns, at the end (if no group), or at the end of the group (if a group)\n var newGridColumns = oldColsOrdered.slice();\n newColsOrdered.forEach(function (newCol) {\n var parent = newCol.getOriginalParent();\n // if no parent, means we are not grouping, so just add the column to the end\n if (!parent) {\n newGridColumns.push(newCol);\n return;\n }\n // find the group the column belongs to. if no siblings at the current level (eg col in group on it's\n // own) then go up one level and look for siblings there.\n var siblings = [];\n while (!siblings.length && parent) {\n var leafCols = parent.getLeafColumns();\n leafCols.forEach(function (leafCol) {\n var presentInNewGriColumns = newGridColumns.indexOf(leafCol) >= 0;\n var noYetInSiblings = siblings.indexOf(leafCol) < 0;\n if (presentInNewGriColumns && noYetInSiblings) {\n siblings.push(leafCol);\n }\n });\n parent = parent.getOriginalParent();\n }\n // if no siblings exist at any level, this means the col is in a group (or parent groups) on it's own\n if (!siblings.length) {\n newGridColumns.push(newCol);\n return;\n }\n // find index of last column in the group\n var indexes = siblings.map(function (col) { return newGridColumns.indexOf(col); });\n var lastIndex = Math.max.apply(Math, indexes);\n _.insertIntoArray(newGridColumns, newCol, lastIndex + 1);\n });\n this.gridColumns = newGridColumns;\n };\n ColumnController.prototype.isPrimaryColumnGroupsPresent = function () {\n return this.primaryHeaderRowCount > 1;\n };\n // if we are using autoGroupCols, then they should be included for quick filter. this covers the\n // following scenarios:\n // a) user provides 'field' into autoGroupCol of normal grid, so now because a valid col to filter leafs on\n // b) using tree data and user depends on autoGroupCol for first col, and we also want to filter on this\n // (tree data is a bit different, as parent rows can be filtered on, unlike row grouping)\n ColumnController.prototype.setupQuickFilterColumns = function () {\n if (this.groupAutoColumns) {\n this.columnsForQuickFilter = this.primaryColumns.concat(this.groupAutoColumns);\n }\n else {\n this.columnsForQuickFilter = this.primaryColumns;\n }\n };\n ColumnController.prototype.putFixedColumnsFirst = function () {\n var locked = this.gridColumns.filter(function (c) { return c.getColDef().lockPosition; });\n var unlocked = this.gridColumns.filter(function (c) { return !c.getColDef().lockPosition; });\n this.gridColumns = locked.concat(unlocked);\n };\n ColumnController.prototype.addAutoGroupToGridColumns = function () {\n // add in auto-group here\n this.createGroupAutoColumnsIfNeeded();\n if (_.missing(this.groupAutoColumns)) {\n return;\n }\n this.gridColumns = this.groupAutoColumns ? this.groupAutoColumns.concat(this.gridColumns) : this.gridColumns;\n var autoColBalancedTree = this.columnFactory.createForAutoGroups(this.groupAutoColumns, this.gridBalancedTree);\n this.gridBalancedTree = autoColBalancedTree.concat(this.gridBalancedTree);\n };\n // gets called after we copy down grid columns, to make sure any part of the gui\n // that tries to draw, eg the header, it will get empty lists of columns rather\n // than stale columns. for example, the header will received gridColumnsChanged\n // event, so will try and draw, but it will draw successfully when it acts on the\n // virtualColumnsChanged event\n ColumnController.prototype.clearDisplayedColumns = function () {\n this.displayedLeftColumnTree = [];\n this.displayedRightColumnTree = [];\n this.displayedCentreColumnTree = [];\n this.displayedLeftHeaderRows = {};\n this.displayedRightHeaderRows = {};\n this.displayedCentreHeaderRows = {};\n this.displayedLeftColumns = [];\n this.displayedRightColumns = [];\n this.displayedCenterColumns = [];\n this.allDisplayedColumns = [];\n this.allDisplayedVirtualColumns = [];\n };\n ColumnController.prototype.updateGroupsAndDisplayedColumns = function (source) {\n this.updateOpenClosedVisibilityInColumnGroups();\n this.updateDisplayedColumnsFromTrees(source);\n this.updateVirtualSets();\n this.updateBodyWidths();\n // this event is picked up by the gui, headerRenderer and rowRenderer, to recalculate what columns to display\n var event = {\n type: Events.EVENT_DISPLAYED_COLUMNS_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.updateDisplayedColumnsFromTrees = function (source) {\n this.addToDisplayedColumns(this.displayedLeftColumnTree, this.displayedLeftColumns);\n this.addToDisplayedColumns(this.displayedCentreColumnTree, this.displayedCenterColumns);\n this.addToDisplayedColumns(this.displayedRightColumnTree, this.displayedRightColumns);\n this.setupAllDisplayedColumns();\n this.setLeftValues(source);\n };\n ColumnController.prototype.setupAllDisplayedColumns = function () {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n this.allDisplayedColumns = this.displayedRightColumns\n .concat(this.displayedCenterColumns)\n .concat(this.displayedLeftColumns);\n }\n else {\n this.allDisplayedColumns = this.displayedLeftColumns\n .concat(this.displayedCenterColumns)\n .concat(this.displayedRightColumns);\n }\n };\n // sets the left pixel position of each column\n ColumnController.prototype.setLeftValues = function (source) {\n this.setLeftValuesOfColumns(source);\n this.setLeftValuesOfGroups();\n };\n ColumnController.prototype.setLeftValuesOfColumns = function (source) {\n var _this = this;\n // go through each list of displayed columns\n var allColumns = this.primaryColumns.slice(0);\n // let totalColumnWidth = this.getWidthOfColsInList()\n var doingRtl = this.gridOptionsWrapper.isEnableRtl();\n [this.displayedLeftColumns, this.displayedRightColumns, this.displayedCenterColumns].forEach(function (columns) {\n if (doingRtl) {\n // when doing RTL, we start at the top most pixel (ie RHS) and work backwards\n var left_1 = _this.getWidthOfColsInList(columns);\n columns.forEach(function (column) {\n left_1 -= column.getActualWidth();\n column.setLeft(left_1, source);\n });\n }\n else {\n // otherwise normal LTR, we start at zero\n var left_2 = 0;\n columns.forEach(function (column) {\n column.setLeft(left_2, source);\n left_2 += column.getActualWidth();\n });\n }\n _.removeAllFromArray(allColumns, columns);\n });\n // items left in allColumns are columns not displayed, so remove the left position. this is\n // important for the rows, as if a col is made visible, then taken out, then made visible again,\n // we don't want the animation of the cell floating in from the old position, whatever that was.\n allColumns.forEach(function (column) {\n column.setLeft(null, source);\n });\n };\n ColumnController.prototype.setLeftValuesOfGroups = function () {\n // a groups left value is the lest left value of it's children\n [this.displayedLeftColumnTree, this.displayedRightColumnTree, this.displayedCentreColumnTree].forEach(function (columns) {\n columns.forEach(function (column) {\n if (column instanceof ColumnGroup) {\n var columnGroup = column;\n columnGroup.checkLeft();\n }\n });\n });\n };\n ColumnController.prototype.addToDisplayedColumns = function (displayedColumnTree, displayedColumns) {\n displayedColumns.length = 0;\n this.columnUtils.depthFirstDisplayedColumnTreeSearch(displayedColumnTree, function (child) {\n if (child instanceof Column) {\n displayedColumns.push(child);\n }\n });\n };\n ColumnController.prototype.updateDisplayedCenterVirtualColumns = function () {\n if (this.suppressColumnVirtualisation) {\n // no virtualisation, so don't filter\n this.allDisplayedCenterVirtualColumns = this.displayedCenterColumns;\n }\n else {\n // filter out what should be visible\n this.allDisplayedCenterVirtualColumns = this.filterOutColumnsWithinViewport();\n }\n this.allDisplayedVirtualColumns = this.allDisplayedCenterVirtualColumns\n .concat(this.displayedLeftColumns)\n .concat(this.displayedRightColumns);\n // return map of virtual col id's, for easy lookup when building the groups.\n // the map will be colId=>true, ie col id's mapping to 'true'.\n var result = {};\n this.allDisplayedVirtualColumns.forEach(function (col) {\n result[col.getId()] = true;\n });\n return result;\n };\n ColumnController.prototype.getVirtualHeaderGroupRow = function (type, dept) {\n var result;\n switch (type) {\n case Constants.PINNED_LEFT:\n result = this.displayedLeftHeaderRows[dept];\n break;\n case Constants.PINNED_RIGHT:\n result = this.displayedRightHeaderRows[dept];\n break;\n default:\n result = this.displayedCentreHeaderRows[dept];\n break;\n }\n if (_.missing(result)) {\n result = [];\n }\n return result;\n };\n ColumnController.prototype.updateDisplayedVirtualGroups = function (virtualColIds) {\n // go through each group, see if any of it's cols are displayed, and if yes,\n // then this group is included\n this.displayedLeftHeaderRows = {};\n this.displayedRightHeaderRows = {};\n this.displayedCentreHeaderRows = {};\n testGroup(this.displayedLeftColumnTree, this.displayedLeftHeaderRows, 0);\n testGroup(this.displayedRightColumnTree, this.displayedRightHeaderRows, 0);\n testGroup(this.displayedCentreColumnTree, this.displayedCentreHeaderRows, 0);\n function testGroup(children, result, dept) {\n var returnValue = false;\n for (var i = 0; i < children.length; i++) {\n // see if this item is within viewport\n var child = children[i];\n var addThisItem = void 0;\n if (child instanceof Column) {\n // for column, test if column is included\n addThisItem = virtualColIds[child.getId()] === true;\n }\n else {\n // if group, base decision on children\n var columnGroup = child;\n addThisItem = testGroup(columnGroup.getDisplayedChildren(), result, dept + 1);\n }\n if (addThisItem) {\n returnValue = true;\n if (!result[dept]) {\n result[dept] = [];\n }\n result[dept].push(child);\n }\n }\n return returnValue;\n }\n };\n ColumnController.prototype.updateVirtualSets = function () {\n var virtualColIds = this.updateDisplayedCenterVirtualColumns();\n this.updateDisplayedVirtualGroups(virtualColIds);\n };\n ColumnController.prototype.filterOutColumnsWithinViewport = function () {\n return this.displayedCenterColumns.filter(this.isColumnInViewport.bind(this));\n };\n // called from api\n ColumnController.prototype.sizeColumnsToFit = function (gridWidth, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n // avoid divide by zero\n var allDisplayedColumns = this.getAllDisplayedColumns();\n if (gridWidth <= 0 || allDisplayedColumns.length === 0) {\n return;\n }\n var colsToSpread = [];\n var colsToNotSpread = [];\n allDisplayedColumns.forEach(function (column) {\n if (column.getColDef().suppressSizeToFit === true) {\n colsToNotSpread.push(column);\n }\n else {\n colsToSpread.push(column);\n }\n });\n // make a copy of the cols that are going to be resized\n var colsToFireEventFor = colsToSpread.slice(0);\n var finishedResizing = false;\n while (!finishedResizing) {\n finishedResizing = true;\n var availablePixels = gridWidth - this.getWidthOfColsInList(colsToNotSpread);\n if (availablePixels <= 0) {\n // no width, set everything to minimum\n colsToSpread.forEach(function (column) {\n column.setMinimum(source);\n });\n }\n else {\n var scale = availablePixels / this.getWidthOfColsInList(colsToSpread);\n // we set the pixels for the last col based on what's left, as otherwise\n // we could be a pixel or two short or extra because of rounding errors.\n var pixelsForLastCol = availablePixels;\n // backwards through loop, as we are removing items as we go\n for (var i = colsToSpread.length - 1; i >= 0; i--) {\n var column = colsToSpread[i];\n var newWidth = Math.round(column.getActualWidth() * scale);\n if (newWidth < column.getMinWidth()) {\n column.setMinimum(source);\n moveToNotSpread(column);\n finishedResizing = false;\n }\n else if (column.isGreaterThanMax(newWidth)) {\n column.setActualWidth(column.getMaxWidth(), source);\n moveToNotSpread(column);\n finishedResizing = false;\n }\n else {\n var onLastCol = i === 0;\n if (onLastCol) {\n column.setActualWidth(pixelsForLastCol, source);\n }\n else {\n column.setActualWidth(newWidth, source);\n }\n }\n pixelsForLastCol -= newWidth;\n }\n }\n }\n this.setLeftValues(source);\n this.updateBodyWidths();\n colsToFireEventFor.forEach(function (column) {\n var event = {\n type: Events.EVENT_COLUMN_RESIZED,\n column: column,\n columns: [column],\n finished: true,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n source: \"sizeColumnsToFit\"\n };\n _this.eventService.dispatchEvent(event);\n });\n function moveToNotSpread(column) {\n _.removeFromArray(colsToSpread, column);\n colsToNotSpread.push(column);\n }\n };\n ColumnController.prototype.buildDisplayedTrees = function (visibleColumns) {\n var leftVisibleColumns = [];\n var rightVisibleColumns = [];\n var centerVisibleColumns = [];\n visibleColumns.forEach(function (column) {\n switch (column.getPinned()) {\n case \"left\":\n leftVisibleColumns.push(column);\n break;\n case \"right\":\n rightVisibleColumns.push(column);\n break;\n default:\n centerVisibleColumns.push(column);\n break;\n }\n });\n var groupInstanceIdCreator = new GroupInstanceIdCreator();\n this.displayedLeftColumnTree = this.displayedGroupCreator.createDisplayedGroups(leftVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, Constants.PINNED_LEFT, this.displayedLeftColumnTree);\n this.displayedRightColumnTree = this.displayedGroupCreator.createDisplayedGroups(rightVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, Constants.PINNED_RIGHT, this.displayedRightColumnTree);\n this.displayedCentreColumnTree = this.displayedGroupCreator.createDisplayedGroups(centerVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, null, this.displayedCentreColumnTree);\n };\n ColumnController.prototype.updateOpenClosedVisibilityInColumnGroups = function () {\n var allColumnGroups = this.getAllDisplayedColumnGroups();\n this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {\n if (child instanceof ColumnGroup) {\n var columnGroup = child;\n columnGroup.calculateDisplayedColumns();\n }\n });\n };\n ColumnController.prototype.getGroupAutoColumns = function () {\n return this.groupAutoColumns;\n };\n ColumnController.prototype.createGroupAutoColumnsIfNeeded = function () {\n if (!this.autoGroupsNeedBuilding) {\n return;\n }\n this.autoGroupsNeedBuilding = false;\n var groupFullWidthRow = this.gridOptionsWrapper.isGroupUseEntireRow(this.pivotMode);\n // we never suppress auto col for pivot mode, as there is no way for user to provide group columns\n // in pivot mode. pivot mode has auto group column (provide by grid) and value columns (provided by\n // pivot feature in the grid).\n var groupSuppressAutoColumn = this.gridOptionsWrapper.isGroupSuppressAutoColumn() && !this.pivotMode;\n var groupSuppressRow = this.gridOptionsWrapper.isGroupSuppressRow();\n var groupingActive = this.rowGroupColumns.length > 0 || this.usingTreeData;\n var needAutoColumns = groupingActive && !groupSuppressAutoColumn && !groupFullWidthRow && !groupSuppressRow;\n if (needAutoColumns) {\n var newAutoGroupCols = this.autoGroupColService.createAutoGroupColumns(this.rowGroupColumns);\n var autoColsDifferent = !this.autoColsEqual(newAutoGroupCols, this.groupAutoColumns);\n if (autoColsDifferent) {\n this.groupAutoColumns = newAutoGroupCols;\n }\n }\n else {\n this.groupAutoColumns = null;\n }\n };\n ColumnController.prototype.autoColsEqual = function (colsA, colsB) {\n var bothMissing = !colsA && !colsB;\n if (bothMissing) {\n return true;\n }\n var atLeastOneListMissing = !colsA || !colsB;\n if (atLeastOneListMissing) {\n return false;\n }\n if (colsA.length !== colsB.length) {\n return false;\n }\n for (var i = 0; i < colsA.length; i++) {\n var colA = colsA[i];\n var colB = colsB[i];\n if (colA.getColId() !== colB.getColId()) {\n return false;\n }\n }\n return true;\n };\n ColumnController.prototype.getWidthOfColsInList = function (columnList) {\n var result = 0;\n for (var i = 0; i < columnList.length; i++) {\n result += columnList[i].getActualWidth();\n }\n return result;\n };\n ColumnController.prototype.getGridBalancedTree = function () {\n return this.gridBalancedTree;\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ColumnController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('expressionService')\n ], ColumnController.prototype, \"expressionService\", void 0);\n __decorate([\n Autowired('columnFactory')\n ], ColumnController.prototype, \"columnFactory\", void 0);\n __decorate([\n Autowired('displayedGroupCreator')\n ], ColumnController.prototype, \"displayedGroupCreator\", void 0);\n __decorate([\n Autowired('autoWidthCalculator')\n ], ColumnController.prototype, \"autoWidthCalculator\", void 0);\n __decorate([\n Autowired('eventService')\n ], ColumnController.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnUtils')\n ], ColumnController.prototype, \"columnUtils\", void 0);\n __decorate([\n Autowired('context')\n ], ColumnController.prototype, \"context\", void 0);\n __decorate([\n Autowired('columnAnimationService')\n ], ColumnController.prototype, \"columnAnimationService\", void 0);\n __decorate([\n Autowired('autoGroupColService')\n ], ColumnController.prototype, \"autoGroupColService\", void 0);\n __decorate([\n Optional('aggFuncService')\n ], ColumnController.prototype, \"aggFuncService\", void 0);\n __decorate([\n Optional('valueCache')\n ], ColumnController.prototype, \"valueCache\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ColumnController.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ColumnController.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], ColumnController.prototype, \"init\", null);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], ColumnController.prototype, \"setBeans\", null);\n ColumnController = __decorate([\n Bean('columnController')\n ], ColumnController);\n return ColumnController;\n}());\nexport { ColumnController };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n// class returns unique instance id's for columns.\n// eg, the following calls (in this order) will result in:\n//\n// getInstanceIdForKey('country') => 0\n// getInstanceIdForKey('country') => 1\n// getInstanceIdForKey('country') => 2\n// getInstanceIdForKey('country') => 3\n// getInstanceIdForKey('age') => 0\n// getInstanceIdForKey('age') => 1\n// getInstanceIdForKey('country') => 4\nvar GroupInstanceIdCreator = /** @class */ (function () {\n function GroupInstanceIdCreator() {\n // this map contains keys to numbers, so we remember what the last call was\n this.existingIds = {};\n }\n GroupInstanceIdCreator.prototype.getInstanceIdForKey = function (key) {\n var lastResult = this.existingIds[key];\n var result;\n if (typeof lastResult !== 'number') {\n // first time this key\n result = 0;\n }\n else {\n result = lastResult + 1;\n }\n this.existingIds[key] = result;\n return result;\n };\n return GroupInstanceIdCreator;\n}());\nexport { GroupInstanceIdCreator };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { ColumnGroup } from \"../entities/columnGroup\";\nimport { OriginalColumnGroup } from \"../entities/originalColumnGroup\";\nimport { Bean } from \"../context/context\";\nimport { Autowired } from \"../context/context\";\n// takes in a list of columns, as specified by the column definitions, and returns column groups\nvar ColumnUtils = /** @class */ (function () {\n function ColumnUtils() {\n }\n ColumnUtils.prototype.calculateColInitialWidth = function (colDef) {\n if (!colDef.width) {\n // if no width defined in colDef, use default\n return this.gridOptionsWrapper.getColWidth();\n }\n else if (colDef.width < this.gridOptionsWrapper.getMinColWidth()) {\n // if width in col def to small, set to min width\n return this.gridOptionsWrapper.getMinColWidth();\n }\n else {\n // otherwise use the provided width\n return colDef.width;\n }\n };\n ColumnUtils.prototype.getOriginalPathForColumn = function (column, originalBalancedTree) {\n var result = [];\n var found = false;\n recursePath(originalBalancedTree, 0);\n // we should always find the path, but in case there is a bug somewhere, returning null\n // will make it fail rather than provide a 'hard to track down' bug\n if (found) {\n return result;\n }\n else {\n return null;\n }\n function recursePath(balancedColumnTree, dept) {\n for (var i = 0; i < balancedColumnTree.length; i++) {\n if (found) {\n // quit the search, so 'result' is kept with the found result\n return;\n }\n var node = balancedColumnTree[i];\n if (node instanceof OriginalColumnGroup) {\n var nextNode = node;\n recursePath(nextNode.getChildren(), dept + 1);\n result[dept] = node;\n }\n else {\n if (node === column) {\n found = true;\n }\n }\n }\n }\n };\n /* public getPathForColumn(column: Column, allDisplayedColumnGroups: ColumnGroupChild[]): ColumnGroup[] {\n let result: ColumnGroup[] = [];\n let found = false;\n \n recursePath(allDisplayedColumnGroups, 0);\n \n // we should always find the path, but in case there is a bug somewhere, returning null\n // will make it fail rather than provide a 'hard to track down' bug\n if (found) {\n return result;\n } else {\n return null;\n }\n \n function recursePath(balancedColumnTree: ColumnGroupChild[], dept: number): void {\n \n for (let i = 0; i node;\n recursePath(nextNode.getChildren(), dept+1);\n result[dept] = node;\n } else {\n if (node === column) {\n found = true;\n }\n }\n }\n }\n }*/\n ColumnUtils.prototype.depthFirstOriginalTreeSearch = function (parent, tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof OriginalColumnGroup) {\n _this.depthFirstOriginalTreeSearch(child, child.getChildren(), callback);\n }\n callback(child, parent);\n });\n };\n ColumnUtils.prototype.depthFirstAllColumnTreeSearch = function (tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof ColumnGroup) {\n _this.depthFirstAllColumnTreeSearch(child.getChildren(), callback);\n }\n callback(child);\n });\n };\n ColumnUtils.prototype.depthFirstDisplayedColumnTreeSearch = function (tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof ColumnGroup) {\n _this.depthFirstDisplayedColumnTreeSearch(child.getDisplayedChildren(), callback);\n }\n callback(child);\n });\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ColumnUtils.prototype, \"gridOptionsWrapper\", void 0);\n ColumnUtils = __decorate([\n Bean('columnUtils')\n ], ColumnUtils);\n return ColumnUtils;\n}());\nexport { ColumnUtils };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired } from \"../context/context\";\nimport { ColumnGroup } from \"../entities/columnGroup\";\nimport { OriginalColumnGroup } from \"../entities/originalColumnGroup\";\nimport { Bean } from \"../context/context\";\nimport { _ } from \"../utils\";\n// takes in a list of columns, as specified by the column definitions, and returns column groups\nvar DisplayedGroupCreator = /** @class */ (function () {\n function DisplayedGroupCreator() {\n }\n DisplayedGroupCreator.prototype.createDisplayedGroups = function (\n // all displayed columns sorted - this is the columns the grid should show\n sortedVisibleColumns, \n // the tree of columns, as provided by the users, used to know what groups columns roll up into\n balancedColumnTree, \n // creates unique id's for the group\n groupInstanceIdCreator, \n // whether it's left, right or center col\n pinned, \n // we try to reuse old groups if we can, to allow gui to do animation\n oldDisplayedGroups) {\n var _this = this;\n var result = [];\n var previousRealPath;\n var previousOriginalPath;\n var oldColumnsMapped = this.mapOldGroupsById(oldDisplayedGroups);\n // go through each column, then do a bottom up comparison to the previous column, and start\n // to share groups if they converge at any point.\n sortedVisibleColumns.forEach(function (currentColumn) {\n var currentOriginalPath = _this.getOriginalPathForColumn(balancedColumnTree, currentColumn);\n var currentRealPath = [];\n var firstColumn = !previousOriginalPath;\n for (var i = 0; i < currentOriginalPath.length; i++) {\n if (firstColumn || currentOriginalPath[i] !== previousOriginalPath[i]) {\n // new group needed\n var newGroup = _this.createColumnGroup(currentOriginalPath[i], groupInstanceIdCreator, oldColumnsMapped, pinned);\n currentRealPath[i] = newGroup;\n // if top level, add to result, otherwise add to parent\n if (i == 0) {\n result.push(newGroup);\n }\n else {\n currentRealPath[i - 1].addChild(newGroup);\n }\n }\n else {\n // reuse old group\n currentRealPath[i] = previousRealPath[i];\n }\n }\n var noColumnGroups = currentRealPath.length === 0;\n if (noColumnGroups) {\n // if we are not grouping, then the result of the above is an empty\n // path (no groups), and we just add the column to the root list.\n result.push(currentColumn);\n }\n else {\n var leafGroup = _.last(currentRealPath);\n leafGroup.addChild(currentColumn);\n }\n previousRealPath = currentRealPath;\n previousOriginalPath = currentOriginalPath;\n });\n this.setupParentsIntoColumns(result, null);\n return result;\n };\n DisplayedGroupCreator.prototype.createColumnGroup = function (originalGroup, groupInstanceIdCreator, oldColumnsMapped, pinned) {\n var groupId = originalGroup.getGroupId();\n var instanceId = groupInstanceIdCreator.getInstanceIdForKey(groupId);\n var uniqueId = ColumnGroup.createUniqueId(groupId, instanceId);\n var columnGroup = oldColumnsMapped[uniqueId];\n // if the user is setting new colDefs, it is possible that the id's overlap, and we\n // would have a false match from above. so we double check we are talking about the\n // same original column group.\n if (columnGroup && columnGroup.getOriginalColumnGroup() !== originalGroup) {\n columnGroup = null;\n }\n if (_.exists(columnGroup)) {\n // clean out the old column group here, as we will be adding children into it again\n columnGroup.reset();\n }\n else {\n columnGroup = new ColumnGroup(originalGroup, groupId, instanceId, pinned);\n this.context.wireBean(columnGroup);\n }\n return columnGroup;\n };\n // returns back a 2d map of ColumnGroup as follows: groupId -> instanceId -> ColumnGroup\n DisplayedGroupCreator.prototype.mapOldGroupsById = function (displayedGroups) {\n var result = {};\n var recursive = function (columnsOrGroups) {\n columnsOrGroups.forEach(function (columnOrGroup) {\n if (columnOrGroup instanceof ColumnGroup) {\n var columnGroup = columnOrGroup;\n result[columnOrGroup.getUniqueId()] = columnGroup;\n recursive(columnGroup.getChildren());\n }\n });\n };\n if (displayedGroups) {\n recursive(displayedGroups);\n }\n return result;\n };\n DisplayedGroupCreator.prototype.setupParentsIntoColumns = function (columnsOrGroups, parent) {\n var _this = this;\n columnsOrGroups.forEach(function (columnsOrGroup) {\n columnsOrGroup.setParent(parent);\n if (columnsOrGroup instanceof ColumnGroup) {\n var columnGroup = columnsOrGroup;\n _this.setupParentsIntoColumns(columnGroup.getChildren(), columnGroup);\n }\n });\n };\n // private createFakePath(balancedColumnTree: OriginalColumnGroupChild[], column: Column): OriginalColumnGroup[] {\n // let fakePath: OriginalColumnGroup[] = [];\n // let currentChildren = balancedColumnTree;\n // // this while loop does search on the balanced tree, so our result is the right length\n // let index = 0;\n // while (currentChildren && currentChildren[0] && currentChildren[0] instanceof OriginalColumnGroup) {\n // // putting in a deterministic fake id, in case the API in the future needs to reference the col\n // let fakeGroup = new OriginalColumnGroup(null, 'FAKE_PATH_' + index, true);\n // this.context.wireBean(fakeGroup);\n //\n // // fakePath.setChildren(children);\n //\n // fakePath.push(fakeGroup);\n // currentChildren = (currentChildren[0]).getChildren();\n // index++;\n // }\n //\n // fakePath.forEach( (fakePathGroup: OriginalColumnGroup, i: number) => {\n // let lastItemInList = i === fakePath.length-1;\n // let child = lastItemInList ? column : fakePath[i+1];\n // fakePathGroup.setChildren([child]);\n // });\n //\n // return fakePath;\n // }\n DisplayedGroupCreator.prototype.getOriginalPathForColumn = function (balancedColumnTree, column) {\n var result = [];\n var found = false;\n recursePath(balancedColumnTree, 0);\n // it's possible we didn't find a path. this happens if the column is generated\n // by the grid (auto-group), in that the definition didn't come from the client. in this case,\n // we create a fake original path.\n if (found) {\n return result;\n }\n else {\n console.warn('could not get path');\n return null;\n // return this.createFakePath(balancedColumnTree, column);\n }\n function recursePath(balancedColumnTree, dept) {\n for (var i = 0; i < balancedColumnTree.length; i++) {\n if (found) {\n // quit the search, so 'result' is kept with the found result\n return;\n }\n var node = balancedColumnTree[i];\n if (node instanceof OriginalColumnGroup) {\n var nextNode = node;\n recursePath(nextNode.getChildren(), dept + 1);\n result[dept] = node;\n }\n else {\n if (node === column) {\n found = true;\n }\n }\n }\n }\n };\n __decorate([\n Autowired('columnUtils')\n ], DisplayedGroupCreator.prototype, \"columnUtils\", void 0);\n __decorate([\n Autowired('context')\n ], DisplayedGroupCreator.prototype, \"context\", void 0);\n DisplayedGroupCreator = __decorate([\n Bean('displayedGroupCreator')\n ], DisplayedGroupCreator);\n return DisplayedGroupCreator;\n}());\nexport { DisplayedGroupCreator };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { TextCellEditor } from \"./textCellEditor\";\nvar PopupTextCellEditor = /** @class */ (function (_super) {\n __extends(PopupTextCellEditor, _super);\n function PopupTextCellEditor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PopupTextCellEditor.prototype.isPopup = function () {\n return true;\n };\n return PopupTextCellEditor;\n}(TextCellEditor));\nexport { PopupTextCellEditor };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { SelectCellEditor } from \"./selectCellEditor\";\nvar PopupSelectCellEditor = /** @class */ (function (_super) {\n __extends(PopupSelectCellEditor, _super);\n function PopupSelectCellEditor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PopupSelectCellEditor.prototype.isPopup = function () {\n return true;\n };\n return PopupSelectCellEditor;\n}(SelectCellEditor));\nexport { PopupSelectCellEditor };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { PopupComponent } from \"../../widgets/popupComponent\";\nimport { Constants } from \"../../constants\";\nimport { _ } from \"../../utils\";\nvar LargeTextCellEditor = /** @class */ (function (_super) {\n __extends(LargeTextCellEditor, _super);\n function LargeTextCellEditor() {\n return _super.call(this, LargeTextCellEditor.TEMPLATE) || this;\n }\n LargeTextCellEditor.prototype.init = function (params) {\n this.params = params;\n this.focusAfterAttached = params.cellStartedEdit;\n this.textarea = document.createElement(\"textarea\");\n this.textarea.maxLength = params.maxLength ? params.maxLength : \"200\";\n this.textarea.cols = params.cols ? params.cols : \"60\";\n this.textarea.rows = params.rows ? params.rows : \"10\";\n if (_.exists(params.value)) {\n this.textarea.value = params.value.toString();\n }\n this.getGui().querySelector('.ag-large-textarea').appendChild(this.textarea);\n this.addGuiEventListener('keydown', this.onKeyDown.bind(this));\n };\n LargeTextCellEditor.prototype.onKeyDown = function (event) {\n var key = event.which || event.keyCode;\n if (key == Constants.KEY_LEFT ||\n key == Constants.KEY_UP ||\n key == Constants.KEY_RIGHT ||\n key == Constants.KEY_DOWN ||\n (event.shiftKey && key == Constants.KEY_ENTER)) { // shift+enter allows for newlines\n event.stopPropagation();\n }\n };\n LargeTextCellEditor.prototype.afterGuiAttached = function () {\n if (this.focusAfterAttached) {\n this.textarea.focus();\n }\n };\n LargeTextCellEditor.prototype.getValue = function () {\n return this.params.parseValue(this.textarea.value);\n };\n LargeTextCellEditor.TEMPLATE = \n // tab index is needed so we can focus, which is needed for keyboard events\n '
' +\n '
' +\n '
';\n return LargeTextCellEditor;\n}(PopupComponent));\nexport { LargeTextCellEditor };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Bean } from \"./context/context\";\nimport { Qualifier } from \"./context/context\";\nimport { Events } from \"./events\";\nimport { Autowired } from \"./context/context\";\nimport { PostConstruct } from \"./context/context\";\nimport { Constants } from \"./constants\";\nimport { _ } from './utils';\nimport { ChangedPath } from \"./utils/changedPath\";\nvar SelectionController = /** @class */ (function () {\n function SelectionController() {\n }\n SelectionController.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('SelectionController');\n this.reset();\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n this.eventService.addEventListener(Events.EVENT_ROW_DATA_CHANGED, this.reset.bind(this));\n }\n else {\n this.logger.log('dont know what to do here');\n }\n };\n SelectionController.prototype.init = function () {\n this.groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n this.eventService.addEventListener(Events.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));\n };\n SelectionController.prototype.setLastSelectedNode = function (rowNode) {\n this.lastSelectedNode = rowNode;\n };\n SelectionController.prototype.getLastSelectedNode = function () {\n return this.lastSelectedNode;\n };\n SelectionController.prototype.getSelectedNodes = function () {\n var selectedNodes = [];\n _.iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode) {\n selectedNodes.push(rowNode);\n }\n });\n return selectedNodes;\n };\n SelectionController.prototype.getSelectedRows = function () {\n var selectedRows = [];\n _.iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode && rowNode.data) {\n selectedRows.push(rowNode.data);\n }\n });\n return selectedRows;\n };\n SelectionController.prototype.removeGroupsFromSelection = function () {\n var _this = this;\n _.iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode && rowNode.group) {\n _this.selectedNodes[rowNode.id] = undefined;\n }\n });\n };\n // should only be called if groupSelectsChildren=true\n SelectionController.prototype.updateGroupsFromChildrenSelections = function (changedPath) {\n // we only do this when group selection state depends on selected children\n if (!this.gridOptionsWrapper.isGroupSelectsChildren()) {\n return;\n }\n // also only do it if CSRM (code should never allow this anyway)\n if (this.rowModel.getType() !== Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n return;\n }\n var clientSideRowModel = this.rowModel;\n var rootNode = clientSideRowModel.getRootNode();\n if (!changedPath) {\n changedPath = new ChangedPath(true, rootNode);\n changedPath.setInactive();\n }\n changedPath.forEachChangedNodeDepthFirst(function (rowNode) {\n if (rowNode !== rootNode) {\n rowNode.calculateSelectedFromChildren();\n }\n });\n // clientSideRowModel.getTopLevelNodes()!.forEach((rowNode: RowNode) => {\n // rowNode.depthFirstSearch((node) => {\n // if (node.group) {\n // }\n // });\n // });\n };\n SelectionController.prototype.getNodeForIdIfSelected = function (id) {\n return this.selectedNodes[id];\n };\n SelectionController.prototype.clearOtherNodes = function (rowNodeToKeepSelected) {\n var _this = this;\n var groupsToRefresh = {};\n var updatedCount = 0;\n _.iterateObject(this.selectedNodes, function (key, otherRowNode) {\n if (otherRowNode && otherRowNode.id !== rowNodeToKeepSelected.id) {\n var rowNode = _this.selectedNodes[otherRowNode.id];\n updatedCount += rowNode.setSelectedParams({\n newValue: false,\n clearSelection: false,\n suppressFinishActions: true\n });\n if (_this.groupSelectsChildren && otherRowNode.parent) {\n groupsToRefresh[otherRowNode.parent.id] = otherRowNode.parent;\n }\n }\n });\n _.iterateObject(groupsToRefresh, function (key, group) {\n group.calculateSelectedFromChildren();\n });\n return updatedCount;\n };\n SelectionController.prototype.onRowSelected = function (event) {\n var rowNode = event.node;\n // we do not store the group rows when the groups select children\n if (this.groupSelectsChildren && rowNode.group) {\n return;\n }\n if (rowNode.isSelected()) {\n this.selectedNodes[rowNode.id] = rowNode;\n }\n else {\n this.selectedNodes[rowNode.id] = undefined;\n }\n };\n SelectionController.prototype.syncInRowNode = function (rowNode, oldNode) {\n this.syncInOldRowNode(rowNode, oldNode);\n this.syncInNewRowNode(rowNode);\n };\n // if the id has changed for the node, then this means the rowNode\n // is getting used for a different data item, which breaks\n // our selectedNodes, as the node now is mapped by the old id\n // which is inconsistent. so to keep the old node as selected,\n // we swap in the clone (with the old id and old data). this means\n // the oldNode is effectively a daemon we keep a reference to,\n // so if client calls api.getSelectedNodes(), it gets the daemon\n // in the result. when the client un-selects, the reference to the\n // daemon is removed. the daemon, because it's an oldNode, is not\n // used by the grid for rendering, it's a copy of what the node used\n // to be like before the id was changed.\n SelectionController.prototype.syncInOldRowNode = function (rowNode, oldNode) {\n var oldNodeHasDifferentId = _.exists(oldNode) && (rowNode.id !== oldNode.id);\n if (oldNodeHasDifferentId) {\n var oldNodeSelected = _.exists(this.selectedNodes[oldNode.id]);\n if (oldNodeSelected) {\n this.selectedNodes[oldNode.id] = oldNode;\n }\n }\n };\n SelectionController.prototype.syncInNewRowNode = function (rowNode) {\n if (_.exists(this.selectedNodes[rowNode.id])) {\n rowNode.setSelectedInitialValue(true);\n this.selectedNodes[rowNode.id] = rowNode;\n }\n else {\n rowNode.setSelectedInitialValue(false);\n }\n };\n SelectionController.prototype.reset = function () {\n this.logger.log('reset');\n this.selectedNodes = {};\n this.lastSelectedNode = null;\n };\n // returns a list of all nodes at 'best cost' - a feature to be used\n // with groups / trees. if a group has all it's children selected,\n // then the group appears in the result, but not the children.\n // Designed for use with 'children' as the group selection type,\n // where groups don't actually appear in the selection normally.\n SelectionController.prototype.getBestCostNodeSelection = function () {\n if (this.rowModel.getType() !== Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n console.warn('getBestCostNodeSelection is only available when using normal row model');\n return;\n }\n var clientSideRowModel = this.rowModel;\n var topLevelNodes = clientSideRowModel.getTopLevelNodes();\n if (topLevelNodes === null) {\n console.warn('selectAll not available doing rowModel=virtual');\n return;\n }\n var result = [];\n // recursive function, to find the selected nodes\n function traverse(nodes) {\n for (var i = 0, l = nodes.length; i < l; i++) {\n var node = nodes[i];\n if (node.isSelected()) {\n result.push(node);\n }\n else {\n // if not selected, then if it's a group, and the group\n // has children, continue to search for selections\n if (node.group && node.children) {\n traverse(node.children);\n }\n }\n }\n }\n traverse(topLevelNodes);\n return result;\n };\n SelectionController.prototype.setRowModel = function (rowModel) {\n this.rowModel = rowModel;\n };\n SelectionController.prototype.isEmpty = function () {\n var count = 0;\n _.iterateObject(this.selectedNodes, function (nodeId, rowNode) {\n if (rowNode) {\n count++;\n }\n });\n return count === 0;\n };\n SelectionController.prototype.deselectAllRowNodes = function (justFiltered) {\n if (justFiltered === void 0) { justFiltered = false; }\n var callback = function (rowNode) { return rowNode.selectThisNode(false); };\n var rowModelClientSide = this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n if (justFiltered) {\n if (!rowModelClientSide) {\n console.error('ag-Grid: selecting just filtered only works with In Memory Row Model');\n return;\n }\n var clientSideRowModel = this.rowModel;\n clientSideRowModel.forEachNodeAfterFilter(callback);\n }\n else {\n _.iterateObject(this.selectedNodes, function (id, rowNode) {\n // remember the reference can be to null, as we never 'delete' from the map\n if (rowNode) {\n callback(rowNode);\n }\n });\n // this clears down the map (whereas above only sets the items in map to 'undefined')\n this.reset();\n }\n // the above does not clean up the parent rows if they are selected\n if (rowModelClientSide && this.groupSelectsChildren) {\n this.updateGroupsFromChildrenSelections();\n }\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n SelectionController.prototype.selectAllRowNodes = function (justFiltered) {\n if (justFiltered === void 0) { justFiltered = false; }\n if (this.rowModel.getType() !== Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n throw new Error(\"selectAll only available with normal row model, ie not \" + this.rowModel.getType());\n }\n var clientSideRowModel = this.rowModel;\n var callback = function (rowNode) { return rowNode.selectThisNode(true); };\n if (justFiltered) {\n clientSideRowModel.forEachNodeAfterFilter(callback);\n }\n else {\n clientSideRowModel.forEachNode(callback);\n }\n // the above does not clean up the parent rows if they are selected\n if (this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE && this.groupSelectsChildren) {\n this.updateGroupsFromChildrenSelections();\n }\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n /**\n * @method\n * @deprecated\n */\n SelectionController.prototype.selectNode = function (rowNode, tryMulti) {\n if (rowNode) {\n rowNode.setSelectedParams({ newValue: true, clearSelection: !tryMulti });\n }\n };\n /**\n * @method\n * @deprecated\n */\n SelectionController.prototype.deselectIndex = function (rowIndex) {\n var node = this.rowModel.getRow(rowIndex);\n this.deselectNode(node);\n };\n /**\n * @method\n * @deprecated\n */\n SelectionController.prototype.deselectNode = function (rowNode) {\n if (rowNode) {\n rowNode.setSelectedParams({ newValue: false, clearSelection: false });\n }\n };\n /**\n * @method\n * @deprecated\n */\n SelectionController.prototype.selectIndex = function (index, tryMulti) {\n var node = this.rowModel.getRow(index);\n this.selectNode(node, tryMulti);\n };\n __decorate([\n Autowired('eventService')\n ], SelectionController.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('rowModel')\n ], SelectionController.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], SelectionController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnApi')\n ], SelectionController.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], SelectionController.prototype, \"gridApi\", void 0);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], SelectionController.prototype, \"setBeans\", null);\n __decorate([\n PostConstruct\n ], SelectionController.prototype, \"init\", null);\n SelectionController = __decorate([\n Bean('selectionController')\n ], SelectionController);\n return SelectionController;\n}());\nexport { SelectionController };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean } from \"../context/context\";\nvar ColumnApi = /** @class */ (function () {\n function ColumnApi() {\n }\n ColumnApi.prototype.sizeColumnsToFit = function (gridWidth) {\n // AG-3403 validate that gridWidth is provided because this method has the same name as\n // a method on the grid API that takes no arguments, and it's easy to confuse the two\n if (typeof gridWidth === \"undefined\") {\n console.error('ag-Grid: missing parameter to columnApi.sizeColumnsToFit(gridWidth)');\n }\n this.columnController.sizeColumnsToFit(gridWidth, 'api');\n };\n ColumnApi.prototype.setColumnGroupOpened = function (group, newValue) { this.columnController.setColumnGroupOpened(group, newValue, 'api'); };\n ColumnApi.prototype.getColumnGroup = function (name, instanceId) { return this.columnController.getColumnGroup(name, instanceId); };\n ColumnApi.prototype.getOriginalColumnGroup = function (name) { return this.columnController.getOriginalColumnGroup(name); };\n ColumnApi.prototype.getDisplayNameForColumn = function (column, location) { return this.columnController.getDisplayNameForColumn(column, location); };\n ColumnApi.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) { return this.columnController.getDisplayNameForColumnGroup(columnGroup, location); };\n ColumnApi.prototype.getColumn = function (key) { return this.columnController.getPrimaryColumn(key); };\n ColumnApi.prototype.setColumnState = function (columnState) { return this.columnController.setColumnState(columnState, false, 'api'); };\n ColumnApi.prototype.getColumnState = function () { return this.columnController.getColumnState(); };\n ColumnApi.prototype.resetColumnState = function () { this.columnController.resetColumnState(false, 'api'); };\n ColumnApi.prototype.getColumnGroupState = function () { return this.columnController.getColumnGroupState(); };\n ColumnApi.prototype.setColumnGroupState = function (stateItems) { this.columnController.setColumnGroupState(stateItems, 'api'); };\n ColumnApi.prototype.resetColumnGroupState = function () { this.columnController.resetColumnGroupState('api'); };\n ColumnApi.prototype.isPinning = function () { return this.columnController.isPinningLeft() || this.columnController.isPinningRight(); };\n ColumnApi.prototype.isPinningLeft = function () { return this.columnController.isPinningLeft(); };\n ColumnApi.prototype.isPinningRight = function () { return this.columnController.isPinningRight(); };\n ColumnApi.prototype.getDisplayedColAfter = function (col) { return this.columnController.getDisplayedColAfter(col); };\n ColumnApi.prototype.getDisplayedColBefore = function (col) { return this.columnController.getDisplayedColBefore(col); };\n ColumnApi.prototype.setColumnVisible = function (key, visible) { this.columnController.setColumnVisible(key, visible, 'api'); };\n ColumnApi.prototype.setColumnsVisible = function (keys, visible) { this.columnController.setColumnsVisible(keys, visible, 'api'); };\n ColumnApi.prototype.setColumnPinned = function (key, pinned) { this.columnController.setColumnPinned(key, pinned, 'api'); };\n ColumnApi.prototype.setColumnsPinned = function (keys, pinned) { this.columnController.setColumnsPinned(keys, pinned, 'api'); };\n ColumnApi.prototype.getAllColumns = function () { return this.columnController.getAllPrimaryColumns(); };\n ColumnApi.prototype.getAllGridColumns = function () { return this.columnController.getAllGridColumns(); };\n ColumnApi.prototype.getDisplayedLeftColumns = function () { return this.columnController.getDisplayedLeftColumns(); };\n ColumnApi.prototype.getDisplayedCenterColumns = function () { return this.columnController.getDisplayedCenterColumns(); };\n ColumnApi.prototype.getDisplayedRightColumns = function () { return this.columnController.getDisplayedRightColumns(); };\n ColumnApi.prototype.getAllDisplayedColumns = function () { return this.columnController.getAllDisplayedColumns(); };\n ColumnApi.prototype.getAllDisplayedVirtualColumns = function () { return this.columnController.getAllDisplayedVirtualColumns(); };\n ColumnApi.prototype.moveColumn = function (key, toIndex) {\n if (typeof key === 'number') {\n // moveColumn used to take indexes, so this is advising user who hasn't moved to new method name\n console.warn('ag-Grid: you are using moveColumn(fromIndex, toIndex) - moveColumn takes a column key and a destination index, not two indexes, to move with indexes use moveColumnByIndex(from,to) instead');\n this.columnController.moveColumnByIndex(key, toIndex, 'api');\n }\n else {\n this.columnController.moveColumn(key, toIndex, 'api');\n }\n };\n ColumnApi.prototype.moveColumnByIndex = function (fromIndex, toIndex) { this.columnController.moveColumnByIndex(fromIndex, toIndex, 'api'); };\n ColumnApi.prototype.moveColumns = function (columnsToMoveKeys, toIndex) { this.columnController.moveColumns(columnsToMoveKeys, toIndex, 'api'); };\n ColumnApi.prototype.moveRowGroupColumn = function (fromIndex, toIndex) { this.columnController.moveRowGroupColumn(fromIndex, toIndex); };\n ColumnApi.prototype.setColumnAggFunc = function (column, aggFunc) { this.columnController.setColumnAggFunc(column, aggFunc); };\n ColumnApi.prototype.setColumnWidth = function (key, newWidth, finished) {\n if (finished === void 0) { finished = true; }\n this.columnController.setColumnWidth(key, newWidth, false, finished);\n };\n ColumnApi.prototype.setPivotMode = function (pivotMode) { this.columnController.setPivotMode(pivotMode); };\n ColumnApi.prototype.isPivotMode = function () { return this.columnController.isPivotMode(); };\n ColumnApi.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) { return this.columnController.getSecondaryPivotColumn(pivotKeys, valueColKey); };\n ColumnApi.prototype.setValueColumns = function (colKeys) { this.columnController.setValueColumns(colKeys, 'api'); };\n ColumnApi.prototype.getValueColumns = function () { return this.columnController.getValueColumns(); };\n ColumnApi.prototype.removeValueColumn = function (colKey) { this.columnController.removeValueColumn(colKey, 'api'); };\n ColumnApi.prototype.removeValueColumns = function (colKeys) { this.columnController.removeValueColumns(colKeys, 'api'); };\n ColumnApi.prototype.addValueColumn = function (colKey) { this.columnController.addValueColumn(colKey, 'api'); };\n ColumnApi.prototype.addValueColumns = function (colKeys) { this.columnController.addValueColumns(colKeys, 'api'); };\n ColumnApi.prototype.setRowGroupColumns = function (colKeys) { this.columnController.setRowGroupColumns(colKeys, 'api'); };\n ColumnApi.prototype.removeRowGroupColumn = function (colKey) { this.columnController.removeRowGroupColumn(colKey, 'api'); };\n ColumnApi.prototype.removeRowGroupColumns = function (colKeys) { this.columnController.removeRowGroupColumns(colKeys, 'api'); };\n ColumnApi.prototype.addRowGroupColumn = function (colKey) { this.columnController.addRowGroupColumn(colKey, 'api'); };\n ColumnApi.prototype.addRowGroupColumns = function (colKeys) { this.columnController.addRowGroupColumns(colKeys, 'api'); };\n ColumnApi.prototype.getRowGroupColumns = function () { return this.columnController.getRowGroupColumns(); };\n ColumnApi.prototype.setPivotColumns = function (colKeys) { this.columnController.setPivotColumns(colKeys, 'api'); };\n ColumnApi.prototype.removePivotColumn = function (colKey) { this.columnController.removePivotColumn(colKey, 'api'); };\n ColumnApi.prototype.removePivotColumns = function (colKeys) { this.columnController.removePivotColumns(colKeys, 'api'); };\n ColumnApi.prototype.addPivotColumn = function (colKey) { this.columnController.addPivotColumn(colKey, 'api'); };\n ColumnApi.prototype.addPivotColumns = function (colKeys) { this.columnController.addPivotColumns(colKeys, 'api'); };\n ColumnApi.prototype.getPivotColumns = function () { return this.columnController.getPivotColumns(); };\n ColumnApi.prototype.getLeftDisplayedColumnGroups = function () { return this.columnController.getLeftDisplayedColumnGroups(); };\n ColumnApi.prototype.getCenterDisplayedColumnGroups = function () { return this.columnController.getCenterDisplayedColumnGroups(); };\n ColumnApi.prototype.getRightDisplayedColumnGroups = function () { return this.columnController.getRightDisplayedColumnGroups(); };\n ColumnApi.prototype.getAllDisplayedColumnGroups = function () { return this.columnController.getAllDisplayedColumnGroups(); };\n ColumnApi.prototype.autoSizeColumn = function (key) { return this.columnController.autoSizeColumn(key, 'api'); };\n ColumnApi.prototype.autoSizeColumns = function (keys) { return this.columnController.autoSizeColumns(keys, 'api'); };\n ColumnApi.prototype.autoSizeAllColumns = function () { this.columnController.autoSizeAllColumns('api'); };\n ColumnApi.prototype.setSecondaryColumns = function (colDefs) { this.columnController.setSecondaryColumns(colDefs, 'api'); };\n ColumnApi.prototype.getSecondaryColumns = function () { return this.columnController.getSecondaryColumns(); };\n ColumnApi.prototype.getPrimaryColumns = function () { return this.columnController.getAllPrimaryColumns(); };\n // below goes through deprecated items, prints message to user, then calls the new version of the same method\n ColumnApi.prototype.columnGroupOpened = function (group, newValue) {\n console.error('ag-Grid: columnGroupOpened no longer exists, use setColumnGroupOpened');\n this.setColumnGroupOpened(group, newValue);\n };\n ColumnApi.prototype.hideColumns = function (colIds, hide) {\n console.error('ag-Grid: hideColumns is deprecated, use setColumnsVisible');\n this.columnController.setColumnsVisible(colIds, !hide, 'api');\n };\n ColumnApi.prototype.hideColumn = function (colId, hide) {\n console.error('ag-Grid: hideColumn is deprecated, use setColumnVisible');\n this.columnController.setColumnVisible(colId, !hide, 'api');\n };\n ColumnApi.prototype.setState = function (columnState) {\n console.error('ag-Grid: setState is deprecated, use setColumnState');\n return this.setColumnState(columnState);\n };\n ColumnApi.prototype.getState = function () {\n console.error('ag-Grid: getState is deprecated, use getColumnState');\n return this.getColumnState();\n };\n ColumnApi.prototype.resetState = function () {\n console.error('ag-Grid: resetState is deprecated, use resetColumnState');\n this.resetColumnState();\n };\n ColumnApi.prototype.getAggregationColumns = function () {\n console.error('ag-Grid: getAggregationColumns is deprecated, use getValueColumns');\n return this.columnController.getValueColumns();\n };\n ColumnApi.prototype.removeAggregationColumn = function (colKey) {\n console.error('ag-Grid: removeAggregationColumn is deprecated, use removeValueColumn');\n this.columnController.removeValueColumn(colKey, 'api');\n };\n ColumnApi.prototype.removeAggregationColumns = function (colKeys) {\n console.error('ag-Grid: removeAggregationColumns is deprecated, use removeValueColumns');\n this.columnController.removeValueColumns(colKeys, 'api');\n };\n ColumnApi.prototype.addAggregationColumn = function (colKey) {\n console.error('ag-Grid: addAggregationColumn is deprecated, use addValueColumn');\n this.columnController.addValueColumn(colKey, 'api');\n };\n ColumnApi.prototype.addAggregationColumns = function (colKeys) {\n console.error('ag-Grid: addAggregationColumns is deprecated, use addValueColumns');\n this.columnController.addValueColumns(colKeys, 'api');\n };\n ColumnApi.prototype.setColumnAggFunction = function (column, aggFunc) {\n console.error('ag-Grid: setColumnAggFunction is deprecated, use setColumnAggFunc');\n this.columnController.setColumnAggFunc(column, aggFunc, 'api');\n };\n ColumnApi.prototype.getDisplayNameForCol = function (column) {\n console.error('ag-Grid: getDisplayNameForCol is deprecated, use getDisplayNameForColumn');\n return this.getDisplayNameForColumn(column, null);\n };\n __decorate([\n Autowired('columnController')\n ], ColumnApi.prototype, \"columnController\", void 0);\n ColumnApi = __decorate([\n Bean('columnApi')\n ], ColumnApi);\n return ColumnApi;\n}());\nexport { ColumnApi };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { GridOptionsWrapper } from \"../gridOptionsWrapper\";\nimport { RowComp } from \"./rowComp\";\nimport { Column } from \"../entities/column\";\nimport { Events } from \"../events\";\nimport { Constants } from \"../constants\";\nimport { CellComp } from \"./cellComp\";\nimport { Autowired, Bean, Optional, Qualifier } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { _ } from \"../utils\";\nvar RowRenderer = /** @class */ (function (_super) {\n __extends(RowRenderer, _super);\n function RowRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.destroyFuncsForColumnListeners = [];\n // map of row ids to row objects. keeps track of which elements\n // are rendered for which rows in the dom.\n _this.rowCompsByIndex = {};\n _this.floatingTopRowComps = [];\n _this.floatingBottomRowComps = [];\n // we only allow one refresh at a time, otherwise the internal memory structure here\n // will get messed up. this can happen if the user has a cellRenderer, and inside the\n // renderer they call an API method that results in another pass of the refresh,\n // then it will be trying to draw rows in the middle of a refresh.\n _this.refreshInProgress = false;\n return _this;\n }\n RowRenderer.prototype.registerGridCore = function (gridCore) {\n this.gridCore = gridCore;\n };\n RowRenderer.prototype.getGridCore = function () {\n return this.gridCore;\n };\n RowRenderer.prototype.agWire = function (loggerFactory) {\n this.logger = loggerFactory.create(\"RowRenderer\");\n };\n RowRenderer.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.rowContainers = this.gridPanel.getRowContainers();\n this.addDestroyableEventListener(this.eventService, Events.EVENT_PAGINATION_CHANGED, this.onPageLoaded.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_BODY_SCROLL, this.redrawAfterScroll.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.redrawAfterScroll.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, this.onDomLayoutChanged.bind(this));\n this.registerCellEventListeners();\n this.printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n this.embedFullWidthRows = this.printLayout || this.gridOptionsWrapper.isEmbedFullWidthRows();\n this.redrawAfterModelUpdate();\n };\n // in a clean design, each cell would register for each of these events. however when scrolling, all the cells\n // registering and de-registering for events is a performance bottleneck. so we register here once and inform\n // all active cells.\n RowRenderer.prototype.registerCellEventListeners = function () {\n var _this = this;\n this.addDestroyableEventListener(this.eventService, Events.EVENT_CELL_FOCUSED, function (event) {\n _this.forEachCellComp(function (cellComp) { return cellComp.onCellFocused(event); });\n });\n this.addDestroyableEventListener(this.eventService, Events.EVENT_FLASH_CELLS, function (event) {\n _this.forEachCellComp(function (cellComp) { return cellComp.onFlashCells(event); });\n });\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, function () {\n _this.forEachCellComp(function (cellComp) { return cellComp.onColumnHover(); });\n });\n // only for printLayout - because we are rendering all the cells in the same row, regardless of pinned state,\n // then changing the width of the containers will impact left position. eg the center cols all have their\n // left position adjusted by the width of the left pinned column, so if the pinned left column width changes,\n // all the center cols need to be shifted to accommodate this. when in normal layout, the pinned cols are\n // in different containers so doesn't impact.\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, function () {\n if (_this.printLayout) {\n _this.forEachCellComp(function (cellComp) { return cellComp.onLeftChanged(); });\n }\n });\n var rangeSelectionEnabled = this.gridOptionsWrapper.isEnableRangeSelection();\n if (rangeSelectionEnabled) {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_RANGE_SELECTION_CHANGED, function () {\n _this.forEachCellComp(function (cellComp) { return cellComp.onRangeSelectionChanged(); });\n });\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_MOVED, function () {\n _this.forEachCellComp(function (cellComp) { return cellComp.updateRangeBordersIfRangeCount(); });\n });\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_PINNED, function () {\n _this.forEachCellComp(function (cellComp) { return cellComp.updateRangeBordersIfRangeCount(); });\n });\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, function () {\n _this.forEachCellComp(function (cellComp) { return cellComp.updateRangeBordersIfRangeCount(); });\n });\n }\n // add listeners to the grid columns\n this.refreshListenersToColumnsForCellComps();\n // if the grid columns change, then refresh the listeners again\n this.addDestroyableEventListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.refreshListenersToColumnsForCellComps.bind(this));\n this.addDestroyFunc(this.removeGridColumnListeners.bind(this));\n };\n // executes all functions in destroyFuncsForColumnListeners and then clears the list\n RowRenderer.prototype.removeGridColumnListeners = function () {\n this.destroyFuncsForColumnListeners.forEach(function (func) { return func(); });\n this.destroyFuncsForColumnListeners.length = 0;\n };\n // this function adds listeners onto all the grid columns, which are the column that we could have cellComps for.\n // when the grid columns change, we add listeners again. in an ideal design, each CellComp would just register to\n // the column it belongs to on creation, however this was a bottleneck with the number of cells, so do it here\n // once instead.\n RowRenderer.prototype.refreshListenersToColumnsForCellComps = function () {\n var _this = this;\n this.removeGridColumnListeners();\n var cols = this.columnController.getAllGridColumns();\n if (!cols) {\n return;\n }\n cols.forEach(function (col) {\n var forEachCellWithThisCol = function (callback) {\n _this.forEachCellComp(function (cellComp) {\n if (cellComp.getColumn() === col) {\n callback(cellComp);\n }\n });\n };\n var leftChangedListener = function () {\n forEachCellWithThisCol(function (cellComp) { return cellComp.onLeftChanged(); });\n };\n var widthChangedListener = function () {\n forEachCellWithThisCol(function (cellComp) { return cellComp.onWidthChanged(); });\n };\n var firstRightPinnedChangedListener = function () {\n forEachCellWithThisCol(function (cellComp) { return cellComp.onFirstRightPinnedChanged(); });\n };\n var lastLeftPinnedChangedListener = function () {\n forEachCellWithThisCol(function (cellComp) { return cellComp.onLastLeftPinnedChanged(); });\n };\n col.addEventListener(Column.EVENT_LEFT_CHANGED, leftChangedListener);\n col.addEventListener(Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n col.addEventListener(Column.EVENT_FIRST_RIGHT_PINNED_CHANGED, firstRightPinnedChangedListener);\n col.addEventListener(Column.EVENT_LAST_LEFT_PINNED_CHANGED, lastLeftPinnedChangedListener);\n _this.destroyFuncsForColumnListeners.push(function () {\n col.removeEventListener(Column.EVENT_LEFT_CHANGED, leftChangedListener);\n col.removeEventListener(Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n col.removeEventListener(Column.EVENT_FIRST_RIGHT_PINNED_CHANGED, firstRightPinnedChangedListener);\n col.removeEventListener(Column.EVENT_LAST_LEFT_PINNED_CHANGED, lastLeftPinnedChangedListener);\n });\n });\n };\n RowRenderer.prototype.onDomLayoutChanged = function () {\n var printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n var embedFullWidthRows = printLayout || this.gridOptionsWrapper.isEmbedFullWidthRows();\n // if moving towards or away from print layout, means we need to destroy all rows, as rows are not laid\n // out using absolute positioning when doing print layout\n var destroyRows = embedFullWidthRows !== this.embedFullWidthRows || this.printLayout !== printLayout;\n this.printLayout = printLayout;\n this.embedFullWidthRows = embedFullWidthRows;\n if (destroyRows) {\n this.redrawAfterModelUpdate();\n }\n };\n // for row models that have datasources, when we update the datasource, we need to force the rowRenderer\n // to redraw all rows. otherwise the old rows from the old datasource will stay displayed.\n RowRenderer.prototype.datasourceChanged = function () {\n this.firstRenderedRow = 0;\n this.lastRenderedRow = -1;\n var rowIndexesToRemove = Object.keys(this.rowCompsByIndex);\n this.removeRowComps(rowIndexesToRemove);\n };\n RowRenderer.prototype.onPageLoaded = function (refreshEvent) {\n if (_.missing(refreshEvent)) {\n refreshEvent = {\n type: 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 }\n this.onModelUpdated(refreshEvent);\n };\n RowRenderer.prototype.getAllCellsForColumn = function (column) {\n var eCells = [];\n _.iterateObject(this.rowCompsByIndex, callback);\n _.iterateObject(this.floatingBottomRowComps, callback);\n _.iterateObject(this.floatingTopRowComps, callback);\n function callback(key, rowComp) {\n var eCell = rowComp.getCellForCol(column);\n if (eCell) {\n eCells.push(eCell);\n }\n }\n return eCells;\n };\n RowRenderer.prototype.refreshFloatingRowComps = function () {\n this.refreshFloatingRows(this.floatingTopRowComps, this.pinnedRowModel.getPinnedTopRowData(), this.rowContainers.floatingTopPinnedLeft, this.rowContainers.floatingTopPinnedRight, this.rowContainers.floatingTop, this.rowContainers.floatingTopFullWidth);\n this.refreshFloatingRows(this.floatingBottomRowComps, this.pinnedRowModel.getPinnedBottomRowData(), this.rowContainers.floatingBottomPinnedLeft, this.rowContainers.floatingBottomPinnedRight, this.rowContainers.floatingBottom, this.rowContainers.floatingBottomFullWith);\n };\n RowRenderer.prototype.refreshFloatingRows = function (rowComps, rowNodes, pinnedLeftContainerComp, pinnedRightContainerComp, bodyContainerComp, fullWidthContainerComp) {\n var _this = this;\n rowComps.forEach(function (row) {\n row.destroy();\n });\n rowComps.length = 0;\n if (rowNodes) {\n rowNodes.forEach(function (node) {\n var rowComp = new RowComp(_this.$scope, bodyContainerComp, pinnedLeftContainerComp, pinnedRightContainerComp, fullWidthContainerComp, node, _this.beans, false, false, _this.printLayout, _this.embedFullWidthRows);\n rowComp.init();\n rowComps.push(rowComp);\n });\n }\n this.flushContainers(rowComps);\n };\n RowRenderer.prototype.onPinnedRowDataChanged = function () {\n // recycling rows in order to ensure cell editing is not cancelled\n var params = {\n recycleRows: true\n };\n this.redrawAfterModelUpdate(params);\n };\n RowRenderer.prototype.onModelUpdated = function (refreshEvent) {\n var params = {\n recycleRows: refreshEvent.keepRenderedRows,\n animate: refreshEvent.animate,\n newData: refreshEvent.newData,\n newPage: refreshEvent.newPage,\n // because this is a model updated event (not pinned rows), we\n // can skip updating the pinned rows. this is needed so that if user\n // is doing transaction updates, the pinned rows are not getting constantly\n // trashed - or editing cells in pinned rows are not refreshed and put into read mode\n onlyBody: true\n };\n this.redrawAfterModelUpdate(params);\n };\n // if the row nodes are not rendered, no index is returned\n RowRenderer.prototype.getRenderedIndexesForRowNodes = function (rowNodes) {\n var result = [];\n if (_.missing(rowNodes)) {\n return result;\n }\n _.iterateObject(this.rowCompsByIndex, function (index, renderedRow) {\n var rowNode = renderedRow.getRowNode();\n if (rowNodes.indexOf(rowNode) >= 0) {\n result.push(index);\n }\n });\n return result;\n };\n RowRenderer.prototype.redrawRows = function (rowNodes) {\n if (!rowNodes || rowNodes.length == 0) {\n return;\n }\n // we only need to be worried about rendered rows, as this method is\n // called to what's rendered. if the row isn't rendered, we don't care\n var indexesToRemove = this.getRenderedIndexesForRowNodes(rowNodes);\n // remove the rows\n this.removeRowComps(indexesToRemove);\n // add draw them again\n this.redrawAfterModelUpdate({\n recycleRows: true\n });\n };\n RowRenderer.prototype.getCellToRestoreFocusToAfterRefresh = function (params) {\n var focusedCell = params.suppressKeepFocus ? null : this.focusedCellController.getFocusCellToUseAfterRefresh();\n if (_.missing(focusedCell)) {\n return null;\n }\n // if the dom is not actually focused on a cell, then we don't try to refocus. the problem this\n // solves is with editing - if the user is editing, eg focus is on a text field, and not on the\n // cell itself, then the cell can be registered as having focus, however it's the text field that\n // has the focus and not the cell div. therefore, when the refresh is finished, the grid will focus\n // the cell, and not the textfield. that means if the user is in a text field, and the grid refreshes,\n // the focus is lost from the text field. we do not want this.\n var activeElement = document.activeElement;\n var domData = this.gridOptionsWrapper.getDomData(activeElement, CellComp.DOM_DATA_KEY_CELL_COMP);\n var elementIsNotACellDev = _.missing(domData);\n if (elementIsNotACellDev) {\n return null;\n }\n return focusedCell;\n };\n // gets called after changes to the model.\n RowRenderer.prototype.redrawAfterModelUpdate = function (params) {\n if (params === void 0) { params = {}; }\n this.getLockOnRefresh();\n var focusedCell = this.getCellToRestoreFocusToAfterRefresh(params);\n this.sizeContainerToPageHeight();\n this.scrollToTopIfNewData(params);\n // never recycle rows when print layout, we draw each row again from scratch. this is because print layout\n // uses normal dom layout to put cells into dom - it doesn't allow reordering rows.\n var recycleRows = !this.printLayout && params.recycleRows;\n var animate = params.animate && this.gridOptionsWrapper.isAnimateRows();\n var rowsToRecycle = this.binRowComps(recycleRows);\n this.redraw(rowsToRecycle, animate);\n if (!params.onlyBody) {\n this.refreshFloatingRowComps();\n }\n this.restoreFocusedCell(focusedCell);\n this.releaseLockOnRefresh();\n };\n RowRenderer.prototype.scrollToTopIfNewData = function (params) {\n var scrollToTop = params.newData || params.newPage;\n var suppressScrollToTop = this.gridOptionsWrapper.isSuppressScrollOnNewData();\n if (scrollToTop && !suppressScrollToTop) {\n this.gridPanel.scrollToTop();\n }\n };\n RowRenderer.prototype.sizeContainerToPageHeight = function () {\n var containers = [\n this.rowContainers.body,\n this.rowContainers.fullWidth,\n this.rowContainers.pinnedLeft,\n this.rowContainers.pinnedRight\n ];\n if (this.printLayout) {\n containers.forEach(function (container) { return container.setHeight(null); });\n return;\n }\n var containerHeight = this.paginationProxy.getCurrentPageHeight();\n // we need at least 1 pixel for the horizontal scroll to work. so if there are now rows,\n // we still want the scroll to be present, otherwise there would be no way to scroll the header\n // which might be needed us user wants to access columns\n // on the RHS - and if that was where the filter was that cause no rows to be presented, there\n // is no way to remove the filter.\n if (containerHeight === 0) {\n containerHeight = 1;\n }\n this.maxDivHeightScaler.setModelHeight(containerHeight);\n var realHeight = this.maxDivHeightScaler.getUiContainerHeight();\n containers.forEach(function (container) { return container.setHeight(realHeight); });\n };\n RowRenderer.prototype.getLockOnRefresh = function () {\n if (this.refreshInProgress) {\n throw new Error(\"ag-Grid: cannot get grid to draw rows when it is in the middle of drawing rows. \" +\n \"Your code probably called a grid API method while the grid was in the render stage. To overcome \" +\n \"this, put the API call into a timeout, eg instead of api.refreshView(), \" +\n \"call setTimeout(function(){api.refreshView(),0}). To see what part of your code \" +\n \"that caused the refresh check this stacktrace.\");\n }\n this.refreshInProgress = true;\n };\n RowRenderer.prototype.releaseLockOnRefresh = function () {\n this.refreshInProgress = false;\n };\n // sets the focus to the provided cell, if the cell is provided. this way, the user can call refresh without\n // worry about the focus been lost. this is important when the user is using keyboard navigation to do edits\n // and the cellEditor is calling 'refresh' to get other cells to update (as other cells might depend on the\n // edited cell).\n RowRenderer.prototype.restoreFocusedCell = function (cellPosition) {\n if (cellPosition) {\n this.focusedCellController.setFocusedCell(cellPosition.rowIndex, cellPosition.column, cellPosition.rowPinned, true);\n }\n };\n RowRenderer.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.forEachRowComp(function (key, rowComp) {\n rowComp.stopEditing(cancel);\n });\n };\n RowRenderer.prototype.forEachCellComp = function (callback) {\n this.forEachRowComp(function (key, rowComp) { return rowComp.forEachCellComp(callback); });\n };\n RowRenderer.prototype.forEachRowComp = function (callback) {\n _.iterateObject(this.rowCompsByIndex, callback);\n _.iterateObject(this.floatingTopRowComps, callback);\n _.iterateObject(this.floatingBottomRowComps, callback);\n };\n RowRenderer.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {\n var rowComp = this.rowCompsByIndex[rowIndex];\n if (rowComp) {\n rowComp.addEventListener(eventName, callback);\n }\n };\n RowRenderer.prototype.flashCells = function (params) {\n if (params === void 0) { params = {}; }\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) { return cellComp.flashCell(); });\n };\n RowRenderer.prototype.refreshCells = function (params) {\n if (params === void 0) { params = {}; }\n var refreshCellParams = {\n forceRefresh: params.force,\n newData: false\n };\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) { return cellComp.refreshCell(refreshCellParams); });\n };\n RowRenderer.prototype.getCellRendererInstances = function (params) {\n var res = [];\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) {\n var cellRenderer = cellComp.getCellRenderer();\n if (cellRenderer) {\n res.push(cellRenderer);\n }\n });\n return res;\n };\n RowRenderer.prototype.getCellEditorInstances = function (params) {\n var res = [];\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) {\n var cellEditor = cellComp.getCellEditor();\n if (cellEditor) {\n res.push(cellEditor);\n }\n });\n return res;\n };\n RowRenderer.prototype.getEditingCells = function () {\n var res = [];\n this.forEachCellComp(function (cellComp) {\n if (cellComp.isEditing()) {\n var cellPosition = cellComp.getCellPosition();\n res.push(cellPosition);\n }\n });\n return res;\n };\n // calls the callback for each cellComp that match the provided rowNodes and columns. eg if one row node\n // and two columns provided, that identifies 4 cells, so callback gets called 4 times, once for each cell.\n RowRenderer.prototype.forEachCellCompFiltered = function (rowNodes, columns, callback) {\n var _this = this;\n var rowIdsMap;\n if (_.exists(rowNodes)) {\n rowIdsMap = {\n top: {},\n bottom: {},\n normal: {}\n };\n rowNodes.forEach(function (rowNode) {\n if (rowNode.rowPinned === Constants.PINNED_TOP) {\n rowIdsMap.top[rowNode.id] = true;\n }\n else if (rowNode.rowPinned === Constants.PINNED_BOTTOM) {\n rowIdsMap.bottom[rowNode.id] = true;\n }\n else {\n rowIdsMap.normal[rowNode.id] = true;\n }\n });\n }\n var colIdsMap;\n if (_.exists(columns)) {\n colIdsMap = {};\n columns.forEach(function (colKey) {\n var column = _this.columnController.getGridColumn(colKey);\n if (_.exists(column)) {\n colIdsMap[column.getId()] = true;\n }\n });\n }\n var processRow = function (rowComp) {\n var rowNode = rowComp.getRowNode();\n var id = rowNode.id;\n var floating = rowNode.rowPinned;\n // skip this row if it is missing from the provided list\n if (_.exists(rowIdsMap)) {\n if (floating === Constants.PINNED_BOTTOM) {\n if (!rowIdsMap.bottom[id]) {\n return;\n }\n }\n else if (floating === Constants.PINNED_TOP) {\n if (!rowIdsMap.top[id]) {\n return;\n }\n }\n else {\n if (!rowIdsMap.normal[id]) {\n return;\n }\n }\n }\n rowComp.forEachCellComp(function (cellComp) {\n var colId = cellComp.getColumn().getId();\n var excludeColFromRefresh = colIdsMap && !colIdsMap[colId];\n if (excludeColFromRefresh) {\n return;\n }\n callback(cellComp);\n });\n };\n _.iterateObject(this.rowCompsByIndex, function (index, rowComp) {\n processRow(rowComp);\n });\n if (this.floatingTopRowComps) {\n this.floatingTopRowComps.forEach(processRow);\n }\n if (this.floatingBottomRowComps) {\n this.floatingBottomRowComps.forEach(processRow);\n }\n };\n RowRenderer.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n var rowIndexesToRemove = Object.keys(this.rowCompsByIndex);\n this.removeRowComps(rowIndexesToRemove);\n };\n RowRenderer.prototype.binRowComps = function (recycleRows) {\n var _this = this;\n var indexesToRemove;\n var rowsToRecycle = {};\n if (recycleRows) {\n indexesToRemove = [];\n _.iterateObject(this.rowCompsByIndex, function (index, rowComp) {\n var rowNode = rowComp.getRowNode();\n if (_.exists(rowNode.id)) {\n rowsToRecycle[rowNode.id] = rowComp;\n delete _this.rowCompsByIndex[index];\n }\n else {\n indexesToRemove.push(index);\n }\n });\n }\n else {\n indexesToRemove = Object.keys(this.rowCompsByIndex);\n }\n this.removeRowComps(indexesToRemove);\n return rowsToRecycle;\n };\n // takes array of row indexes\n RowRenderer.prototype.removeRowComps = function (rowsToRemove) {\n var _this = this;\n // if no fromIndex then set to -1, which will refresh everything\n // let realFromIndex = -1;\n rowsToRemove.forEach(function (indexToRemove) {\n var renderedRow = _this.rowCompsByIndex[indexToRemove];\n renderedRow.destroy();\n delete _this.rowCompsByIndex[indexToRemove];\n });\n };\n // gets called when rows don't change, but viewport does, so after:\n // 1) height of grid body changes, ie number of displayed rows has changed\n // 2) grid scrolled to new position\n // 3) ensure index visible (which is a scroll)\n RowRenderer.prototype.redrawAfterScroll = function () {\n this.getLockOnRefresh();\n this.redraw(null, false, true);\n this.releaseLockOnRefresh();\n };\n RowRenderer.prototype.removeRowCompsNotToDraw = function (indexesToDraw) {\n // for speedy lookup, dump into map\n var indexesToDrawMap = {};\n indexesToDraw.forEach(function (index) { return (indexesToDrawMap[index] = true); });\n var existingIndexes = Object.keys(this.rowCompsByIndex);\n var indexesNotToDraw = existingIndexes.filter(function (index) { return !indexesToDrawMap[index]; });\n this.removeRowComps(indexesNotToDraw);\n };\n RowRenderer.prototype.calculateIndexesToDraw = function () {\n var _this = this;\n // all in all indexes in the viewport\n var indexesToDraw = _.createArrayOfNumbers(this.firstRenderedRow, this.lastRenderedRow);\n // add in indexes of rows we want to keep, because they are currently editing\n _.iterateObject(this.rowCompsByIndex, function (indexStr, rowComp) {\n var index = Number(indexStr);\n if (index < _this.firstRenderedRow || index > _this.lastRenderedRow) {\n if (_this.doNotUnVirtualiseRow(rowComp)) {\n indexesToDraw.push(index);\n }\n }\n });\n indexesToDraw.sort(function (a, b) { return a - b; });\n return indexesToDraw;\n };\n RowRenderer.prototype.redraw = function (rowsToRecycle, animate, afterScroll) {\n var _this = this;\n if (animate === void 0) { animate = false; }\n if (afterScroll === void 0) { afterScroll = false; }\n this.maxDivHeightScaler.updateOffset();\n this.workOutFirstAndLastRowsToRender();\n // the row can already exist and be in the following:\n // rowsToRecycle -> if model change, then the index may be different, however row may\n // exist here from previous time (mapped by id).\n // this.rowCompsByIndex -> if just a scroll, then this will contain what is currently in the viewport\n // this is all the indexes we want, including those that already exist, so this method\n // will end up going through each index and drawing only if the row doesn't already exist\n var indexesToDraw = this.calculateIndexesToDraw();\n this.removeRowCompsNotToDraw(indexesToDraw);\n // never animate when doing print layout - as we want to get things ready to print as quickly as possible,\n // otherwise we risk the printer printing a row that's half faded (half way through fading in)\n if (this.printLayout) {\n animate = false;\n }\n // add in new rows\n var nextVmTurnFunctions = [];\n var rowComps = [];\n indexesToDraw.forEach(function (rowIndex) {\n var rowComp = _this.createOrUpdateRowComp(rowIndex, rowsToRecycle, animate, afterScroll);\n if (_.exists(rowComp)) {\n rowComps.push(rowComp);\n _.pushAll(nextVmTurnFunctions, rowComp.getAndClearNextVMTurnFunctions());\n }\n });\n this.flushContainers(rowComps);\n _.executeNextVMTurn(nextVmTurnFunctions);\n var useAnimationFrame = afterScroll && !this.gridOptionsWrapper.isSuppressAnimationFrame() && !this.printLayout;\n if (useAnimationFrame) {\n this.beans.taskQueue.addDestroyTask(this.destroyRowComps.bind(this, rowsToRecycle, animate));\n }\n else {\n this.destroyRowComps(rowsToRecycle, animate);\n }\n this.checkAngularCompile();\n this.gridPanel.updateRowCount();\n };\n RowRenderer.prototype.flushContainers = function (rowComps) {\n _.iterateObject(this.rowContainers, function (key, rowContainerComp) {\n if (rowContainerComp) {\n rowContainerComp.flushRowTemplates();\n }\n });\n rowComps.forEach(function (rowComp) { return rowComp.afterFlush(); });\n };\n RowRenderer.prototype.onDisplayedColumnsChanged = function () {\n var pinningLeft = this.columnController.isPinningLeft();\n var pinningRight = this.columnController.isPinningRight();\n var atLeastOneChanged = this.pinningLeft !== pinningLeft || pinningRight !== this.pinningRight;\n if (atLeastOneChanged) {\n this.pinningLeft = pinningLeft;\n this.pinningRight = pinningRight;\n if (this.embedFullWidthRows) {\n this.redrawFullWidthEmbeddedRows();\n }\n }\n };\n // when embedding, what gets showed in each section depends on what is pinned. eg if embedding group expand / collapse,\n // then it should go into the pinned left area if pinning left, or the center area if not pinning.\n RowRenderer.prototype.redrawFullWidthEmbeddedRows = function () {\n // if either of the pinned panels has shown / hidden, then need to redraw the fullWidth bits when\n // embedded, as what appears in each section depends on whether we are pinned or not\n var rowsToRemove = [];\n _.iterateObject(this.rowCompsByIndex, function (id, rowComp) {\n if (rowComp.isFullWidth()) {\n var rowIndex = rowComp.getRowNode().rowIndex;\n rowsToRemove.push(rowIndex.toString());\n }\n });\n this.refreshFloatingRowComps();\n this.removeRowComps(rowsToRemove);\n this.redrawAfterScroll();\n };\n RowRenderer.prototype.refreshFullWidthRows = function () {\n var rowsToRemove = [];\n _.iterateObject(this.rowCompsByIndex, function (id, rowComp) {\n if (rowComp.isFullWidth()) {\n var fullWidthRowsRefreshed = rowComp.refreshFullWidth();\n if (!fullWidthRowsRefreshed) {\n var rowIndex = rowComp.getRowNode().rowIndex;\n rowsToRemove.push(rowIndex.toString());\n }\n }\n });\n this.removeRowComps(rowsToRemove);\n this.redrawAfterScroll();\n };\n RowRenderer.prototype.createOrUpdateRowComp = function (rowIndex, rowsToRecycle, animate, afterScroll) {\n var rowNode;\n var rowComp = this.rowCompsByIndex[rowIndex];\n // if no row comp, see if we can get it from the previous rowComps\n if (!rowComp) {\n rowNode = this.paginationProxy.getRow(rowIndex);\n if (_.exists(rowNode) && _.exists(rowsToRecycle) && rowsToRecycle[rowNode.id] && rowNode.alreadyRendered) {\n rowComp = rowsToRecycle[rowNode.id];\n rowsToRecycle[rowNode.id] = null;\n }\n }\n var creatingNewRowComp = !rowComp;\n if (creatingNewRowComp) {\n // create a new one\n if (!rowNode) {\n rowNode = this.paginationProxy.getRow(rowIndex);\n }\n if (_.exists(rowNode)) {\n rowComp = this.createRowComp(rowNode, animate, afterScroll);\n }\n else {\n // this should never happen - if somehow we are trying to create\n // a row for a rowNode that does not exist.\n return;\n }\n }\n else {\n // ensure row comp is in right position in DOM\n rowComp.ensureDomOrder();\n }\n if (rowNode) {\n // set node as 'alreadyRendered' to ensure we only recycle rowComps that have been rendered, this ensures\n // we don't reuse rowComps that have been removed and then re-added in the same batch transaction.\n rowNode.alreadyRendered = true;\n }\n this.rowCompsByIndex[rowIndex] = rowComp;\n return rowComp;\n };\n RowRenderer.prototype.destroyRowComps = function (rowCompsMap, animate) {\n var delayedFuncs = [];\n _.iterateObject(rowCompsMap, function (nodeId, rowComp) {\n // if row was used, then it's null\n if (!rowComp) {\n return;\n }\n rowComp.destroy(animate);\n _.pushAll(delayedFuncs, rowComp.getAndClearDelayedDestroyFunctions());\n });\n _.executeInAWhile(delayedFuncs);\n };\n RowRenderer.prototype.checkAngularCompile = function () {\n var _this = this;\n // if we are doing angular compiling, then do digest the scope here\n if (this.gridOptionsWrapper.isAngularCompileRows()) {\n // we do it in a timeout, in case we are already in an apply\n window.setTimeout(function () {\n _this.$scope.$apply();\n }, 0);\n }\n };\n RowRenderer.prototype.workOutFirstAndLastRowsToRender = function () {\n var newFirst;\n var newLast;\n if (!this.paginationProxy.isRowsToRender()) {\n newFirst = 0;\n newLast = -1; // setting to -1 means nothing in range\n }\n else if (this.printLayout) {\n newFirst = this.paginationProxy.getPageFirstRow();\n newLast = this.paginationProxy.getPageLastRow();\n }\n else {\n var paginationOffset = this.paginationProxy.getPixelOffset();\n var maxDivHeightScaler = this.maxDivHeightScaler.getOffset();\n var bodyVRange = this.gridPanel.getVScrollPosition();\n var bodyTopPixel = bodyVRange.top;\n var bodyBottomPixel = bodyVRange.bottom;\n var bufferPixels = this.gridOptionsWrapper.getRowBufferInPixels();\n var firstPixel = bodyTopPixel + paginationOffset + maxDivHeightScaler - bufferPixels;\n var lastPixel = bodyBottomPixel + paginationOffset + maxDivHeightScaler + bufferPixels;\n this.ensureAllRowsInRangeHaveHeightsCalculated(firstPixel, lastPixel);\n var firstRowIndex = this.paginationProxy.getRowIndexAtPixel(firstPixel);\n var lastRowIndex = this.paginationProxy.getRowIndexAtPixel(lastPixel);\n var pageFirstRow = this.paginationProxy.getPageFirstRow();\n var pageLastRow = this.paginationProxy.getPageLastRow();\n // adjust, in case buffer extended actual size\n if (firstRowIndex < pageFirstRow) {\n firstRowIndex = pageFirstRow;\n }\n if (lastRowIndex > pageLastRow) {\n lastRowIndex = pageLastRow;\n }\n newFirst = firstRowIndex;\n newLast = lastRowIndex;\n }\n // sometimes user doesn't set CSS right and ends up with grid with no height and grid ends up\n // trying to render all the rows, eg 10,000+ rows. this will kill the browser. so instead of\n // killing the browser, we limit the number of rows. just in case some use case we didn't think\n // of, we also have a property to not do this operation.\n var rowLayoutNormal = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_NORMAL;\n var suppressRowCountRestriction = this.gridOptionsWrapper.isSuppressMaxRenderedRowRestriction();\n var rowBufferMaxSize = Math.max(this.gridOptionsWrapper.getRowBuffer(), 500);\n if (rowLayoutNormal && !suppressRowCountRestriction) {\n if (newLast - newFirst > rowBufferMaxSize) {\n newLast = newFirst + rowBufferMaxSize;\n }\n }\n var firstDiffers = newFirst !== this.firstRenderedRow;\n var lastDiffers = newLast !== this.lastRenderedRow;\n if (firstDiffers || lastDiffers) {\n this.firstRenderedRow = newFirst;\n this.lastRenderedRow = newLast;\n var event_1 = {\n type: Events.EVENT_VIEWPORT_CHANGED,\n firstRow: newFirst,\n lastRow: newLast,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n // only dispatch firstDataRendered if we have actually rendered some data\n if (this.paginationProxy.isRowsToRender()) {\n var event_2 = {\n type: Events.EVENT_FIRST_DATA_RENDERED,\n firstRow: newFirst,\n lastRow: newLast,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEventOnce(event_2);\n }\n };\n RowRenderer.prototype.ensureAllRowsInRangeHaveHeightsCalculated = function (topPixel, bottomPixel) {\n // ensureRowHeightsVisible only works with CSRM, as it's the only row model that allows lazy row height calcs.\n // all the other row models just hard code so the method just returns back false\n var rowHeightsChanged = this.paginationProxy.ensureRowHeightsValid(topPixel, bottomPixel, -1, -1);\n if (rowHeightsChanged) {\n // if row heights have changed, we need to resize the containers the rows sit it\n this.sizeContainerToPageHeight();\n // we also need to update heightScaler as this has dependency of row container height\n this.maxDivHeightScaler.updateOffset();\n }\n };\n RowRenderer.prototype.getFirstVirtualRenderedRow = function () {\n return this.firstRenderedRow;\n };\n RowRenderer.prototype.getLastVirtualRenderedRow = function () {\n return this.lastRenderedRow;\n };\n // check that none of the rows to remove are editing or focused as:\n // a) if editing, we want to keep them, otherwise the user will loose the context of the edit,\n // eg user starts editing, enters some text, then scrolls down and then up, next time row rendered\n // the edit is reset - so we want to keep it rendered.\n // b) if focused, we want ot keep keyboard focus, so if user ctrl+c, it goes to clipboard,\n // otherwise the user can range select and drag (with focus cell going out of the viewport)\n // and then ctrl+c, nothing will happen if cell is removed from dom.\n // c) if detail record of master detail, as users complained that the context of detail rows\n // was getting lost when detail row out of view. eg user expands to show detail row,\n // then manipulates the detail panel (eg sorts the detail grid), then context is lost\n // after detail panel is scrolled out of / into view.\n RowRenderer.prototype.doNotUnVirtualiseRow = function (rowComp) {\n var REMOVE_ROW = false;\n var KEEP_ROW = true;\n var rowNode = rowComp.getRowNode();\n var rowHasFocus = this.focusedCellController.isRowNodeFocused(rowNode);\n var rowIsEditing = rowComp.isEditing();\n var rowIsDetail = rowNode.detail;\n var mightWantToKeepRow = rowHasFocus || rowIsEditing || rowIsDetail;\n // if we deffo don't want to keep it,\n if (!mightWantToKeepRow) {\n return REMOVE_ROW;\n }\n // editing row, only remove if it is no longer rendered, eg filtered out or new data set.\n // the reason we want to keep is if user is scrolling up and down, we don't want to loose\n // the context of the editing in process.\n var rowNodePresent = this.paginationProxy.isRowPresent(rowNode);\n return rowNodePresent ? KEEP_ROW : REMOVE_ROW;\n };\n RowRenderer.prototype.createRowComp = function (rowNode, animate, afterScroll) {\n var suppressAnimationFrame = this.gridOptionsWrapper.isSuppressAnimationFrame();\n // we don't use animations frames for printing, so the user can put the grid into print mode\n // and immediately print - otherwise the user would have to wait for the rows to draw in the background\n // (via the animation frames) which is awkward to do from code.\n // we only do the animation frames after scrolling, as this is where we want the smooth user experience.\n // having animation frames for other times makes the grid look 'jumpy'.\n var useAnimationFrameForCreate = afterScroll && !suppressAnimationFrame && !this.printLayout;\n var rowComp = new RowComp(this.$scope, this.rowContainers.body, this.rowContainers.pinnedLeft, this.rowContainers.pinnedRight, this.rowContainers.fullWidth, rowNode, this.beans, animate, useAnimationFrameForCreate, this.printLayout, this.embedFullWidthRows);\n rowComp.init();\n return rowComp;\n };\n RowRenderer.prototype.getRenderedNodes = function () {\n var renderedRows = this.rowCompsByIndex;\n return Object.keys(renderedRows).map(function (key) {\n return renderedRows[key].getRowNode();\n });\n };\n // we use index for rows, but column object for columns, as the next column (by index) might not\n // be visible (header grouping) so it's not reliable, so using the column object instead.\n RowRenderer.prototype.navigateToNextCell = function (event, key, currentCell, allowUserOverride) {\n // we keep searching for a next cell until we find one. this is how the group rows get skipped\n var nextCell = currentCell;\n var finished = false;\n while (!finished) {\n // if the current cell is spanning across multiple columns, we need to move\n // our current position to be the last cell on the right before finding the\n // the next target.\n if (this.gridOptionsWrapper.isEnableRtl()) {\n if (key === Constants.KEY_LEFT) {\n nextCell = this.getLastCellOfColSpan(nextCell);\n }\n }\n else if (key === Constants.KEY_RIGHT) {\n nextCell = this.getLastCellOfColSpan(nextCell);\n }\n nextCell = this.cellNavigationService.getNextCellToFocus(key, nextCell);\n // eg if going down, and nextCell=undefined, means we are gone past the last row\n var hitEdgeOfGrid = _.missing(nextCell);\n if (hitEdgeOfGrid) {\n finished = true;\n continue;\n }\n var rowNode = this.rowPositionUtils.getRowNode(nextCell);\n // we do not allow focusing on detail rows and full width rows\n if (rowNode.detail || rowNode.isFullWidthCell()) {\n continue;\n }\n // if not a group, then we have a valid row, so quit the search\n if (!rowNode.group) {\n finished = true;\n continue;\n }\n // full width rows cannot be focused, so if it's a group and using full width rows,\n // we need to skip over the row\n var pivotMode = this.columnController.isPivotMode();\n var usingFullWidthRows = this.gridOptionsWrapper.isGroupUseEntireRow(pivotMode);\n if (!usingFullWidthRows) {\n finished = true;\n }\n }\n // allow user to override what cell to go to next. when doing normal cell navigation (with keys)\n // we allow this, however if processing 'enter after edit' we don't allow override\n if (allowUserOverride) {\n var userFunc = this.gridOptionsWrapper.getNavigateToNextCellFunc();\n if (_.exists(userFunc)) {\n var params = {\n key: key,\n previousCellPosition: currentCell,\n nextCellPosition: nextCell ? nextCell : null,\n event: event\n };\n var userCell = userFunc(params);\n if (_.exists(userCell)) {\n if (userCell.floating) {\n _.doOnce(function () { console.warn(\"ag-Grid: tabToNextCellFunc return type should have attributes: rowIndex, rowPinned, column. However you had 'floating', maybe you meant 'rowPinned'?\"); }, 'no floating in userCell');\n userCell.rowPinned = userCell.floating;\n }\n nextCell = {\n rowPinned: userCell.rowPinned,\n rowIndex: userCell.rowIndex,\n column: userCell.column\n };\n }\n else {\n nextCell = null;\n }\n }\n }\n // no next cell means we have reached a grid boundary, eg left, right, top or bottom of grid\n if (!nextCell) {\n return;\n }\n // in case we have col spanning we get the cellComp and use it to\n // get the position. This was we always focus the first cell inside\n // the spanning.\n this.ensureCellVisible(nextCell); // ensureCellVisible first, to make sure nextCell is rendered\n var cellComp = this.getComponentForCell(nextCell);\n nextCell = cellComp.getCellPosition();\n // we call this again, as nextCell can be different to it's previous value due to Column Spanning\n // (ie if cursor moving from right to left, and cell is spanning columns, then nextCell was the\n // last column in the group, however now it's the first column in the group). if we didn't do\n // ensureCellVisible again, then we could only be showing the last portion (last column) of the\n // merged cells.\n this.ensureCellVisible(nextCell);\n this.focusedCellController.setFocusedCell(nextCell.rowIndex, nextCell.column, nextCell.rowPinned, true);\n if (this.rangeController) {\n this.rangeController.setRangeToCell(nextCell);\n }\n };\n RowRenderer.prototype.getLastCellOfColSpan = function (cell) {\n var cellComp = this.getComponentForCell(cell);\n if (!cellComp) {\n return cell;\n }\n var colSpanningList = cellComp.getColSpanningList();\n if (colSpanningList.length === 1) {\n return cell;\n }\n return {\n rowIndex: cell.rowIndex,\n column: _.last(colSpanningList),\n rowPinned: cell.rowPinned\n };\n };\n RowRenderer.prototype.ensureCellVisible = function (gridCell) {\n // this scrolls the row into view\n if (_.missing(gridCell.rowPinned)) {\n this.gridPanel.ensureIndexVisible(gridCell.rowIndex);\n }\n if (!gridCell.column.isPinned()) {\n this.gridPanel.ensureColumnVisible(gridCell.column);\n }\n // need to nudge the scrolls for the floating items. otherwise when we set focus on a non-visible\n // floating cell, the scrolls get out of sync\n this.gridPanel.horizontallyScrollHeaderCenterAndFloatingCenter();\n // need to flush frames, to make sure the correct cells are rendered\n this.animationFrameService.flushAllFrames();\n };\n RowRenderer.prototype.startEditingCell = function (gridCell, keyPress, charPress) {\n var cell = this.getComponentForCell(gridCell);\n if (cell) {\n cell.startRowOrCellEdit(keyPress, charPress);\n }\n };\n RowRenderer.prototype.getComponentForCell = function (cellPosition) {\n var rowComponent;\n switch (cellPosition.rowPinned) {\n case Constants.PINNED_TOP:\n rowComponent = this.floatingTopRowComps[cellPosition.rowIndex];\n break;\n case Constants.PINNED_BOTTOM:\n rowComponent = this.floatingBottomRowComps[cellPosition.rowIndex];\n break;\n default:\n rowComponent = this.rowCompsByIndex[cellPosition.rowIndex];\n break;\n }\n if (!rowComponent) {\n return null;\n }\n var cellComponent = rowComponent.getRenderedCellForColumn(cellPosition.column);\n return cellComponent;\n };\n RowRenderer.prototype.getRowNode = function (gridRow) {\n switch (gridRow.rowPinned) {\n case Constants.PINNED_TOP:\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case Constants.PINNED_BOTTOM:\n return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n default:\n return this.rowModel.getRow(gridRow.rowIndex);\n }\n };\n RowRenderer.prototype.onTabKeyDown = function (previousRenderedCell, keyboardEvent) {\n var backwards = keyboardEvent.shiftKey;\n var success = this.moveToCellAfter(previousRenderedCell, backwards);\n if (success) {\n keyboardEvent.preventDefault();\n }\n };\n RowRenderer.prototype.tabToNextCell = function (backwards) {\n var focusedCell = this.focusedCellController.getFocusedCell();\n // if no focus, then cannot navigate\n if (_.missing(focusedCell)) {\n return false;\n }\n var renderedCell = this.getComponentForCell(focusedCell);\n // if cell is not rendered, means user has scrolled away from the cell\n if (_.missing(renderedCell)) {\n return false;\n }\n var result = this.moveToCellAfter(renderedCell, backwards);\n return result;\n };\n RowRenderer.prototype.moveToCellAfter = function (previousRenderedCell, backwards) {\n var editing = previousRenderedCell.isEditing();\n var res;\n if (editing) {\n if (this.gridOptionsWrapper.isFullRowEdit()) {\n res = this.moveToNextEditingRow(previousRenderedCell, backwards);\n }\n else {\n res = this.moveToNextEditingCell(previousRenderedCell, backwards);\n }\n }\n else {\n res = this.moveToNextCellNotEditing(previousRenderedCell, backwards);\n }\n return res;\n };\n RowRenderer.prototype.moveToNextEditingCell = function (previousRenderedCell, backwards) {\n var gridCell = previousRenderedCell.getCellPosition();\n // need to do this before getting next cell to edit, in case the next cell\n // has editable function (eg colDef.editable=func() ) and it depends on the\n // result of this cell, so need to save updates from the first edit, in case\n // the value is referenced in the function.\n previousRenderedCell.stopEditing();\n // find the next cell to start editing\n var nextRenderedCell = this.findNextCellToFocusOn(gridCell, backwards, true);\n var foundCell = _.exists(nextRenderedCell);\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n if (foundCell) {\n nextRenderedCell.startEditingIfEnabled(null, null, true);\n nextRenderedCell.focusCell(false);\n }\n return foundCell;\n };\n RowRenderer.prototype.moveToNextEditingRow = function (previousRenderedCell, backwards) {\n var gridCell = previousRenderedCell.getCellPosition();\n // find the next cell to start editing\n var nextRenderedCell = this.findNextCellToFocusOn(gridCell, backwards, true);\n var foundCell = _.exists(nextRenderedCell);\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n if (foundCell) {\n this.moveEditToNextCellOrRow(previousRenderedCell, nextRenderedCell);\n }\n return foundCell;\n };\n RowRenderer.prototype.moveToNextCellNotEditing = function (previousRenderedCell, backwards) {\n var gridCell = previousRenderedCell.getCellPosition();\n // find the next cell to start editing\n var nextRenderedCell = this.findNextCellToFocusOn(gridCell, backwards, false);\n var foundCell = _.exists(nextRenderedCell);\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n if (foundCell) {\n nextRenderedCell.focusCell(true);\n }\n return foundCell;\n };\n RowRenderer.prototype.moveEditToNextCellOrRow = function (previousRenderedCell, nextRenderedCell) {\n var pGridCell = previousRenderedCell.getCellPosition();\n var nGridCell = nextRenderedCell.getCellPosition();\n var rowsMatch = pGridCell.rowIndex === nGridCell.rowIndex && pGridCell.rowPinned === nGridCell.rowPinned;\n if (rowsMatch) {\n // same row, so we don't start / stop editing, we just move the focus along\n previousRenderedCell.setFocusOutOnEditor();\n nextRenderedCell.setFocusInOnEditor();\n }\n else {\n var pRow = previousRenderedCell.getRenderedRow();\n var nRow = nextRenderedCell.getRenderedRow();\n previousRenderedCell.setFocusOutOnEditor();\n pRow.stopEditing();\n nRow.startRowEditing();\n nextRenderedCell.setFocusInOnEditor();\n }\n nextRenderedCell.focusCell();\n };\n // called by the cell, when tab is pressed while editing.\n // @return: RenderedCell when navigation successful, otherwise null\n RowRenderer.prototype.findNextCellToFocusOn = function (gridCell, backwards, startEditing) {\n var nextCell = gridCell;\n while (true) {\n if (!backwards) {\n nextCell = this.getLastCellOfColSpan(nextCell);\n }\n nextCell = this.cellNavigationService.getNextTabbedCell(nextCell, backwards);\n // allow user to override what cell to go to next\n var userFunc = this.gridOptionsWrapper.getTabToNextCellFunc();\n if (_.exists(userFunc)) {\n var params = {\n backwards: backwards,\n editing: startEditing,\n previousCellPosition: gridCell,\n nextCellPosition: nextCell ? nextCell : null\n };\n var userCell = userFunc(params);\n if (_.exists(userCell)) {\n if (userCell.floating) {\n _.doOnce(function () { console.warn(\"ag-Grid: tabToNextCellFunc return type should have attributes: rowIndex, rowPinned, column. However you had 'floating', maybe you meant 'rowPinned'?\"); }, 'no floating in userCell');\n userCell.rowPinned = userCell.floating;\n }\n nextCell = {\n rowIndex: userCell.rowIndex,\n column: userCell.column,\n rowPinned: userCell.rowPinned\n };\n }\n else {\n nextCell = null;\n }\n }\n // if no 'next cell', means we have got to last cell of grid, so nothing to move to,\n // so bottom right cell going forwards, or top left going backwards\n if (!nextCell) {\n return null;\n }\n // if editing, but cell not editable, skip cell. we do this before we do all of\n // the 'ensure index visible' and 'flush all frames', otherwise if we are skipping\n // a bunch of cells (eg 10 rows) then all the work on ensuring cell visible is useless\n // (except for the last one) which causes grid to stall for a while.\n if (startEditing) {\n var rowNode = this.lookupRowNodeForCell(nextCell);\n var cellIsEditable = nextCell.column.isCellEditable(rowNode);\n if (!cellIsEditable) {\n continue;\n }\n }\n // this scrolls the row into view\n var cellIsNotFloating = _.missing(nextCell.rowPinned);\n if (cellIsNotFloating) {\n this.gridPanel.ensureIndexVisible(nextCell.rowIndex);\n }\n // pinned columns don't scroll, so no need to ensure index visible\n if (!nextCell.column.isPinned()) {\n this.gridPanel.ensureColumnVisible(nextCell.column);\n }\n // need to nudge the scrolls for the floating items. otherwise when we set focus on a non-visible\n // floating cell, the scrolls get out of sync\n this.gridPanel.horizontallyScrollHeaderCenterAndFloatingCenter();\n // get the grid panel to flush all animation frames - otherwise the call below to get the cellComp\n // could fail, if we just scrolled the grid (to make a cell visible) and the rendering hasn't finished.\n this.animationFrameService.flushAllFrames();\n // we have to call this after ensureColumnVisible - otherwise it could be a virtual column\n // or row that is not currently in view, hence the renderedCell would not exist\n var nextCellComp = this.getComponentForCell(nextCell);\n // if next cell is fullWidth row, then no rendered cell,\n // as fullWidth rows have no cells, so we skip it\n if (_.missing(nextCellComp)) {\n continue;\n }\n if (nextCellComp.isSuppressNavigable()) {\n continue;\n }\n // by default, when we click a cell, it gets selected into a range, so to keep keyboard navigation\n // consistent, we set into range here also.\n if (this.rangeController) {\n this.rangeController.setRangeToCell(nextCell);\n }\n // we successfully tabbed onto a grid cell, so return true\n return nextCellComp;\n }\n };\n RowRenderer.prototype.lookupRowNodeForCell = function (cell) {\n if (cell.rowPinned === Constants.PINNED_TOP) {\n return this.pinnedRowModel.getPinnedTopRow(cell.rowIndex);\n }\n if (cell.rowPinned === Constants.PINNED_BOTTOM) {\n return this.pinnedRowModel.getPinnedBottomRow(cell.rowIndex);\n }\n return this.paginationProxy.getRow(cell.rowIndex);\n };\n __decorate([\n Autowired(\"paginationProxy\")\n ], RowRenderer.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired(\"columnController\")\n ], RowRenderer.prototype, \"columnController\", void 0);\n __decorate([\n Autowired(\"gridOptionsWrapper\")\n ], RowRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired(\"$scope\")\n ], RowRenderer.prototype, \"$scope\", void 0);\n __decorate([\n Autowired(\"eventService\")\n ], RowRenderer.prototype, \"eventService\", void 0);\n __decorate([\n Autowired(\"pinnedRowModel\")\n ], RowRenderer.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired(\"rowModel\")\n ], RowRenderer.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired(\"loggerFactory\")\n ], RowRenderer.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired(\"focusedCellController\")\n ], RowRenderer.prototype, \"focusedCellController\", void 0);\n __decorate([\n Autowired(\"cellNavigationService\")\n ], RowRenderer.prototype, \"cellNavigationService\", void 0);\n __decorate([\n Autowired(\"columnApi\")\n ], RowRenderer.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired(\"gridApi\")\n ], RowRenderer.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired(\"beans\")\n ], RowRenderer.prototype, \"beans\", void 0);\n __decorate([\n Autowired(\"maxDivHeightScaler\")\n ], RowRenderer.prototype, \"maxDivHeightScaler\", void 0);\n __decorate([\n Autowired(\"animationFrameService\")\n ], RowRenderer.prototype, \"animationFrameService\", void 0);\n __decorate([\n Autowired(\"rowPositionUtils\")\n ], RowRenderer.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n Optional(\"rangeController\")\n ], RowRenderer.prototype, \"rangeController\", void 0);\n __decorate([\n __param(0, Qualifier(\"loggerFactory\"))\n ], RowRenderer.prototype, \"agWire\", null);\n RowRenderer = __decorate([\n Bean(\"rowRenderer\")\n ], RowRenderer);\n return RowRenderer;\n}(BeanStub));\nexport { RowRenderer };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport var CellRangeType;\n(function (CellRangeType) {\n CellRangeType[CellRangeType[\"VALUE\"] = 0] = \"VALUE\";\n CellRangeType[CellRangeType[\"DIMENSION\"] = 1] = \"DIMENSION\";\n})(CellRangeType || (CellRangeType = {}));\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { GridOptionsWrapper } from \"../gridOptionsWrapper\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { HeaderContainer } from \"./headerContainer\";\nimport { Events } from \"../events\";\nimport { Component } from \"../widgets/component\";\nimport { RefSelector } from \"../widgets/componentAnnotations\";\nimport { Constants } from \"../constants\";\nimport { _ } from \"../utils\";\nvar HeaderRootComp = /** @class */ (function (_super) {\n __extends(HeaderRootComp, _super);\n function HeaderRootComp() {\n return _super.call(this, HeaderRootComp.TEMPLATE) || this;\n }\n HeaderRootComp.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.childContainers.forEach(function (c) { return c.registerGridComp(gridPanel); });\n };\n HeaderRootComp.prototype.postConstruct = function () {\n var _this = this;\n this.printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n this.gridApi.registerHeaderRootComp(this);\n this.autoWidthCalculator.registerHeaderRootComp(this);\n var centerContainer = new HeaderContainer(this.eHeaderContainer, this.eHeaderViewport, null);\n var pinnedLeftContainer = new HeaderContainer(this.ePinnedLeftHeader, null, Constants.PINNED_LEFT);\n var pinnedRightContainer = new HeaderContainer(this.ePinnedRightHeader, null, Constants.PINNED_RIGHT);\n this.childContainers = [centerContainer, pinnedLeftContainer, pinnedRightContainer];\n this.childContainers.forEach(function (container) { return _this.getContext().wireBean(container); });\n // shotgun way to get labels to change, eg from sum(amount) to avg(amount)\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.refreshHeader.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, this.onDomLayoutChanged.bind(this));\n // for setting ag-pivot-on / ag-pivot-off CSS classes\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));\n this.onPivotModeChanged();\n this.addPreventHeaderScroll();\n if (this.columnController.isReady()) {\n this.refreshHeader();\n }\n };\n HeaderRootComp.prototype.onDomLayoutChanged = function () {\n var newValue = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n if (this.printLayout !== newValue) {\n this.printLayout = newValue;\n this.refreshHeader();\n }\n };\n HeaderRootComp.prototype.setHorizontalScroll = function (offset) {\n this.eHeaderContainer.style.transform = \"translateX(\" + offset + \"px)\";\n };\n HeaderRootComp.prototype.forEachHeaderElement = function (callback) {\n this.childContainers.forEach(function (childContainer) { return childContainer.forEachHeaderElement(callback); });\n };\n HeaderRootComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.childContainers.forEach(function (container) { return container.destroy(); });\n };\n HeaderRootComp.prototype.refreshHeader = function () {\n this.childContainers.forEach(function (container) { return container.refresh(); });\n };\n HeaderRootComp.prototype.onPivotModeChanged = function () {\n var pivotMode = this.columnController.isPivotMode();\n _.addOrRemoveCssClass(this.getGui(), 'ag-pivot-on', pivotMode);\n _.addOrRemoveCssClass(this.getGui(), 'ag-pivot-off', !pivotMode);\n };\n HeaderRootComp.prototype.setHeight = function (height) {\n // one extra pixel is needed here to account for the\n // height of the border\n var px = height + 1 + \"px\";\n this.getGui().style.height = px;\n this.getGui().style.minHeight = px;\n };\n // if the user is in floating filter and hits tab a few times, the header can\n // end up scrolling to show items off the screen, leaving the grid and header\n // and the grid columns no longer in sync.\n HeaderRootComp.prototype.addPreventHeaderScroll = function () {\n var _this = this;\n this.addDestroyableEventListener(this.eHeaderViewport, 'scroll', function () {\n // if the header scrolls, the header will be out of sync. so we reset the\n // header scroll, and then scroll the body, which will in turn set the offset\n // on the header, giving the impression that the header scrolled as expected.\n var scrollLeft = _this.eHeaderViewport.scrollLeft;\n if (scrollLeft !== 0) {\n _this.gridPanel.scrollHorizontally(scrollLeft);\n _this.eHeaderViewport.scrollLeft = 0;\n }\n });\n };\n HeaderRootComp.prototype.setHeaderContainerWidth = function (width) {\n this.eHeaderContainer.style.width = width + \"px\";\n };\n HeaderRootComp.prototype.setLeftVisible = function (visible) {\n _.setDisplayed(this.ePinnedLeftHeader, visible);\n };\n HeaderRootComp.prototype.setRightVisible = function (visible) {\n _.setDisplayed(this.ePinnedRightHeader, visible);\n };\n HeaderRootComp.prototype.getHeaderRowCount = function () {\n if (this.childContainers.length === 0) {\n return 0;\n }\n return this.childContainers[0].getRowComps().length;\n };\n HeaderRootComp.TEMPLATE = \"
\\n
\\n
\\n
\\n
\\n
\\n
\";\n __decorate([\n RefSelector('ePinnedLeftHeader')\n ], HeaderRootComp.prototype, \"ePinnedLeftHeader\", void 0);\n __decorate([\n RefSelector('ePinnedRightHeader')\n ], HeaderRootComp.prototype, \"ePinnedRightHeader\", void 0);\n __decorate([\n RefSelector('eHeaderContainer')\n ], HeaderRootComp.prototype, \"eHeaderContainer\", void 0);\n __decorate([\n RefSelector('eHeaderViewport')\n ], HeaderRootComp.prototype, \"eHeaderViewport\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], HeaderRootComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], HeaderRootComp.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], HeaderRootComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], HeaderRootComp.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('autoWidthCalculator')\n ], HeaderRootComp.prototype, \"autoWidthCalculator\", void 0);\n __decorate([\n PostConstruct\n ], HeaderRootComp.prototype, \"postConstruct\", null);\n return HeaderRootComp;\n}(Component));\nexport { HeaderRootComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { DragSourceType } from \"../dragAndDrop/dragAndDropService\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { MoveColumnController } from \"./moveColumnController\";\nimport { BodyDropPivotTarget } from \"./bodyDropPivotTarget\";\nimport { Constants } from \"../constants\";\nvar DropType;\n(function (DropType) {\n DropType[DropType[\"ColumnMove\"] = 0] = \"ColumnMove\";\n DropType[DropType[\"Pivot\"] = 1] = \"Pivot\";\n})(DropType || (DropType = {}));\nvar BodyDropTarget = /** @class */ (function () {\n function BodyDropTarget(pinned, eContainer) {\n this.dropListeners = {};\n this.pinned = pinned;\n this.eContainer = eContainer;\n }\n BodyDropTarget.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.moveColumnController.registerGridComp(gridPanel);\n switch (this.pinned) {\n case Constants.PINNED_LEFT:\n this.eSecondaryContainers = this.gridPanel.getDropTargetLeftContainers();\n break;\n case Constants.PINNED_RIGHT:\n this.eSecondaryContainers = this.gridPanel.getDropTargetRightContainers();\n break;\n default:\n this.eSecondaryContainers = this.gridPanel.getDropTargetBodyContainers();\n break;\n }\n };\n BodyDropTarget.prototype.isInterestedIn = function (type) {\n return type === DragSourceType.HeaderCell\n || (type === DragSourceType.ToolPanel && this.gridOptionsWrapper.isAllowDragFromColumnsToolPanel());\n };\n BodyDropTarget.prototype.getSecondaryContainers = function () {\n return this.eSecondaryContainers;\n };\n BodyDropTarget.prototype.getContainer = function () {\n return this.eContainer;\n };\n BodyDropTarget.prototype.init = function () {\n this.moveColumnController = new MoveColumnController(this.pinned, this.eContainer);\n this.context.wireBean(this.moveColumnController);\n var bodyDropPivotTarget = new BodyDropPivotTarget(this.pinned);\n this.context.wireBean(bodyDropPivotTarget);\n this.dropListeners[DropType.ColumnMove] = this.moveColumnController;\n this.dropListeners[DropType.Pivot] = bodyDropPivotTarget;\n this.dragAndDropService.addDropTarget(this);\n };\n BodyDropTarget.prototype.getIconName = function () {\n return this.currentDropListener.getIconName();\n };\n // we want to use the bodyPivotTarget if the user is dragging columns in from the toolPanel\n // and we are in pivot mode, as it has to logic to set pivot/value/group on the columns when\n // dropped into the grid's body.\n BodyDropTarget.prototype.getDropType = function (draggingEvent) {\n if (this.columnController.isPivotMode()) {\n // in pivot mode, then if moving a column (ie didn't come from toolpanel) then it's\n // a standard column move, however if it came from teh toolpanel, then we are introducing\n // dimensions or values to the grid\n if (draggingEvent.dragSource.type === DragSourceType.ToolPanel) {\n return DropType.Pivot;\n }\n else {\n return DropType.ColumnMove;\n }\n }\n else {\n // it's a column, and not pivot mode, so always moving\n return DropType.ColumnMove;\n }\n };\n BodyDropTarget.prototype.onDragEnter = function (draggingEvent) {\n // we pick the drop listener depending on whether we are in pivot mode are not. if we are\n // in pivot mode, then dropping cols changes the row group, pivot, value stats. otherwise\n // we change visibility state and position.\n // if (this.columnController.isPivotMode()) {\n var dropType = this.getDropType(draggingEvent);\n this.currentDropListener = this.dropListeners[dropType];\n this.currentDropListener.onDragEnter(draggingEvent);\n };\n BodyDropTarget.prototype.onDragLeave = function (params) {\n this.currentDropListener.onDragLeave(params);\n };\n BodyDropTarget.prototype.onDragging = function (params) {\n this.currentDropListener.onDragging(params);\n };\n BodyDropTarget.prototype.onDragStop = function (params) {\n this.currentDropListener.onDragStop(params);\n };\n __decorate([\n Autowired('context')\n ], BodyDropTarget.prototype, \"context\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], BodyDropTarget.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('columnController')\n ], BodyDropTarget.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], BodyDropTarget.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], BodyDropTarget.prototype, \"init\", null);\n return BodyDropTarget;\n}());\nexport { BodyDropTarget };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { _ } from \"../utils\";\nimport { DragAndDropService, DragSourceType, HDirection } from \"../dragAndDrop/dragAndDropService\";\nimport { Constants } from \"../constants\";\nvar MoveColumnController = /** @class */ (function () {\n function MoveColumnController(pinned, eContainer) {\n this.needToMoveLeft = false;\n this.needToMoveRight = false;\n this.pinned = pinned;\n this.eContainer = eContainer;\n this.centerContainer = !_.exists(pinned);\n }\n MoveColumnController.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n MoveColumnController.prototype.init = function () {\n this.logger = this.loggerFactory.create('MoveColumnController');\n };\n MoveColumnController.prototype.getIconName = function () {\n return this.pinned ? DragAndDropService.ICON_PINNED : DragAndDropService.ICON_MOVE;\n };\n MoveColumnController.prototype.onDragEnter = function (draggingEvent) {\n // we do dummy drag, so make sure column appears in the right location when first placed\n var columns = draggingEvent.dragItem.columns;\n var dragCameFromToolPanel = draggingEvent.dragSource.type === DragSourceType.ToolPanel;\n if (dragCameFromToolPanel) {\n // the if statement doesn't work if drag leaves grid, then enters again\n this.setColumnsVisible(columns, true, \"uiColumnDragged\");\n }\n else {\n // restore previous state of visible columns upon re-entering. this means if the user drags\n // a group out, and then drags the group back in, only columns that were originally visible\n // will be visible again. otherwise a group with three columns (but only two visible) could\n // be dragged out, then when it's dragged in again, all three are visible. this stops that.\n var visibleState_1 = draggingEvent.dragItem.visibleState;\n var visibleColumns = columns.filter(function (column) { return visibleState_1[column.getId()]; });\n this.setColumnsVisible(visibleColumns, true, \"uiColumnDragged\");\n }\n this.setColumnsPinned(columns, this.pinned, \"uiColumnDragged\");\n this.onDragging(draggingEvent, true);\n };\n MoveColumnController.prototype.onDragLeave = function (draggingEvent) {\n var hideColumnOnExit = !this.gridOptionsWrapper.isSuppressDragLeaveHidesColumns() && !draggingEvent.fromNudge;\n if (hideColumnOnExit) {\n var dragItem = draggingEvent.dragSource.dragItemCallback();\n var columns = dragItem.columns;\n this.setColumnsVisible(columns, false, \"uiColumnDragged\");\n }\n this.ensureIntervalCleared();\n };\n MoveColumnController.prototype.setColumnsVisible = function (columns, visible, source) {\n if (source === void 0) { source = \"api\"; }\n if (columns) {\n var allowedCols = columns.filter(function (c) { return !c.getColDef().lockVisible; });\n this.columnController.setColumnsVisible(allowedCols, visible, source);\n }\n };\n MoveColumnController.prototype.setColumnsPinned = function (columns, pinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (columns) {\n var allowedCols = columns.filter(function (c) { return !c.getColDef().lockPinned; });\n this.columnController.setColumnsPinned(allowedCols, pinned, source);\n }\n };\n MoveColumnController.prototype.onDragStop = function () {\n this.ensureIntervalCleared();\n };\n MoveColumnController.prototype.normaliseX = function (x) {\n // flip the coordinate if doing RTL\n var flipHorizontallyForRtl = this.gridOptionsWrapper.isEnableRtl();\n if (flipHorizontallyForRtl) {\n var clientWidth = this.eContainer.clientWidth;\n x = clientWidth - x;\n }\n // adjust for scroll only if centre container (the pinned containers dont scroll)\n var adjustForScroll = this.centerContainer;\n if (adjustForScroll) {\n x += this.gridPanel.getCenterViewportScrollLeft();\n }\n return x;\n };\n MoveColumnController.prototype.checkCenterForScrolling = function (xAdjustedForScroll) {\n if (this.centerContainer) {\n // scroll if the mouse has gone outside the grid (or just outside the scrollable part if pinning)\n // putting in 50 buffer, so even if user gets to edge of grid, a scroll will happen\n var firstVisiblePixel = this.gridPanel.getCenterViewportScrollLeft();\n var lastVisiblePixel = firstVisiblePixel + this.gridPanel.getCenterWidth();\n if (this.gridOptionsWrapper.isEnableRtl()) {\n this.needToMoveRight = xAdjustedForScroll < (firstVisiblePixel + 50);\n this.needToMoveLeft = xAdjustedForScroll > (lastVisiblePixel - 50);\n }\n else {\n this.needToMoveLeft = xAdjustedForScroll < (firstVisiblePixel + 50);\n this.needToMoveRight = xAdjustedForScroll > (lastVisiblePixel - 50);\n }\n if (this.needToMoveLeft || this.needToMoveRight) {\n this.ensureIntervalStarted();\n }\n else {\n this.ensureIntervalCleared();\n }\n }\n };\n MoveColumnController.prototype.onDragging = function (draggingEvent, fromEnter) {\n var _this = this;\n if (fromEnter === void 0) { fromEnter = false; }\n this.lastDraggingEvent = draggingEvent;\n // if moving up or down (ie not left or right) then do nothing\n if (_.missing(draggingEvent.hDirection)) {\n return;\n }\n var mouseXNormalised = this.normaliseX(draggingEvent.x);\n // if the user is dragging into the panel, ie coming from the side panel into the main grid,\n // we don't want to scroll the grid this time, it would appear like the table is jumping\n // each time a column is dragged in.\n if (!fromEnter) {\n this.checkCenterForScrolling(mouseXNormalised);\n }\n var hDirectionNormalised = this.normaliseDirection(draggingEvent.hDirection);\n var dragSourceType = draggingEvent.dragSource.type;\n var columnsToMove = draggingEvent.dragSource.dragItemCallback().columns;\n columnsToMove = columnsToMove.filter(function (col) {\n if (col.getColDef().lockPinned) {\n // if locked return true only if both col and container are same pin type.\n // double equals (==) here on purpose so that null==undefined is true (for not pinned options)\n return col.getPinned() == _this.pinned;\n }\n else {\n // if not pin locked, then always allowed to be in this container\n return true;\n }\n });\n this.attemptMoveColumns(dragSourceType, columnsToMove, hDirectionNormalised, mouseXNormalised, fromEnter);\n };\n MoveColumnController.prototype.normaliseDirection = function (hDirection) {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n switch (hDirection) {\n case HDirection.Left: return HDirection.Right;\n case HDirection.Right: return HDirection.Left;\n default: console.error(\"ag-Grid: Unknown direction \" + hDirection);\n }\n }\n else {\n return hDirection;\n }\n };\n // returns the index of the first column in the list ONLY if the cols are all beside\n // each other. if the cols are not beside each other, then returns null\n MoveColumnController.prototype.calculateOldIndex = function (movingCols) {\n var gridCols = this.columnController.getAllGridColumns();\n var indexes = [];\n movingCols.forEach(function (col) { return indexes.push(gridCols.indexOf(col)); });\n _.sortNumberArray(indexes);\n var firstIndex = indexes[0];\n var lastIndex = _.last(indexes);\n var spread = lastIndex - firstIndex;\n var gapsExist = spread !== indexes.length - 1;\n return gapsExist ? null : firstIndex;\n };\n MoveColumnController.prototype.attemptMoveColumns = function (dragSourceType, allMovingColumns, hDirection, mouseX, fromEnter) {\n var draggingLeft = hDirection === HDirection.Left;\n var draggingRight = hDirection === HDirection.Right;\n var validMoves = this.calculateValidMoves(allMovingColumns, draggingRight, mouseX);\n // if cols are not adjacent, then this returns null. when moving, we constrain the direction of the move\n // (ie left or right) to the mouse direction. however\n var oldIndex = this.calculateOldIndex(allMovingColumns);\n if (validMoves.length === 0) {\n return;\n }\n var firstValidMove = validMoves[0];\n // the two check below stop an error when the user grabs a group my a middle column, then\n // it is possible the mouse pointer is to the right of a column while been dragged left.\n // so we need to make sure that the mouse pointer is actually left of the left most column\n // if moving left, and right of the right most column if moving right\n // we check 'fromEnter' below so we move the column to the new spot if the mouse is coming from\n // outside the grid, eg if the column is moving from side panel, mouse is moving left, then we should\n // place the column to the RHS even if the mouse is moving left and the column is already on\n // the LHS. otherwise we stick to the rule described above.\n var constrainDirection = oldIndex !== null && !fromEnter;\n // don't consider 'fromEnter' when dragging header cells, otherwise group can jump to opposite direction of drag\n if (dragSourceType == DragSourceType.HeaderCell) {\n constrainDirection = oldIndex !== null;\n }\n if (constrainDirection) {\n // only allow left drag if this column is moving left\n if (draggingLeft && firstValidMove >= oldIndex) {\n return;\n }\n // only allow right drag if this column is moving right\n if (draggingRight && firstValidMove <= oldIndex) {\n return;\n }\n }\n for (var i = 0; i < validMoves.length; i++) {\n var move = validMoves[i];\n if (!this.columnController.doesMovePassRules(allMovingColumns, move)) {\n continue;\n }\n this.columnController.moveColumns(allMovingColumns, move, \"uiColumnDragged\");\n // important to return here, so once we do the first valid move, we don't try do any more\n return;\n }\n };\n MoveColumnController.prototype.calculateValidMoves = function (movingCols, draggingRight, mouseX) {\n // this is the list of cols on the screen, so it's these we use when comparing the x mouse position\n var allDisplayedCols = this.columnController.getDisplayedColumns(this.pinned);\n // but this list is the list of all cols, when we move a col it's the index within this list that gets used,\n // so the result we return has to be and index location for this list\n var allGridCols = this.columnController.getAllGridColumns();\n var colIsMovingFunc = function (col) { return movingCols.indexOf(col) >= 0; };\n var colIsNotMovingFunc = function (col) { return movingCols.indexOf(col) < 0; };\n var movingDisplayedCols = allDisplayedCols.filter(colIsMovingFunc);\n var otherDisplayedCols = allDisplayedCols.filter(colIsNotMovingFunc);\n var otherGridCols = allGridCols.filter(colIsNotMovingFunc);\n // work out how many DISPLAYED columns fit before the 'x' position. this gives us the displayIndex.\n // for example, if cols are a,b,c,d and we find a,b fit before 'x', then we want to place the moving\n // col between b and c (so that it is under the mouse position).\n var displayIndex = 0;\n var availableWidth = mouseX;\n // if we are dragging right, then the columns will be to the left of the mouse, so we also want to\n // include the width of the moving columns\n if (draggingRight) {\n var widthOfMovingDisplayedCols_1 = 0;\n movingDisplayedCols.forEach(function (col) { return widthOfMovingDisplayedCols_1 += col.getActualWidth(); });\n availableWidth -= widthOfMovingDisplayedCols_1;\n }\n if (availableWidth > 0) {\n // now count how many of the displayed columns will fit to the left\n for (var i = 0; i < otherDisplayedCols.length; i++) {\n var col = otherDisplayedCols[i];\n availableWidth -= col.getActualWidth();\n if (availableWidth < 0) {\n break;\n }\n displayIndex++;\n }\n // trial and error, if going right, we adjust by one, i didn't manage to quantify why, but it works\n if (draggingRight) {\n displayIndex++;\n }\n }\n // the display index is with respect to all the showing columns, however when we move, it's with\n // respect to all grid columns, so we need to translate from display index to grid index\n var firstValidMove;\n if (displayIndex > 0) {\n var leftColumn = otherDisplayedCols[displayIndex - 1];\n firstValidMove = otherGridCols.indexOf(leftColumn) + 1;\n }\n else {\n firstValidMove = otherGridCols.indexOf(otherDisplayedCols[0]);\n if (firstValidMove === -1) {\n firstValidMove = 0;\n }\n }\n var validMoves = [firstValidMove];\n // add in other valid moves due to hidden columns and married children. for example, a particular\n // move might break a group that has married children (so move isn't valid), however there could\n // be hidden columns (not displayed) that we could jump over to make the move valid. because\n // they are hidden, user doesn't see any different, however it allows moves that would otherwise\n // not work. for example imagine a group with 9 columns and all columns are hidden except the\n // middle one (so 4 hidden to left, 4 hidden to right), then when moving 'firstValidMove' will\n // be relative to the not-shown column, however we need to consider the move jumping over all the\n // hidden children. if we didn't do this, then if the group just described was at the end (RHS) of the\n // grid, there would be no way to put a column after it (as the grid would only consider beside the\n // visible column, which would fail valid move rules).\n if (draggingRight) {\n // if dragging right, then we add all the additional moves to the right. so in other words\n // if the next move is not valid, find the next move to the right that is valid.\n var pointer = firstValidMove + 1;\n var lastIndex = allGridCols.length - 1;\n while (pointer <= lastIndex) {\n validMoves.push(pointer);\n pointer++;\n }\n }\n else {\n // if dragging left we do the reverse of dragging right, we add in all the valid moves to the\n // left. however we also have to consider moves to the right for all hidden columns first.\n // (this logic is hard to reason with, it was worked out with trial and error,\n // move observation rather than science).\n // add moves to the right\n var pointer = firstValidMove;\n var lastIndex = allGridCols.length - 1;\n var displacedCol = allGridCols[pointer];\n while (pointer <= lastIndex && this.isColumnHidden(allDisplayedCols, displacedCol)) {\n pointer++;\n validMoves.push(pointer);\n displacedCol = allGridCols[pointer];\n }\n // add moves to the left\n pointer = firstValidMove - 1;\n var firstDisplayIndex = 0;\n while (pointer >= firstDisplayIndex) {\n validMoves.push(pointer);\n pointer--;\n }\n }\n return validMoves;\n };\n // isHidden takes into account visible=false and group=closed, ie it is not displayed\n MoveColumnController.prototype.isColumnHidden = function (displayedColumns, col) {\n return displayedColumns.indexOf(col) < 0;\n };\n MoveColumnController.prototype.ensureIntervalStarted = function () {\n if (!this.movingIntervalId) {\n this.intervalCount = 0;\n this.failedMoveAttempts = 0;\n this.movingIntervalId = window.setInterval(this.moveInterval.bind(this), 100);\n if (this.needToMoveLeft) {\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_LEFT, true);\n }\n else {\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_RIGHT, true);\n }\n }\n };\n MoveColumnController.prototype.ensureIntervalCleared = function () {\n if (this.moveInterval) {\n window.clearInterval(this.movingIntervalId);\n this.movingIntervalId = null;\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_MOVE);\n }\n };\n MoveColumnController.prototype.moveInterval = function () {\n // the amounts we move get bigger at each interval, so the speed accelerates, starting a bit slow\n // and getting faster. this is to give smoother user experience. we max at 100px to limit the speed.\n var pixelsToMove;\n this.intervalCount++;\n pixelsToMove = 10 + (this.intervalCount * 5);\n if (pixelsToMove > 100) {\n pixelsToMove = 100;\n }\n var pixelsMoved;\n if (this.needToMoveLeft) {\n pixelsMoved = this.gridPanel.scrollHorizontally(-pixelsToMove);\n }\n else if (this.needToMoveRight) {\n pixelsMoved = this.gridPanel.scrollHorizontally(pixelsToMove);\n }\n if (pixelsMoved !== 0) {\n this.onDragging(this.lastDraggingEvent);\n this.failedMoveAttempts = 0;\n }\n else {\n // we count the failed move attempts. if we fail to move 7 times, then we pin the column.\n // this is how we achieve pining by dragging the column to the edge of the grid.\n this.failedMoveAttempts++;\n var columns = this.lastDraggingEvent.dragItem.columns;\n var columnsThatCanPin = columns.filter(function (c) { return !c.getColDef().lockPinned; });\n if (columnsThatCanPin.length > 0) {\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_PINNED);\n if (this.failedMoveAttempts > 7) {\n var pinType = this.needToMoveLeft ? Constants.PINNED_LEFT : Constants.PINNED_RIGHT;\n this.setColumnsPinned(columnsThatCanPin, pinType, \"uiColumnDragged\");\n this.dragAndDropService.nudge();\n }\n }\n }\n };\n __decorate([\n Autowired('loggerFactory')\n ], MoveColumnController.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('columnController')\n ], MoveColumnController.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], MoveColumnController.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], MoveColumnController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], MoveColumnController.prototype, \"init\", null);\n return MoveColumnController;\n}());\nexport { MoveColumnController };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { DragAndDropService } from \"../dragAndDrop/dragAndDropService\";\nimport { Autowired } from \"../context/context\";\nvar BodyDropPivotTarget = /** @class */ (function () {\n function BodyDropPivotTarget(pinned) {\n this.columnsToAggregate = [];\n this.columnsToGroup = [];\n this.columnsToPivot = [];\n this.pinned = pinned;\n }\n /** Callback for when drag enters */\n BodyDropPivotTarget.prototype.onDragEnter = function (draggingEvent) {\n var _this = this;\n this.clearColumnsList();\n // in pivot mode, we don't accept any drops if functions are read only\n if (this.gridOptionsWrapper.isFunctionsReadOnly()) {\n return;\n }\n var dragColumns = draggingEvent.dragItem.columns;\n dragColumns.forEach(function (column) {\n // we don't allow adding secondary columns\n if (!column.isPrimary()) {\n return;\n }\n if (column.isAnyFunctionActive()) {\n return;\n }\n if (column.isAllowValue()) {\n _this.columnsToAggregate.push(column);\n }\n else if (column.isAllowRowGroup()) {\n _this.columnsToGroup.push(column);\n }\n else if (column.isAllowRowGroup()) {\n _this.columnsToPivot.push(column);\n }\n });\n };\n BodyDropPivotTarget.prototype.getIconName = function () {\n var totalColumns = this.columnsToAggregate.length + this.columnsToGroup.length + this.columnsToPivot.length;\n if (totalColumns > 0) {\n return this.pinned ? DragAndDropService.ICON_PINNED : DragAndDropService.ICON_MOVE;\n }\n else {\n return null;\n }\n };\n /** Callback for when drag leaves */\n BodyDropPivotTarget.prototype.onDragLeave = function (draggingEvent) {\n // if we are taking columns out of the center, then we remove them from the report\n this.clearColumnsList();\n };\n BodyDropPivotTarget.prototype.clearColumnsList = function () {\n this.columnsToAggregate.length = 0;\n this.columnsToGroup.length = 0;\n this.columnsToPivot.length = 0;\n };\n /** Callback for when dragging */\n BodyDropPivotTarget.prototype.onDragging = function (draggingEvent) {\n };\n /** Callback for when drag stops */\n BodyDropPivotTarget.prototype.onDragStop = function (draggingEvent) {\n if (this.columnsToAggregate.length > 0) {\n this.columnController.addValueColumns(this.columnsToAggregate, \"toolPanelDragAndDrop\");\n }\n if (this.columnsToGroup.length > 0) {\n this.columnController.addRowGroupColumns(this.columnsToGroup, \"toolPanelDragAndDrop\");\n }\n if (this.columnsToPivot.length > 0) {\n this.columnController.addPivotColumns(this.columnsToPivot, \"toolPanelDragAndDrop\");\n }\n };\n __decorate([\n Autowired('columnController')\n ], BodyDropPivotTarget.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], BodyDropPivotTarget.prototype, \"gridOptionsWrapper\", void 0);\n return BodyDropPivotTarget;\n}());\nexport { BodyDropPivotTarget };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { _, Promise } from \"../utils\";\nimport { Autowired, Bean, PostConstruct, PreDestroy } from \"../context/context\";\nimport { Events } from \"../events\";\nimport { ModuleNames } from \"../modules/moduleNames\";\nimport { ModuleRegistry } from \"../modules/moduleRegistry\";\nvar FilterManager = /** @class */ (function () {\n function FilterManager() {\n this.allFilters = {};\n this.quickFilter = null;\n this.quickFilterParts = null;\n // this is true when the grid is processing the filter change. this is used by the cell comps, so that they\n // don't flash when data changes due to filter changes. there is no need to flash when filter changes as the\n // user is in control, so doesn't make sense to show flashing changes. for example, go to main demo where\n // this feature is turned off (hack code to always return false for isSuppressFlashingCellsBecauseFiltering(), put in)\n // 100,000 rows and group by country. then do some filtering. all the cells flash, which is silly.\n this.processingFilterChange = false;\n }\n FilterManager_1 = FilterManager;\n FilterManager.prototype.registerGridCore = function (gridCore) {\n this.gridCore = gridCore;\n };\n FilterManager.prototype.init = function () {\n this.eventService.addEventListener(Events.EVENT_ROW_DATA_CHANGED, this.onNewRowsLoaded.bind(this));\n this.eventService.addEventListener(Events.EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));\n this.quickFilter = this.parseQuickFilter(this.gridOptionsWrapper.getQuickFilterText());\n this.setQuickFilterParts();\n this.allowShowChangeAfterFilter = this.gridOptionsWrapper.isAllowShowChangeAfterFilter();\n // check this here, in case there is a filter from the start\n this.checkExternalFilter();\n };\n FilterManager.prototype.setQuickFilterParts = function () {\n if (this.quickFilter) {\n this.quickFilterParts = this.quickFilter.split(' ');\n }\n else {\n this.quickFilterParts = null;\n }\n };\n FilterManager.prototype.setFilterModel = function (model) {\n var _this = this;\n var allPromises = [];\n if (model) {\n // mark the filters as we set them, so any active filters left over we stop\n var modelKeys_1 = Object.keys(model);\n _.iterateObject(this.allFilters, function (colId, filterWrapper) {\n _.removeFromArray(modelKeys_1, colId);\n var newModel = model[colId];\n _this.setModelOnFilterWrapper(filterWrapper.filterPromise, newModel);\n allPromises.push(filterWrapper.filterPromise);\n });\n // at this point, processedFields contains data for which we don't have a filter working yet\n modelKeys_1.forEach(function (colId) {\n var column = _this.columnController.getPrimaryColumn(colId);\n if (!column) {\n console.warn('Warning ag-grid setFilterModel - no column found for colId ' + colId);\n return;\n }\n var filterWrapper = _this.getOrCreateFilterWrapper(column, 'NO_UI');\n _this.setModelOnFilterWrapper(filterWrapper.filterPromise, model[colId]);\n allPromises.push(filterWrapper.filterPromise);\n });\n }\n else {\n _.iterateObject(this.allFilters, function (key, filterWrapper) {\n _this.setModelOnFilterWrapper(filterWrapper.filterPromise, null);\n allPromises.push(filterWrapper.filterPromise);\n });\n }\n Promise.all(allPromises).then(function (whatever) {\n _this.onFilterChanged();\n });\n };\n FilterManager.prototype.setModelOnFilterWrapper = function (filterPromise, newModel) {\n filterPromise.then(function (filter) {\n if (typeof filter.setModel !== 'function') {\n console.warn('Warning ag-grid - filter missing setModel method, which is needed for setFilterModel');\n return;\n }\n filter.setModel(newModel);\n });\n };\n FilterManager.prototype.getFilterModel = function () {\n var result = {};\n _.iterateObject(this.allFilters, function (key, filterWrapper) {\n // because user can provide filters, we provide useful error checking and messages\n var filterPromise = filterWrapper.filterPromise;\n var filter = filterPromise.resolveNow(null, function (filter) { return filter; });\n if (filter == null) {\n return null;\n }\n if (typeof filter.getModel !== 'function') {\n console.warn('Warning ag-grid - filter API missing getModel method, which is needed for getFilterModel');\n return;\n }\n var model = filter.getModel();\n if (_.exists(model)) {\n result[key] = model;\n }\n });\n return result;\n };\n // returns true if any advanced filter (ie not quick filter) active\n FilterManager.prototype.isAdvancedFilterPresent = function () {\n return this.advancedFilterPresent;\n };\n // called by:\n // 1) onFilterChanged()\n // 2) onNewRowsLoaded()\n FilterManager.prototype.setAdvancedFilterPresent = function () {\n var atLeastOneActive = false;\n _.iterateObject(this.allFilters, function (key, filterWrapper) {\n if (filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); })) {\n atLeastOneActive = true;\n }\n });\n this.advancedFilterPresent = atLeastOneActive;\n };\n FilterManager.prototype.updateFilterFlagInColumns = function (source, additionalEventAttributes) {\n _.iterateObject(this.allFilters, function (key, filterWrapper) {\n var filterActive = filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });\n filterWrapper.column.setFilterActive(filterActive, source, additionalEventAttributes);\n });\n };\n // returns true if quickFilter or advancedFilter\n FilterManager.prototype.isAnyFilterPresent = function () {\n return this.isQuickFilterPresent() || this.advancedFilterPresent || this.externalFilterPresent;\n };\n FilterManager.prototype.doesFilterPass = function (node, filterToSkip) {\n var data = node.data;\n var colKeys = Object.keys(this.allFilters);\n for (var i = 0, l = colKeys.length; i < l; i++) { // critical code, don't use functional programming\n var colId = colKeys[i];\n var filterWrapper = this.allFilters[colId];\n // if no filter, always pass\n if (filterWrapper === undefined) {\n continue;\n }\n var filter = filterWrapper.filterPromise.resolveNow(undefined, function (filter) { return filter; });\n // if filter not yet there, continue\n if (filter === undefined) {\n continue;\n }\n if (filter === filterToSkip) {\n continue;\n }\n // don't bother with filters that are not active\n if (!filter.isFilterActive()) {\n continue;\n }\n if (!filter.doesFilterPass) { // because users can do custom filters, give nice error message\n console.error('Filter is missing method doesFilterPass');\n }\n var params = {\n node: node,\n data: data\n };\n if (!filter.doesFilterPass(params)) {\n return false;\n }\n }\n // all filters passed\n return true;\n };\n FilterManager.prototype.parseQuickFilter = function (newFilter) {\n if (_.missing(newFilter) || newFilter === \"\") {\n return null;\n }\n if (!this.gridOptionsWrapper.isRowModelDefault()) {\n console.warn('ag-grid: quick filtering only works with the Client-side Row Model');\n return null;\n }\n return newFilter.toUpperCase();\n };\n // returns true if it has changed (not just same value again)\n FilterManager.prototype.setQuickFilter = function (newFilter) {\n var parsedFilter = this.parseQuickFilter(newFilter);\n if (this.quickFilter !== parsedFilter) {\n this.quickFilter = parsedFilter;\n this.setQuickFilterParts();\n this.onFilterChanged();\n }\n };\n FilterManager.prototype.checkExternalFilter = function () {\n this.externalFilterPresent = this.gridOptionsWrapper.isExternalFilterPresent();\n };\n FilterManager.prototype.onFilterChanged = function (additionalEventAttributes) {\n this.setAdvancedFilterPresent();\n this.updateFilterFlagInColumns(\"filterChanged\", additionalEventAttributes);\n this.checkExternalFilter();\n _.iterateObject(this.allFilters, function (key, filterWrapper) {\n filterWrapper.filterPromise.then(function (filter) {\n if (filter.onAnyFilterChanged) {\n filter.onAnyFilterChanged();\n }\n });\n });\n var filterChangedEvent = {\n type: Events.EVENT_FILTER_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n if (additionalEventAttributes) {\n _.mergeDeep(filterChangedEvent, additionalEventAttributes);\n }\n // because internal events are not async in ag-grid, when the dispatchEvent\n // method comes back, we know all listeners have finished executing.\n this.processingFilterChange = true;\n this.eventService.dispatchEvent(filterChangedEvent);\n this.processingFilterChange = false;\n };\n FilterManager.prototype.isSuppressFlashingCellsBecauseFiltering = function () {\n if (this.allowShowChangeAfterFilter) {\n // if user has elected to always flash cell changes, then return false always\n return false;\n }\n else {\n // otherwise we suppress flashing changes when filtering\n return this.processingFilterChange;\n }\n };\n FilterManager.prototype.isQuickFilterPresent = function () {\n return this.quickFilter !== null;\n };\n FilterManager.prototype.doesRowPassOtherFilters = function (filterToSkip, node) {\n return this.doesRowPassFilter(node, filterToSkip);\n };\n FilterManager.prototype.doesRowPassQuickFilterNoCache = function (node, filterPart) {\n var _this = this;\n var columns = this.columnController.getAllColumnsForQuickFilter();\n var filterPasses = false;\n columns.forEach(function (column) {\n if (filterPasses) {\n return;\n }\n var part = _this.getQuickFilterTextForColumn(column, node);\n if (_.exists(part)) {\n if (part.indexOf(filterPart) >= 0) {\n filterPasses = true;\n }\n }\n });\n return filterPasses;\n };\n FilterManager.prototype.doesRowPassQuickFilterCache = function (node, filterPart) {\n if (!node.quickFilterAggregateText) {\n this.aggregateRowForQuickFilter(node);\n }\n var filterPasses = node.quickFilterAggregateText.indexOf(filterPart) >= 0;\n return filterPasses;\n };\n FilterManager.prototype.doesRowPassQuickFilter = function (node) {\n var _this = this;\n var filterPasses = true;\n var usingCache = this.gridOptionsWrapper.isCacheQuickFilter();\n this.quickFilterParts.forEach(function (filterPart) {\n var partPasses = usingCache ?\n _this.doesRowPassQuickFilterCache(node, filterPart) : _this.doesRowPassQuickFilterNoCache(node, filterPart);\n // each part must pass, if any fails, then the whole filter fails\n if (!partPasses) {\n filterPasses = false;\n }\n });\n return filterPasses;\n };\n FilterManager.prototype.doesRowPassFilter = function (node, filterToSkip) {\n // the row must pass ALL of the filters, so if any of them fail,\n // we return true. that means if a row passes the quick filter,\n // but fails the column filter, it fails overall\n // first up, check quick filter\n if (this.isQuickFilterPresent()) {\n if (!this.doesRowPassQuickFilter(node)) {\n return false;\n }\n }\n // secondly, give the client a chance to reject this row\n if (this.externalFilterPresent) {\n if (!this.gridOptionsWrapper.doesExternalFilterPass(node)) {\n return false;\n }\n }\n // lastly, check our internal advanced filter\n if (this.advancedFilterPresent) {\n if (!this.doesFilterPass(node, filterToSkip)) {\n return false;\n }\n }\n // got this far, all filters pass\n return true;\n };\n FilterManager.prototype.getQuickFilterTextForColumn = function (column, rowNode) {\n var value = this.valueService.getValue(column, rowNode, true);\n var valueAfterCallback;\n var colDef = column.getColDef();\n if (column.getColDef().getQuickFilterText) {\n var params = {\n value: value,\n node: rowNode,\n data: rowNode.data,\n column: column,\n colDef: colDef,\n context: this.gridOptionsWrapper.getContext()\n };\n valueAfterCallback = column.getColDef().getQuickFilterText(params);\n }\n else {\n valueAfterCallback = value;\n }\n if (_.exists(valueAfterCallback)) {\n return valueAfterCallback.toString().toUpperCase();\n }\n else {\n return null;\n }\n };\n FilterManager.prototype.aggregateRowForQuickFilter = function (node) {\n var _this = this;\n var stringParts = [];\n var columns = this.columnController.getAllColumnsForQuickFilter();\n columns.forEach(function (column) {\n var part = _this.getQuickFilterTextForColumn(column, node);\n if (_.exists(part)) {\n stringParts.push(part);\n }\n });\n node.quickFilterAggregateText = stringParts.join(FilterManager_1.QUICK_FILTER_SEPARATOR);\n };\n FilterManager.prototype.onNewRowsLoaded = function (source) {\n _.iterateObject(this.allFilters, function (key, filterWrapper) {\n filterWrapper.filterPromise.then(function (filter) {\n if (filter.onNewRowsLoaded) {\n filter.onNewRowsLoaded();\n }\n });\n });\n this.updateFilterFlagInColumns(source);\n this.setAdvancedFilterPresent();\n };\n FilterManager.prototype.createValueGetter = function (column) {\n var _this = this;\n return function (node) {\n return _this.valueService.getValue(column, node, true);\n };\n };\n FilterManager.prototype.getFilterComponent = function (column, source) {\n var filterWrapper = this.getOrCreateFilterWrapper(column, source);\n return filterWrapper.filterPromise;\n };\n FilterManager.prototype.isFilterActive = function (column) {\n var filterWrapper = this.cachedFilter(column);\n if (filterWrapper) {\n return filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });\n }\n else {\n return false;\n }\n };\n FilterManager.prototype.getOrCreateFilterWrapper = function (column, source) {\n var filterWrapper = this.cachedFilter(column);\n if (!filterWrapper) {\n filterWrapper = this.createFilterWrapper(column, source);\n this.allFilters[column.getColId()] = filterWrapper;\n }\n else {\n if (source !== 'NO_UI') {\n this.putIntoGui(filterWrapper, source);\n }\n }\n return filterWrapper;\n };\n FilterManager.prototype.cachedFilter = function (column) {\n return this.allFilters[column.getColId()];\n };\n FilterManager.prototype.createFilterInstance = function (column, $scope) {\n var _this = this;\n var defaultFilter = 'agTextColumnFilter';\n if (ModuleRegistry.isRegistered(ModuleNames.SetFilterModule)) {\n defaultFilter = 'agSetColumnFilter';\n }\n var sanitisedColDef = _.cloneObject(column.getColDef());\n var filterInstance;\n var params = this.createFilterParams(column, sanitisedColDef, $scope);\n params.filterChangedCallback = this.onFilterChanged.bind(this);\n params.filterModifiedCallback = function () {\n var event = {\n type: Events.EVENT_FILTER_MODIFIED,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n column: column,\n filterInstance: filterInstance\n };\n _this.eventService.dispatchEvent(event);\n };\n // we modify params in a callback as we need the filter instance, and this isn't available\n // when creating the params above\n var modifyParamsCallback = function (params, filter) { return _.assign(params, {\n doesRowPassOtherFilter: _this.doesRowPassOtherFilters.bind(_this, filter),\n }); };\n var res = this.userComponentFactory.newFilterComponent(sanitisedColDef, params, defaultFilter, modifyParamsCallback);\n if (res) {\n res.then(function (r) { return filterInstance = r; });\n }\n return res;\n };\n FilterManager.prototype.createFilterParams = function (column, colDef, $scope) {\n if ($scope === void 0) { $scope = null; }\n var params = {\n api: this.gridOptionsWrapper.getApi(),\n column: column,\n colDef: colDef,\n rowModel: this.rowModel,\n filterChangedCallback: null,\n filterModifiedCallback: null,\n valueGetter: this.createValueGetter(column),\n context: this.gridOptionsWrapper.getContext(),\n doesRowPassOtherFilter: null\n };\n // hack in scope if using AngularJS\n if ($scope) {\n params.$scope = $scope;\n }\n return params;\n };\n FilterManager.prototype.createFilterWrapper = function (column, source) {\n var filterWrapper = {\n column: column,\n filterPromise: null,\n scope: null,\n compiledElement: null,\n guiPromise: Promise.external()\n };\n filterWrapper.scope = this.gridOptionsWrapper.isAngularCompileFilters() ? this.$scope.$new() : null;\n filterWrapper.filterPromise = this.createFilterInstance(column, filterWrapper.scope);\n if (filterWrapper.filterPromise) {\n this.putIntoGui(filterWrapper, source);\n }\n return filterWrapper;\n };\n FilterManager.prototype.putIntoGui = function (filterWrapper, source) {\n var _this = this;\n var eFilterGui = document.createElement('div');\n eFilterGui.className = 'ag-filter';\n filterWrapper.filterPromise.then(function (filter) {\n var guiFromFilter = filter.getGui();\n if (_.missing(guiFromFilter)) {\n console.warn(\"getGui method from filter returned \" + guiFromFilter + \", it should be a DOM element or an HTML template string.\");\n }\n // for backwards compatibility with Angular 1 - we\n // used to allow providing back HTML from getGui().\n // once we move away from supporting Angular 1\n // directly, we can change this.\n if (typeof guiFromFilter === 'string') {\n guiFromFilter = _.loadTemplate(guiFromFilter);\n }\n eFilterGui.appendChild(guiFromFilter);\n if (filterWrapper.scope) {\n var compiledElement = _this.$compile(eFilterGui)(filterWrapper.scope);\n filterWrapper.compiledElement = compiledElement;\n window.setTimeout(function () { return filterWrapper.scope.$apply(); }, 0);\n }\n filterWrapper.guiPromise.resolve(eFilterGui);\n _this.eventService.dispatchEvent({\n type: Events.EVENT_FILTER_OPENED,\n column: filterWrapper.column,\n source: source,\n eGui: eFilterGui,\n api: _this.gridApi,\n columnApi: _this.columnApi\n });\n });\n };\n FilterManager.prototype.onNewColumnsLoaded = function () {\n var _this = this;\n var atLeastOneFilterGone = false;\n _.iterateObject(this.allFilters, function (key, filterWrapper) {\n var oldColumn = !_this.columnController.getPrimaryColumn(filterWrapper.column);\n if (oldColumn) {\n atLeastOneFilterGone = true;\n _this.disposeFilterWrapper(filterWrapper, \"filterDestroyed\");\n }\n });\n if (atLeastOneFilterGone) {\n this.onFilterChanged();\n }\n };\n // destroys the filter, so it not longer takes part\n FilterManager.prototype.destroyFilter = function (column, source) {\n if (source === void 0) { source = \"api\"; }\n var filterWrapper = this.allFilters[column.getColId()];\n if (filterWrapper) {\n this.disposeFilterWrapper(filterWrapper, source);\n this.onFilterChanged();\n }\n };\n FilterManager.prototype.disposeFilterWrapper = function (filterWrapper, source) {\n var _this = this;\n filterWrapper.filterPromise.then(function (filter) {\n filter.setModel(null);\n if (filter.destroy) {\n filter.destroy();\n }\n filterWrapper.column.setFilterActive(false, source);\n if (filterWrapper.scope) {\n if (filterWrapper.compiledElement) {\n filterWrapper.compiledElement.remove();\n }\n filterWrapper.scope.$destroy();\n }\n delete _this.allFilters[filterWrapper.column.getColId()];\n });\n };\n FilterManager.prototype.destroy = function () {\n var _this = this;\n _.iterateObject(this.allFilters, function (key, filterWrapper) {\n _this.disposeFilterWrapper(filterWrapper, \"filterDestroyed\");\n });\n };\n var FilterManager_1;\n FilterManager.QUICK_FILTER_SEPARATOR = '\\n';\n __decorate([\n Autowired('$compile')\n ], FilterManager.prototype, \"$compile\", void 0);\n __decorate([\n Autowired('$scope')\n ], FilterManager.prototype, \"$scope\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], FilterManager.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('popupService')\n ], FilterManager.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('valueService')\n ], FilterManager.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('columnController')\n ], FilterManager.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('rowModel')\n ], FilterManager.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('eventService')\n ], FilterManager.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('context')\n ], FilterManager.prototype, \"context\", void 0);\n __decorate([\n Autowired('columnApi')\n ], FilterManager.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], FilterManager.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], FilterManager.prototype, \"userComponentFactory\", void 0);\n __decorate([\n PostConstruct\n ], FilterManager.prototype, \"init\", null);\n __decorate([\n PreDestroy\n ], FilterManager.prototype, \"destroy\", null);\n FilterManager = FilterManager_1 = __decorate([\n Bean('filterManager')\n ], FilterManager);\n return FilterManager;\n}());\nexport { FilterManager };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { Events } from \"../events\";\nimport { _ } from \"../utils\";\nvar ValueService = /** @class */ (function () {\n function ValueService() {\n this.initialised = false;\n }\n ValueService.prototype.init = function () {\n this.cellExpressions = this.gridOptionsWrapper.isEnableCellExpressions();\n this.initialised = true;\n };\n ValueService.prototype.getValue = function (column, rowNode, forFilter, ignoreAggData) {\n if (forFilter === void 0) { forFilter = false; }\n if (ignoreAggData === void 0) { ignoreAggData = false; }\n // hack - the grid is getting refreshed before this bean gets initialised, race condition.\n // really should have a way so they get initialised in the right order???\n if (!this.initialised) {\n this.init();\n }\n if (!rowNode) {\n return;\n }\n // pull these out to make code below easier to read\n var colDef = column.getColDef();\n var field = colDef.field;\n var colId = column.getId();\n var data = rowNode.data;\n var result;\n // if there is a value getter, this gets precedence over a field\n var groupDataExists = rowNode.groupData && rowNode.groupData[colId] !== undefined;\n var aggDataExists = !ignoreAggData && rowNode.aggData && rowNode.aggData[colId] !== undefined;\n if (forFilter && colDef.filterValueGetter) {\n result = this.executeFilterValueGetter(colDef.filterValueGetter, data, column, rowNode);\n }\n else if (this.gridOptionsWrapper.isTreeData() && aggDataExists) {\n result = rowNode.aggData[colId];\n }\n else if (this.gridOptionsWrapper.isTreeData() && colDef.valueGetter) {\n result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n }\n else if (this.gridOptionsWrapper.isTreeData() && (field && data)) {\n result = _.getValueUsingField(data, field, column.isFieldContainsDots());\n }\n else if (groupDataExists) {\n result = rowNode.groupData[colId];\n }\n else if (aggDataExists) {\n result = rowNode.aggData[colId];\n }\n else if (colDef.valueGetter) {\n result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n }\n else if (field && data) {\n result = _.getValueUsingField(data, field, column.isFieldContainsDots());\n }\n // the result could be an expression itself, if we are allowing cell values to be expressions\n if (this.cellExpressions && (typeof result === 'string') && result.indexOf('=') === 0) {\n var cellValueGetter = result.substring(1);\n result = this.executeValueGetter(cellValueGetter, data, column, rowNode);\n }\n return result;\n };\n ValueService.prototype.setValue = function (rowNode, colKey, newValue, eventSource) {\n var column = this.columnController.getPrimaryColumn(colKey);\n if (!rowNode || !column) {\n return;\n }\n // this will only happen if user is trying to paste into a group row, which doesn't make sense\n // the user should not be trying to paste into group rows\n var data = rowNode.data;\n if (_.missing(data)) {\n rowNode.data = {};\n }\n // for backwards compatibility we are also retrieving the newValueHandler as well as the valueSetter\n var _a = column.getColDef(), field = _a.field, newValueHandler = _a.newValueHandler, valueSetter = _a.valueSetter;\n // need either a field or a newValueHandler for this to work\n if (_.missing(field) && _.missing(newValueHandler) && _.missing(valueSetter)) {\n // we don't tell user about newValueHandler, as that is deprecated\n console.warn(\"ag-Grid: you need either field or valueSetter set on colDef for editing to work\");\n return;\n }\n var params = {\n node: rowNode,\n data: rowNode.data,\n oldValue: this.getValue(column, rowNode),\n newValue: newValue,\n colDef: column.getColDef(),\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n params.newValue = newValue;\n var valueWasDifferent;\n if (newValueHandler && _.exists(newValueHandler)) {\n valueWasDifferent = newValueHandler(params);\n }\n else if (_.exists(valueSetter)) {\n valueWasDifferent = this.expressionService.evaluate(valueSetter, params);\n }\n else {\n valueWasDifferent = this.setValueUsingField(data, field, newValue, column.isFieldContainsDots());\n }\n // in case user forgot to return something (possible if they are not using TypeScript\n // and just forgot, or using an old newValueHandler we didn't always expect a return\n // value here), we default the return value to true, so we always refresh.\n if (valueWasDifferent === undefined) {\n valueWasDifferent = true;\n }\n // if no change to the value, then no need to do the updating, or notifying via events.\n // otherwise the user could be tabbing around the grid, and cellValueChange would get called\n // all the time.\n if (!valueWasDifferent) {\n return;\n }\n // reset quick filter on this row\n rowNode.resetQuickFilterAggregateText();\n this.valueCache.onDataChanged();\n params.newValue = this.getValue(column, rowNode);\n var onCellValueChanged = column.getColDef().onCellValueChanged;\n if (typeof onCellValueChanged === 'function') {\n // to make callback async, do in a timeout\n setTimeout(function () { return onCellValueChanged(params); }, 0);\n }\n var event = {\n type: Events.EVENT_CELL_VALUE_CHANGED,\n event: null,\n rowIndex: rowNode.rowIndex,\n rowPinned: rowNode.rowPinned,\n column: params.column,\n api: params.api,\n colDef: params.colDef,\n columnApi: params.columnApi,\n context: params.context,\n data: rowNode.data,\n node: rowNode,\n oldValue: params.oldValue,\n newValue: params.newValue,\n value: params.newValue,\n source: eventSource\n };\n this.eventService.dispatchEvent(event);\n };\n ValueService.prototype.setValueUsingField = function (data, field, newValue, isFieldContainsDots) {\n if (!field) {\n return false;\n }\n // if no '.', then it's not a deep value\n var valuesAreSame = false;\n if (!isFieldContainsDots) {\n data[field] = newValue;\n }\n else {\n // otherwise it is a deep value, so need to dig for it\n var fieldPieces = field.split('.');\n var currentObject = data;\n while (fieldPieces.length > 0 && currentObject) {\n var fieldPiece = fieldPieces.shift();\n if (fieldPieces.length === 0) {\n currentObject[fieldPiece] = newValue;\n }\n else {\n currentObject = currentObject[fieldPiece];\n }\n }\n }\n return !valuesAreSame;\n };\n ValueService.prototype.executeFilterValueGetter = function (valueGetter, data, column, rowNode) {\n var params = {\n data: data,\n node: rowNode,\n column: column,\n colDef: column.getColDef(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n getValue: this.getValueCallback.bind(this, rowNode)\n };\n return this.expressionService.evaluate(valueGetter, params);\n };\n ValueService.prototype.executeValueGetter = function (valueGetter, data, column, rowNode) {\n var colId = column.getId();\n // if inside the same turn, just return back the value we got last time\n var valueFromCache = this.valueCache.getValue(rowNode, colId);\n if (valueFromCache !== undefined) {\n return valueFromCache;\n }\n var params = {\n data: data,\n node: rowNode,\n column: column,\n colDef: column.getColDef(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n getValue: this.getValueCallback.bind(this, rowNode)\n };\n var result = this.expressionService.evaluate(valueGetter, params);\n // if a turn is active, store the value in case the grid asks for it again\n this.valueCache.setValue(rowNode, colId, result);\n return result;\n };\n ValueService.prototype.getValueCallback = function (node, field) {\n var otherColumn = this.columnController.getPrimaryColumn(field);\n if (otherColumn) {\n return this.getValue(otherColumn, node);\n }\n return null;\n };\n // used by row grouping and pivot, to get key for a row. col can be a pivot col or a row grouping col\n ValueService.prototype.getKeyForNode = function (col, rowNode) {\n var value = this.getValue(col, rowNode);\n var keyCreator = col.getColDef().keyCreator;\n var result = keyCreator ? keyCreator({ value: value }) : value;\n // if already a string, or missing, just return it\n if (typeof result === 'string' || result == null) {\n return result;\n }\n result = String(result);\n if (result === '[object Object]') {\n _.doOnce(function () {\n console.warn('ag-Grid: a column you are grouping or pivoting by has objects as values. If you want to group by complex objects then either a) use a colDef.keyCreator (se ag-Grid docs) or b) to toString() on the object to return a key');\n }, 'getKeyForNode - warn about [object,object]');\n }\n return result;\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ValueService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('expressionService')\n ], ValueService.prototype, \"expressionService\", void 0);\n __decorate([\n Autowired('columnController')\n ], ValueService.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], ValueService.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('valueCache')\n ], ValueService.prototype, \"valueCache\", void 0);\n __decorate([\n PostConstruct\n ], ValueService.prototype, \"init\", null);\n ValueService = __decorate([\n Bean('valueService')\n ], ValueService);\n return ValueService;\n}());\nexport { ValueService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { GridOptionsWrapper } from \"./gridOptionsWrapper\";\nimport { Constants } from \"./constants\";\nimport { Autowired, Bean, Optional, PostConstruct } from \"./context/context\";\nimport { ModuleNames } from \"./modules/moduleNames\";\nimport { _ } from \"./utils\";\nimport { ModuleRegistry } from \"./modules/moduleRegistry\";\nvar GridApi = /** @class */ (function () {\n function GridApi() {\n this.detailGridInfoMap = {};\n }\n GridApi.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n GridApi.prototype.registerGridCore = function (gridCore) {\n this.gridCore = gridCore;\n };\n GridApi.prototype.registerHeaderRootComp = function (headerRootComp) {\n this.headerRootComp = headerRootComp;\n };\n GridApi.prototype.init = function () {\n switch (this.rowModel.getType()) {\n case Constants.ROW_MODEL_TYPE_CLIENT_SIDE:\n this.clientSideRowModel = this.rowModel;\n break;\n case Constants.ROW_MODEL_TYPE_INFINITE:\n this.infiniteRowModel = this.rowModel;\n break;\n case Constants.ROW_MODEL_TYPE_SERVER_SIDE:\n this.serverSideRowModel = this.rowModel;\n break;\n }\n };\n /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */\n GridApi.prototype.__getAlignedGridService = function () {\n return this.alignedGridsService;\n };\n GridApi.prototype.addDetailGridInfo = function (id, gridInfo) {\n this.detailGridInfoMap[id] = gridInfo;\n };\n GridApi.prototype.removeDetailGridInfo = function (id) {\n this.detailGridInfoMap[id] = undefined;\n };\n GridApi.prototype.getDetailGridInfo = function (id) {\n return this.detailGridInfoMap[id];\n };\n GridApi.prototype.forEachDetailGridInfo = function (callback) {\n var index = 0;\n _.iterateObject(this.detailGridInfoMap, function (id, gridInfo) {\n // check for undefined, as old references will still be lying around\n if (_.exists(gridInfo)) {\n callback(gridInfo, index);\n index++;\n }\n });\n };\n GridApi.prototype.getDataAsCsv = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.CsvExportModule, 'api.getDataAsCsv')) {\n return this.csvCreator.getDataAsCsv(params);\n }\n };\n GridApi.prototype.exportDataAsCsv = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.CsvExportModule, 'api.exportDataAsCSv')) {\n this.csvCreator.exportDataAsCsv(params);\n }\n };\n GridApi.prototype.getDataAsExcel = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.getDataAsExcel')) {\n return this.excelCreator.getDataAsExcelXml(params);\n }\n };\n GridApi.prototype.exportDataAsExcel = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.exportDataAsExcel')) {\n this.excelCreator.exportDataAsExcel(params);\n }\n };\n /** @deprecated */\n GridApi.prototype.setEnterpriseDatasource = function (datasource) {\n console.warn(\"ag-grid: since version 18.x, api.setEnterpriseDatasource() should be replaced with api.setServerSideDatasource()\");\n this.setServerSideDatasource(datasource);\n };\n GridApi.prototype.setServerSideDatasource = function (datasource) {\n if (this.gridOptionsWrapper.isRowModelServerSide()) {\n // should really have an IEnterpriseRowModel interface, so we are not casting to any\n this.rowModel.setDatasource(datasource);\n }\n else {\n console.warn(\"ag-Grid: you can only use an enterprise datasource when gridOptions.rowModelType is '\" + Constants.ROW_MODEL_TYPE_SERVER_SIDE + \"'\");\n }\n };\n GridApi.prototype.setDatasource = function (datasource) {\n if (this.gridOptionsWrapper.isRowModelInfinite()) {\n this.rowModel.setDatasource(datasource);\n }\n else {\n console.warn(\"ag-Grid: you can only use a datasource when gridOptions.rowModelType is '\" + Constants.ROW_MODEL_TYPE_INFINITE + \"'\");\n }\n };\n GridApi.prototype.setViewportDatasource = function (viewportDatasource) {\n if (this.gridOptionsWrapper.isRowModelViewport()) {\n // this is bad coding, because it's using an interface that's exposed in the enterprise.\n // really we should create an interface in the core for viewportDatasource and let\n // the enterprise implement it, rather than casting to 'any' here\n this.rowModel.setViewportDatasource(viewportDatasource);\n }\n else {\n console.warn(\"ag-Grid: you can only use a viewport datasource when gridOptions.rowModelType is '\" + Constants.ROW_MODEL_TYPE_VIEWPORT + \"'\");\n }\n };\n GridApi.prototype.setRowData = function (rowData) {\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n if (this.gridOptionsWrapper.isDeltaRowDataMode()) {\n var _a = this.immutableService.createTransactionForRowData(rowData), transaction = _a[0], orderIdMap = _a[1];\n this.clientSideRowModel.updateRowData(transaction, orderIdMap);\n // need to force updating of full width rows - note this wouldn't be necessary the full width cell comp listened\n // to the data change event on the row node and refreshed itself.\n this.rowRenderer.refreshFullWidthRows();\n }\n else {\n this.selectionController.reset();\n this.clientSideRowModel.setRowData(rowData);\n }\n }\n else {\n console.warn('cannot call setRowData unless using normal row model');\n }\n };\n /** @deprecated */\n GridApi.prototype.setFloatingTopRowData = function (rows) {\n console.warn('ag-Grid: since v12, api.setFloatingTopRowData() is now api.setPinnedTopRowData()');\n this.setPinnedTopRowData(rows);\n };\n /** @deprecated */\n GridApi.prototype.setFloatingBottomRowData = function (rows) {\n console.warn('ag-Grid: since v12, api.setFloatingBottomRowData() is now api.setPinnedBottomRowData()');\n this.setPinnedBottomRowData(rows);\n };\n /** @deprecated */\n GridApi.prototype.getFloatingTopRowCount = function () {\n console.warn('ag-Grid: since v12, api.getFloatingTopRowCount() is now api.getPinnedTopRowCount()');\n return this.getPinnedTopRowCount();\n };\n /** @deprecated */\n GridApi.prototype.getFloatingBottomRowCount = function () {\n console.warn('ag-Grid: since v12, api.getFloatingBottomRowCount() is now api.getPinnedBottomRowCount()');\n return this.getPinnedBottomRowCount();\n };\n /** @deprecated */\n GridApi.prototype.getFloatingTopRow = function (index) {\n console.warn('ag-Grid: since v12, api.getFloatingTopRow() is now api.getPinnedTopRow()');\n return this.getPinnedTopRow(index);\n };\n /** @deprecated */\n GridApi.prototype.getFloatingBottomRow = function (index) {\n console.warn('ag-Grid: since v12, api.getFloatingBottomRow() is now api.getPinnedBottomRow()');\n return this.getPinnedBottomRow(index);\n };\n GridApi.prototype.setPinnedTopRowData = function (rows) {\n this.pinnedRowModel.setPinnedTopRowData(rows);\n };\n GridApi.prototype.setPinnedBottomRowData = function (rows) {\n this.pinnedRowModel.setPinnedBottomRowData(rows);\n };\n GridApi.prototype.getPinnedTopRowCount = function () {\n return this.pinnedRowModel.getPinnedTopRowCount();\n };\n GridApi.prototype.getPinnedBottomRowCount = function () {\n return this.pinnedRowModel.getPinnedBottomRowCount();\n };\n GridApi.prototype.getPinnedTopRow = function (index) {\n return this.pinnedRowModel.getPinnedTopRow(index);\n };\n GridApi.prototype.getPinnedBottomRow = function (index) {\n return this.pinnedRowModel.getPinnedBottomRow(index);\n };\n GridApi.prototype.setColumnDefs = function (colDefs, source) {\n if (source === void 0) { source = \"api\"; }\n this.columnController.setColumnDefs(colDefs, source);\n };\n GridApi.prototype.expireValueCache = function () {\n this.valueCache.expire();\n };\n GridApi.prototype.getVerticalPixelRange = function () {\n return this.gridPanel.getVScrollPosition();\n };\n GridApi.prototype.getHorizontalPixelRange = function () {\n return this.gridPanel.getHScrollPosition();\n };\n GridApi.prototype.setAlwaysShowVerticalScroll = function (show) {\n this.gridOptionsWrapper.setProperty('alwaysShowVerticalScroll', show);\n };\n GridApi.prototype.refreshToolPanel = function () {\n this.gridCore.refreshSideBar();\n };\n GridApi.prototype.refreshCells = function (params) {\n if (params === void 0) { params = {}; }\n if (Array.isArray(params)) {\n // the old version of refreshCells() took an array of rowNodes for the first argument\n console.warn('since ag-Grid v11.1, refreshCells() now takes parameters, please see the documentation.');\n return;\n }\n this.rowRenderer.refreshCells(params);\n };\n GridApi.prototype.flashCells = function (params) {\n if (params === void 0) { params = {}; }\n this.rowRenderer.flashCells(params);\n };\n GridApi.prototype.redrawRows = function (params) {\n if (params === void 0) { params = {}; }\n if (params && params.rowNodes) {\n this.rowRenderer.redrawRows(params.rowNodes);\n }\n else {\n this.rowRenderer.redrawAfterModelUpdate();\n }\n };\n GridApi.prototype.timeFullRedraw = function (count) {\n if (count === void 0) { count = 1; }\n var iterationCount = 0;\n var totalProcessing = 0;\n var totalReflow = 0;\n var that = this;\n doOneIteration();\n function doOneIteration() {\n var start = (new Date()).getTime();\n that.rowRenderer.redrawAfterModelUpdate();\n var endProcessing = (new Date()).getTime();\n window.setTimeout(function () {\n var endReflow = (new Date()).getTime();\n var durationProcessing = endProcessing - start;\n var durationReflow = endReflow - endProcessing;\n // tslint:disable-next-line\n console.log('duration: processing = ' + durationProcessing + 'ms, reflow = ' + durationReflow + 'ms');\n iterationCount++;\n totalProcessing += durationProcessing;\n totalReflow += durationReflow;\n if (iterationCount < count) {\n // wait for 1s between tests\n window.setTimeout(doOneIteration, 1000);\n }\n else {\n finish();\n }\n }, 0);\n }\n function finish() {\n // tslint:disable-next-line\n console.log('tests complete. iteration count = ' + iterationCount);\n // tslint:disable-next-line\n console.log('average processing = ' + (totalProcessing / iterationCount) + 'ms');\n // tslint:disable-next-line\n console.log('average reflow = ' + (totalReflow / iterationCount) + 'ms');\n }\n };\n /** @deprecated */\n GridApi.prototype.refreshView = function () {\n console.warn('ag-Grid: since v11.1, refreshView() is deprecated, please call refreshCells() or redrawRows() instead');\n this.redrawRows();\n };\n //** @deprecated */\n GridApi.prototype.refreshRows = function (rowNodes) {\n console.warn('since ag-Grid v11.1, refreshRows() is deprecated, please use refreshCells({rowNodes: rows}) or redrawRows({rowNodes: rows}) instead');\n this.refreshCells({ rowNodes: rowNodes });\n };\n /** @deprecated */\n GridApi.prototype.rowDataChanged = function (rows) {\n console.warn('ag-Grid: rowDataChanged is deprecated, either call refreshView() to refresh everything, or call rowNode.setRowData(newData) to set value on a particular node');\n this.redrawRows();\n };\n /** @deprecated */\n GridApi.prototype.softRefreshView = function () {\n console.error('ag-Grid: since v16, softRefreshView() is no longer supported. Please check the documentation on how to refresh.');\n };\n /** @deprecated */\n GridApi.prototype.refreshGroupRows = function () {\n console.warn('ag-Grid: since v11.1, refreshGroupRows() is no longer supported, call refreshCells() instead. ' +\n 'Because refreshCells() now does dirty checking, it will only refresh cells that have changed, so it should ' +\n 'not be necessary to only refresh the group rows.');\n this.refreshCells();\n };\n GridApi.prototype.setFunctionsReadOnly = function (readOnly) {\n this.gridOptionsWrapper.setProperty('functionsReadOnly', readOnly);\n };\n GridApi.prototype.refreshHeader = function () {\n this.headerRootComp.refreshHeader();\n this.gridPanel.setHeaderAndFloatingHeights();\n };\n GridApi.prototype.isAnyFilterPresent = function () {\n return this.filterManager.isAnyFilterPresent();\n };\n GridApi.prototype.isAdvancedFilterPresent = function () {\n console.warn('ag-Grid: isAdvancedFilterPresent() is deprecated, please use isColumnFilterPresent()');\n return this.isColumnFilterPresent();\n };\n GridApi.prototype.isColumnFilterPresent = function () {\n return this.filterManager.isAdvancedFilterPresent();\n };\n GridApi.prototype.isQuickFilterPresent = function () {\n return this.filterManager.isQuickFilterPresent();\n };\n GridApi.prototype.getModel = function () {\n return this.rowModel;\n };\n GridApi.prototype.setRowNodeExpanded = function (rowNode, expanded) {\n if (rowNode) {\n rowNode.setExpanded(expanded);\n }\n };\n GridApi.prototype.onGroupExpandedOrCollapsed = function (deprecated_refreshFromIndex) {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('ag-Grid: cannot call onGroupExpandedOrCollapsed unless using normal row model');\n }\n if (_.exists(deprecated_refreshFromIndex)) {\n console.warn('ag-Grid: api.onGroupExpandedOrCollapsed - refreshFromIndex parameter is no longer used, the grid will refresh all rows');\n }\n // we don't really want the user calling this if only one rowNode was expanded, instead they should be\n // calling rowNode.setExpanded(boolean) - this way we do a 'keepRenderedRows=false' so that the whole\n // grid gets refreshed again - otherwise the row with the rowNodes that were changed won't get updated,\n // and thus the expand icon in the group cell won't get 'opened' or 'closed'.\n this.clientSideRowModel.refreshModel({ step: Constants.STEP_MAP });\n };\n GridApi.prototype.refreshInMemoryRowModel = function (step) {\n console.warn(\"ag-grid: since version 18.x, api.refreshInMemoryRowModel() should be replaced with api.refreshClientSideRowModel()\");\n this.refreshClientSideRowModel(step);\n };\n GridApi.prototype.refreshClientSideRowModel = function (step) {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('cannot call refreshClientSideRowModel unless using normal row model');\n }\n var paramsStep = Constants.STEP_EVERYTHING;\n var stepsMapped = {\n group: Constants.STEP_EVERYTHING,\n filter: Constants.STEP_FILTER,\n map: Constants.STEP_MAP,\n aggregate: Constants.STEP_AGGREGATE,\n sort: Constants.STEP_SORT,\n pivot: Constants.STEP_PIVOT\n };\n if (_.exists(step)) {\n paramsStep = stepsMapped[step];\n }\n if (_.missing(paramsStep)) {\n console.error(\"ag-Grid: invalid step \" + step + \", available steps are \" + Object.keys(stepsMapped).join(', '));\n return;\n }\n var modelParams = {\n step: paramsStep,\n keepRenderedRows: true,\n animate: true,\n keepEditingRows: true\n };\n this.clientSideRowModel.refreshModel(modelParams);\n };\n GridApi.prototype.isAnimationFrameQueueEmpty = function () {\n return this.animationFrameService.isQueueEmpty();\n };\n GridApi.prototype.getRowNode = function (id) {\n return this.rowModel.getRowNode(id);\n };\n GridApi.prototype.expandAll = function () {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('ag-Grid: cannot call expandAll unless using normal row model');\n return;\n }\n this.clientSideRowModel.expandOrCollapseAll(true);\n };\n GridApi.prototype.collapseAll = function () {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('ag-Grid: cannot call collapseAll unless using normal row model');\n return;\n }\n this.clientSideRowModel.expandOrCollapseAll(false);\n };\n GridApi.prototype.getToolPanelInstance = function (id) {\n return this.gridCore.getToolPanelInstance(id);\n };\n GridApi.prototype.addVirtualRowListener = function (eventName, rowIndex, callback) {\n if (typeof eventName !== 'string') {\n console.warn('ag-Grid: addVirtualRowListener is deprecated, please use addRenderedRowListener.');\n }\n this.addRenderedRowListener(eventName, rowIndex, callback);\n };\n GridApi.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {\n if (eventName === 'virtualRowSelected') {\n console.warn(\"ag-Grid: event virtualRowSelected is deprecated, to register for individual row\\n selection events, add a listener directly to the row node.\");\n }\n this.rowRenderer.addRenderedRowListener(eventName, rowIndex, callback);\n };\n GridApi.prototype.setQuickFilter = function (newFilter) {\n this.filterManager.setQuickFilter(newFilter);\n };\n GridApi.prototype.selectIndex = function (index, tryMulti, suppressEvents) {\n console.warn('ag-Grid: do not use api for selection, call node.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('ag-Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n this.selectionController.selectIndex(index, tryMulti);\n };\n GridApi.prototype.deselectIndex = function (index, suppressEvents) {\n if (suppressEvents === void 0) { suppressEvents = false; }\n console.warn('ag-Grid: do not use api for selection, call node.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('ag-Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n this.selectionController.deselectIndex(index);\n };\n GridApi.prototype.selectNode = function (node, tryMulti, suppressEvents) {\n if (tryMulti === void 0) { tryMulti = false; }\n if (suppressEvents === void 0) { suppressEvents = false; }\n console.warn('ag-Grid: API for selection is deprecated, call node.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('ag-Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n node.setSelectedParams({ newValue: true, clearSelection: !tryMulti });\n };\n GridApi.prototype.deselectNode = function (node, suppressEvents) {\n if (suppressEvents === void 0) { suppressEvents = false; }\n console.warn('ag-Grid: API for selection is deprecated, call node.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('ag-Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n node.setSelectedParams({ newValue: false });\n };\n GridApi.prototype.selectAll = function () {\n this.selectionController.selectAllRowNodes();\n };\n GridApi.prototype.deselectAll = function () {\n this.selectionController.deselectAllRowNodes();\n };\n GridApi.prototype.selectAllFiltered = function () {\n this.selectionController.selectAllRowNodes(true);\n };\n GridApi.prototype.deselectAllFiltered = function () {\n this.selectionController.deselectAllRowNodes(true);\n };\n GridApi.prototype.recomputeAggregates = function () {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('cannot call recomputeAggregates unless using normal row model');\n }\n console.warn(\"recomputeAggregates is deprecated, please call api.refreshClientSideRowModel('aggregate') instead\");\n this.clientSideRowModel.refreshModel({ step: Constants.STEP_AGGREGATE });\n };\n GridApi.prototype.sizeColumnsToFit = function () {\n this.gridPanel.sizeColumnsToFit();\n };\n GridApi.prototype.showLoadingOverlay = function () {\n this.gridPanel.showLoadingOverlay();\n };\n GridApi.prototype.showNoRowsOverlay = function () {\n this.gridPanel.showNoRowsOverlay();\n };\n GridApi.prototype.hideOverlay = function () {\n this.gridPanel.hideOverlay();\n };\n GridApi.prototype.isNodeSelected = function (node) {\n console.warn('ag-Grid: no need to call api.isNodeSelected(), just call node.isSelected() instead');\n return node.isSelected();\n };\n GridApi.prototype.getSelectedNodesById = function () {\n console.error('ag-Grid: since version 3.4, getSelectedNodesById no longer exists, use getSelectedNodes() instead');\n return null;\n };\n GridApi.prototype.getSelectedNodes = function () {\n return this.selectionController.getSelectedNodes();\n };\n GridApi.prototype.getSelectedRows = function () {\n return this.selectionController.getSelectedRows();\n };\n GridApi.prototype.getBestCostNodeSelection = function () {\n return this.selectionController.getBestCostNodeSelection();\n };\n GridApi.prototype.getRenderedNodes = function () {\n return this.rowRenderer.getRenderedNodes();\n };\n GridApi.prototype.ensureColIndexVisible = function (index) {\n console.warn('ag-Grid: ensureColIndexVisible(index) no longer supported, use ensureColumnVisible(colKey) instead.');\n };\n GridApi.prototype.ensureColumnVisible = function (key) {\n this.gridPanel.ensureColumnVisible(key);\n };\n // Valid values for position are bottom, middle and top\n GridApi.prototype.ensureIndexVisible = function (index, position) {\n this.gridPanel.ensureIndexVisible(index, position);\n };\n // Valid values for position are bottom, middle and top\n GridApi.prototype.ensureNodeVisible = function (comparator, position) {\n this.gridCore.ensureNodeVisible(comparator, position);\n };\n GridApi.prototype.forEachLeafNode = function (callback) {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('cannot call forEachNode unless using normal row model');\n }\n this.clientSideRowModel.forEachLeafNode(callback);\n };\n GridApi.prototype.forEachNode = function (callback) {\n this.rowModel.forEachNode(callback);\n };\n GridApi.prototype.forEachNodeAfterFilter = function (callback) {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('cannot call forEachNodeAfterFilter unless using normal row model');\n }\n this.clientSideRowModel.forEachNodeAfterFilter(callback);\n };\n GridApi.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('cannot call forEachNodeAfterFilterAndSort unless using normal row model');\n }\n this.clientSideRowModel.forEachNodeAfterFilterAndSort(callback);\n };\n GridApi.prototype.getFilterApiForColDef = function (colDef) {\n console.warn('ag-grid API method getFilterApiForColDef deprecated, use getFilterApi instead');\n return this.getFilterInstance(colDef);\n };\n GridApi.prototype.getFilterInstance = function (key) {\n var column = this.columnController.getPrimaryColumn(key);\n if (column) {\n return this.filterManager.getFilterComponent(column, 'NO_UI').resolveNow(null, function (filterComp) { return filterComp; });\n }\n };\n GridApi.prototype.getFilterApi = function (key) {\n console.warn('ag-Grid: getFilterApi is deprecated, use getFilterInstance instead');\n return this.getFilterInstance(key);\n };\n GridApi.prototype.destroyFilter = function (key) {\n var column = this.columnController.getPrimaryColumn(key);\n if (column) {\n return this.filterManager.destroyFilter(column, \"filterDestroyed\");\n }\n };\n GridApi.prototype.getStatusPanel = function (key) {\n if (this.statusBarService) {\n return this.statusBarService.getStatusPanel(key);\n }\n };\n GridApi.prototype.getColumnDef = function (key) {\n var column = this.columnController.getPrimaryColumn(key);\n if (column) {\n return column.getColDef();\n }\n else {\n return null;\n }\n };\n GridApi.prototype.onFilterChanged = function () {\n this.filterManager.onFilterChanged();\n };\n GridApi.prototype.onSortChanged = function () {\n this.sortController.onSortChanged();\n };\n GridApi.prototype.setSortModel = function (sortModel, source) {\n if (source === void 0) { source = \"api\"; }\n this.sortController.setSortModel(sortModel, source);\n };\n GridApi.prototype.getSortModel = function () {\n return this.sortController.getSortModel();\n };\n GridApi.prototype.setFilterModel = function (model) {\n this.filterManager.setFilterModel(model);\n };\n GridApi.prototype.getFilterModel = function () {\n return this.filterManager.getFilterModel();\n };\n GridApi.prototype.getFocusedCell = function () {\n return this.focusedCellController.getFocusedCell();\n };\n GridApi.prototype.clearFocusedCell = function () {\n return this.focusedCellController.clearFocusedCell();\n };\n GridApi.prototype.setFocusedCell = function (rowIndex, colKey, floating) {\n this.focusedCellController.setFocusedCell(rowIndex, colKey, floating, true);\n };\n GridApi.prototype.setSuppressRowDrag = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_SUPPRESS_ROW_DRAG, value);\n };\n GridApi.prototype.setHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_HEADER_HEIGHT, headerHeight);\n this.doLayout();\n };\n GridApi.prototype.setGridAutoHeight = function (gridAutoHeight) {\n console.warn('api.setGridAutoHeight(boolean) is deprecated, please use api.setDomLayout() instead');\n this.setDomLayout(gridAutoHeight ? 'autoHeight' : 'normal');\n };\n GridApi.prototype.setDomLayout = function (domLayout) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_DOM_LAYOUT, domLayout);\n };\n GridApi.prototype.setEnableCellTextSelection = function (selectable) {\n this.gridPanel.setCellTextSelection(selectable);\n };\n GridApi.prototype.setGroupHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, headerHeight);\n this.doLayout();\n };\n GridApi.prototype.setFloatingFiltersHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, headerHeight);\n this.doLayout();\n };\n GridApi.prototype.setPivotGroupHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, headerHeight);\n this.doLayout();\n };\n GridApi.prototype.setPivotHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, headerHeight);\n this.doLayout();\n };\n GridApi.prototype.isSideBarVisible = function () {\n return this.gridCore.isSideBarVisible();\n };\n GridApi.prototype.setSideBarVisible = function (show) {\n this.gridCore.setSideBarVisible(show);\n };\n GridApi.prototype.setSideBarPosition = function (position) {\n this.gridCore.setSideBarPosition(position);\n };\n GridApi.prototype.showToolPanel = function (show) {\n console.warn(\"ag-grid: from v19 api.showToolPanel has been deprecated in favour of api.setSideBarVisible\");\n this.setSideBarVisible(show);\n };\n GridApi.prototype.openToolPanel = function (key) {\n this.gridCore.openToolPanel(key);\n };\n GridApi.prototype.closeToolPanel = function () {\n this.gridCore.closeToolPanel();\n };\n GridApi.prototype.getOpenedToolPanel = function () {\n return this.gridCore.getOpenedToolPanel();\n };\n GridApi.prototype.getSideBar = function () {\n return this.gridCore.getSideBar();\n };\n GridApi.prototype.setSideBar = function (def) {\n return this.gridCore.setSideBar(def);\n };\n GridApi.prototype.setSuppressClipboardPaste = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_SUPPRESS_CLIPBOARD_PASTE, value);\n };\n GridApi.prototype.isToolPanelShowing = function () {\n return this.gridCore.isToolPanelShowing();\n };\n GridApi.prototype.doLayout = function () {\n this.gridPanel.checkViewportAndScrolls();\n };\n GridApi.prototype.resetRowHeights = function () {\n if (_.exists(this.clientSideRowModel)) {\n this.clientSideRowModel.resetRowHeights();\n }\n };\n GridApi.prototype.setGroupRemoveSingleChildren = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN, value);\n };\n GridApi.prototype.setGroupRemoveLowestSingleChildren = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN, value);\n };\n GridApi.prototype.onRowHeightChanged = function () {\n if (_.exists(this.clientSideRowModel)) {\n this.clientSideRowModel.onRowHeightChanged();\n }\n };\n GridApi.prototype.getValue = function (colKey, rowNode) {\n var column = this.columnController.getPrimaryColumn(colKey);\n if (_.missing(column)) {\n column = this.columnController.getGridColumn(colKey);\n }\n if (_.missing(column)) {\n return null;\n }\n else {\n return this.valueService.getValue(column, rowNode);\n }\n };\n GridApi.prototype.addEventListener = function (eventType, listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.addEventListener(eventType, listener, async);\n };\n GridApi.prototype.addGlobalListener = function (listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.addGlobalListener(listener, async);\n };\n GridApi.prototype.removeEventListener = function (eventType, listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.removeEventListener(eventType, listener, async);\n };\n GridApi.prototype.removeGlobalListener = function (listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.removeGlobalListener(listener, async);\n };\n GridApi.prototype.dispatchEvent = function (event) {\n this.eventService.dispatchEvent(event);\n };\n GridApi.prototype.destroy = function () {\n // destroy the UI first (as they use the services)\n this.gridCore.destroy();\n // destroy the services\n this.context.destroy();\n };\n GridApi.prototype.resetQuickFilter = function () {\n this.rowModel.forEachNode(function (node) { return node.quickFilterAggregateText = null; });\n };\n GridApi.prototype.getRangeSelections = function () {\n console.warn(\"ag-Grid: in v20.1.x, api.getRangeSelections() is gone, please use getCellRanges() instead.\\n We had to change how cell selections works a small bit to allow charting to integrate. The return type of\\n getCellRanges() is a bit different, please check the ag-Grid documentation.\");\n return null;\n };\n GridApi.prototype.getCellRanges = function () {\n if (this.rangeController) {\n return this.rangeController.getCellRanges();\n }\n else {\n console.warn('ag-Grid: cell range selection is only available in ag-Grid Enterprise');\n return null;\n }\n };\n GridApi.prototype.camelCaseToHumanReadable = function (camelCase) {\n return _.camelCaseToHumanText(camelCase);\n };\n GridApi.prototype.addRangeSelection = function (deprecatedNoLongerUsed) {\n console.warn('ag-Grid: As of version 21.x, range selection changed slightly to allow charting integration. Please call api.addCellRange() instead of api.addRangeSelection()');\n };\n GridApi.prototype.addCellRange = function (params) {\n if (!this.rangeController) {\n console.warn('ag-Grid: cell range selection is only available in ag-Grid Enterprise');\n }\n this.rangeController.addCellRange(params);\n };\n GridApi.prototype.clearRangeSelection = function () {\n if (!this.rangeController) {\n console.warn('ag-Grid: cell range selection is only available in ag-Grid Enterprise');\n }\n this.rangeController.removeAllCellRanges();\n };\n GridApi.prototype.createRangeChart = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.createRangeChart') &&\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.createRangeChart')) {\n return this.chartService.createRangeChart(params);\n }\n };\n GridApi.prototype.createPivotChart = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.createPivotChart') &&\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.createPivotChart')) {\n return this.chartService.createPivotChart(params);\n }\n };\n GridApi.prototype.copySelectedRowsToClipboard = function (includeHeader, columnKeys) {\n if (!this.clipboardService) {\n console.warn('ag-Grid: clipboard is only available in ag-Grid Enterprise');\n }\n this.clipboardService.copySelectedRowsToClipboard(includeHeader, columnKeys);\n };\n GridApi.prototype.copySelectedRangeToClipboard = function (includeHeader) {\n if (!this.clipboardService) {\n console.warn('ag-Grid: clipboard is only available in ag-Grid Enterprise');\n }\n this.clipboardService.copySelectedRangeToClipboard(includeHeader);\n };\n GridApi.prototype.copySelectedRangeDown = function () {\n if (!this.clipboardService) {\n console.warn('ag-Grid: clipboard is only available in ag-Grid Enterprise');\n }\n this.clipboardService.copyRangeDown();\n };\n GridApi.prototype.showColumnMenuAfterButtonClick = function (colKey, buttonElement) {\n // use grid column so works with pivot mode\n var column = this.columnController.getGridColumn(colKey);\n this.menuFactory.showMenuAfterButtonClick(column, buttonElement);\n };\n GridApi.prototype.showColumnMenuAfterMouseClick = function (colKey, mouseEvent) {\n // use grid column so works with pivot mode\n var column = this.columnController.getGridColumn(colKey);\n this.menuFactory.showMenuAfterMouseEvent(column, mouseEvent);\n };\n GridApi.prototype.hidePopupMenu = function () {\n // hide the context menu if in enterprise\n if (this.contextMenuFactory) {\n this.contextMenuFactory.hideActiveMenu();\n }\n // and hide the column menu always\n this.menuFactory.hideActiveMenu();\n };\n GridApi.prototype.setPopupParent = function (ePopupParent) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_POPUP_PARENT, ePopupParent);\n };\n GridApi.prototype.tabToNextCell = function () {\n return this.rowRenderer.tabToNextCell(false);\n };\n GridApi.prototype.tabToPreviousCell = function () {\n return this.rowRenderer.tabToNextCell(true);\n };\n GridApi.prototype.getCellRendererInstances = function (params) {\n if (params === void 0) { params = {}; }\n return this.rowRenderer.getCellRendererInstances(params);\n };\n GridApi.prototype.getCellEditorInstances = function (params) {\n if (params === void 0) { params = {}; }\n return this.rowRenderer.getCellEditorInstances(params);\n };\n GridApi.prototype.getEditingCells = function () {\n return this.rowRenderer.getEditingCells();\n };\n GridApi.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.rowRenderer.stopEditing(cancel);\n };\n GridApi.prototype.startEditingCell = function (params) {\n var column = this.columnController.getGridColumn(params.colKey);\n if (!column) {\n console.warn(\"ag-Grid: no column found for \" + params.colKey);\n return;\n }\n var cellPosition = {\n rowIndex: params.rowIndex,\n rowPinned: params.rowPinned,\n column: column\n };\n var notPinned = _.missing(params.rowPinned);\n if (notPinned) {\n this.gridPanel.ensureIndexVisible(params.rowIndex);\n }\n this.rowRenderer.startEditingCell(cellPosition, params.keyPress, params.charPress);\n };\n GridApi.prototype.addAggFunc = function (key, aggFunc) {\n if (this.aggFuncService) {\n this.aggFuncService.addAggFunc(key, aggFunc);\n }\n };\n GridApi.prototype.addAggFuncs = function (aggFuncs) {\n if (this.aggFuncService) {\n this.aggFuncService.addAggFuncs(aggFuncs);\n }\n };\n GridApi.prototype.clearAggFuncs = function () {\n if (this.aggFuncService) {\n this.aggFuncService.clear();\n }\n };\n GridApi.prototype.updateRowData = function (rowDataTransaction) {\n var res = null;\n if (this.clientSideRowModel) {\n res = this.clientSideRowModel.updateRowData(rowDataTransaction);\n }\n else if (this.infiniteRowModel) {\n this.infiniteRowModel.updateRowData(rowDataTransaction);\n }\n else {\n console.error('ag-Grid: updateRowData() only works with ClientSideRowModel and InfiniteRowModel.');\n }\n // refresh all the full width rows\n this.rowRenderer.refreshFullWidthRows();\n // do change detection for all present cells\n if (!this.gridOptionsWrapper.isSuppressChangeDetection()) {\n this.rowRenderer.refreshCells();\n }\n return res;\n };\n GridApi.prototype.batchUpdateRowData = function (rowDataTransaction, callback) {\n if (!this.clientSideRowModel) {\n console.error('ag-Grid: api.batchUpdateRowData() only works with ClientSideRowModel.');\n return;\n }\n this.clientSideRowModel.batchUpdateRowData(rowDataTransaction, callback);\n };\n GridApi.prototype.insertItemsAtIndex = function (index, items, skipRefresh) {\n if (skipRefresh === void 0) { skipRefresh = false; }\n console.warn('ag-Grid: insertItemsAtIndex() is deprecated, use updateRowData(transaction) instead.');\n this.updateRowData({ add: items, addIndex: index, update: null, remove: null });\n };\n GridApi.prototype.removeItems = function (rowNodes, skipRefresh) {\n if (skipRefresh === void 0) { skipRefresh = false; }\n console.warn('ag-Grid: removeItems() is deprecated, use updateRowData(transaction) instead.');\n var dataToRemove = rowNodes.map(function (rowNode) { return rowNode.data; });\n this.updateRowData({ add: null, addIndex: null, update: null, remove: dataToRemove });\n };\n GridApi.prototype.addItems = function (items, skipRefresh) {\n if (skipRefresh === void 0) { skipRefresh = false; }\n console.warn('ag-Grid: addItems() is deprecated, use updateRowData(transaction) instead.');\n this.updateRowData({ add: items, addIndex: null, update: null, remove: null });\n };\n GridApi.prototype.refreshVirtualPageCache = function () {\n console.warn('ag-Grid: refreshVirtualPageCache() is now called refreshInfiniteCache(), please call refreshInfiniteCache() instead');\n this.refreshInfiniteCache();\n };\n GridApi.prototype.refreshInfinitePageCache = function () {\n console.warn('ag-Grid: refreshInfinitePageCache() is now called refreshInfiniteCache(), please call refreshInfiniteCache() instead');\n this.refreshInfiniteCache();\n };\n GridApi.prototype.refreshInfiniteCache = function () {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.refreshCache();\n }\n else {\n console.warn(\"ag-Grid: api.refreshInfiniteCache is only available when rowModelType='infinite'.\");\n }\n };\n GridApi.prototype.purgeVirtualPageCache = function () {\n console.warn('ag-Grid: purgeVirtualPageCache() is now called purgeInfiniteCache(), please call purgeInfiniteCache() instead');\n this.purgeInfinitePageCache();\n };\n GridApi.prototype.purgeInfinitePageCache = function () {\n console.warn('ag-Grid: purgeInfinitePageCache() is now called purgeInfiniteCache(), please call purgeInfiniteCache() instead');\n this.purgeInfiniteCache();\n };\n GridApi.prototype.purgeInfiniteCache = function () {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.purgeCache();\n }\n else {\n console.warn(\"ag-Grid: api.purgeInfiniteCache is only available when rowModelType='infinite'.\");\n }\n };\n /** @deprecated */\n GridApi.prototype.purgeEnterpriseCache = function (route) {\n console.warn(\"ag-grid: since version 18.x, api.purgeEnterpriseCache() should be replaced with api.purgeServerSideCache()\");\n this.purgeServerSideCache(route);\n };\n GridApi.prototype.purgeServerSideCache = function (route) {\n if (this.serverSideRowModel) {\n this.serverSideRowModel.purgeCache(route);\n }\n else {\n console.warn(\"ag-Grid: api.purgeServerSideCache is only available when rowModelType='enterprise'.\");\n }\n };\n GridApi.prototype.getVirtualRowCount = function () {\n console.warn('ag-Grid: getVirtualRowCount() is now called getInfiniteRowCount(), please call getInfiniteRowCount() instead');\n return this.getInfiniteRowCount();\n };\n GridApi.prototype.getInfiniteRowCount = function () {\n if (this.infiniteRowModel) {\n return this.infiniteRowModel.getVirtualRowCount();\n }\n else {\n console.warn(\"ag-Grid: api.getVirtualRowCount is only available when rowModelType='virtual'.\");\n }\n };\n GridApi.prototype.isMaxRowFound = function () {\n if (this.infiniteRowModel) {\n return this.infiniteRowModel.isMaxRowFound();\n }\n else {\n console.warn(\"ag-Grid: api.isMaxRowFound is only available when rowModelType='virtual'.\");\n }\n };\n GridApi.prototype.setVirtualRowCount = function (rowCount, maxRowFound) {\n console.warn('ag-Grid: setVirtualRowCount() is now called setInfiniteRowCount(), please call setInfiniteRowCount() instead');\n this.setInfiniteRowCount(rowCount, maxRowFound);\n };\n GridApi.prototype.setInfiniteRowCount = function (rowCount, maxRowFound) {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.setVirtualRowCount(rowCount, maxRowFound);\n }\n else {\n console.warn(\"ag-Grid: api.setVirtualRowCount is only available when rowModelType='virtual'.\");\n }\n };\n GridApi.prototype.getVirtualPageState = function () {\n console.warn('ag-Grid: getVirtualPageState() is now called getCacheBlockState(), please call getCacheBlockState() instead');\n return this.getCacheBlockState();\n };\n GridApi.prototype.getInfinitePageState = function () {\n console.warn('ag-Grid: getInfinitePageState() is now called getCacheBlockState(), please call getCacheBlockState() instead');\n return this.getCacheBlockState();\n };\n GridApi.prototype.getCacheBlockState = function () {\n if (this.infiniteRowModel) {\n return this.infiniteRowModel.getBlockState();\n }\n else if (this.serverSideRowModel) {\n return this.serverSideRowModel.getBlockState();\n }\n else {\n console.warn(\"ag-Grid: api.getCacheBlockState() is only available when rowModelType='infinite' or rowModelType='serverSide'.\");\n }\n };\n GridApi.prototype.checkGridSize = function () {\n this.gridPanel.setHeaderAndFloatingHeights();\n };\n GridApi.prototype.getFirstRenderedRow = function () {\n console.warn('in ag-Grid v12, getFirstRenderedRow() was renamed to getFirstDisplayedRow()');\n return this.getFirstDisplayedRow();\n };\n GridApi.prototype.getFirstDisplayedRow = function () {\n return this.rowRenderer.getFirstVirtualRenderedRow();\n };\n GridApi.prototype.getLastRenderedRow = function () {\n console.warn('in ag-Grid v12, getLastRenderedRow() was renamed to getLastDisplayedRow()');\n return this.getLastDisplayedRow();\n };\n GridApi.prototype.getLastDisplayedRow = function () {\n return this.rowRenderer.getLastVirtualRenderedRow();\n };\n GridApi.prototype.getDisplayedRowAtIndex = function (index) {\n return this.rowModel.getRow(index);\n };\n GridApi.prototype.getDisplayedRowCount = function () {\n return this.rowModel.getRowCount();\n };\n GridApi.prototype.paginationIsLastPageFound = function () {\n return this.paginationProxy.isLastPageFound();\n };\n GridApi.prototype.paginationGetPageSize = function () {\n return this.paginationProxy.getPageSize();\n };\n GridApi.prototype.paginationSetPageSize = function (size) {\n this.gridOptionsWrapper.setProperty('paginationPageSize', size);\n };\n GridApi.prototype.paginationGetCurrentPage = function () {\n return this.paginationProxy.getCurrentPage();\n };\n GridApi.prototype.paginationGetTotalPages = function () {\n return this.paginationProxy.getTotalPages();\n };\n GridApi.prototype.paginationGetRowCount = function () {\n return this.paginationProxy.getMasterRowCount();\n };\n GridApi.prototype.paginationGoToNextPage = function () {\n this.paginationProxy.goToNextPage();\n };\n GridApi.prototype.paginationGoToPreviousPage = function () {\n this.paginationProxy.goToPreviousPage();\n };\n GridApi.prototype.paginationGoToFirstPage = function () {\n this.paginationProxy.goToFirstPage();\n };\n GridApi.prototype.paginationGoToLastPage = function () {\n this.paginationProxy.goToLastPage();\n };\n GridApi.prototype.paginationGoToPage = function (page) {\n this.paginationProxy.goToPage(page);\n };\n __decorate([\n Optional('immutableService')\n ], GridApi.prototype, \"immutableService\", void 0);\n __decorate([\n Optional('csvCreator')\n ], GridApi.prototype, \"csvCreator\", void 0);\n __decorate([\n Optional('excelCreator')\n ], GridApi.prototype, \"excelCreator\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], GridApi.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('filterManager')\n ], GridApi.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('columnController')\n ], GridApi.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('selectionController')\n ], GridApi.prototype, \"selectionController\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], GridApi.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('valueService')\n ], GridApi.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('alignedGridsService')\n ], GridApi.prototype, \"alignedGridsService\", void 0);\n __decorate([\n Autowired('eventService')\n ], GridApi.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], GridApi.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired('context')\n ], GridApi.prototype, \"context\", void 0);\n __decorate([\n Autowired('rowModel')\n ], GridApi.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('sortController')\n ], GridApi.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('paginationProxy')\n ], GridApi.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('focusedCellController')\n ], GridApi.prototype, \"focusedCellController\", void 0);\n __decorate([\n Optional('rangeController')\n ], GridApi.prototype, \"rangeController\", void 0);\n __decorate([\n Optional('clipboardService')\n ], GridApi.prototype, \"clipboardService\", void 0);\n __decorate([\n Optional('aggFuncService')\n ], GridApi.prototype, \"aggFuncService\", void 0);\n __decorate([\n Autowired('menuFactory')\n ], GridApi.prototype, \"menuFactory\", void 0);\n __decorate([\n Optional('contextMenuFactory')\n ], GridApi.prototype, \"contextMenuFactory\", void 0);\n __decorate([\n Autowired('cellRendererFactory')\n ], GridApi.prototype, \"cellRendererFactory\", void 0);\n __decorate([\n Autowired('valueCache')\n ], GridApi.prototype, \"valueCache\", void 0);\n __decorate([\n Autowired('animationFrameService')\n ], GridApi.prototype, \"animationFrameService\", void 0);\n __decorate([\n Optional('statusBarService')\n ], GridApi.prototype, \"statusBarService\", void 0);\n __decorate([\n Optional('chartService')\n ], GridApi.prototype, \"chartService\", void 0);\n __decorate([\n PostConstruct\n ], GridApi.prototype, \"init\", null);\n GridApi = __decorate([\n Bean('gridApi')\n ], GridApi);\n return GridApi;\n}());\nexport { GridApi };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Bean } from \"../context/context\";\nimport { Qualifier } from \"../context/context\";\nvar ExpressionService = /** @class */ (function () {\n function ExpressionService() {\n this.expressionToFunctionCache = {};\n }\n ExpressionService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ExpressionService');\n };\n ExpressionService.prototype.evaluate = function (expressionOrFunc, params) {\n if (typeof expressionOrFunc === 'function') {\n // valueGetter is a function, so just call it\n var func = expressionOrFunc;\n return func(params);\n }\n else if (typeof expressionOrFunc === 'string') {\n // valueGetter is an expression, so execute the expression\n var expression = expressionOrFunc;\n return this.evaluateExpression(expression, params);\n }\n else {\n console.error('ag-Grid: value should be either a string or a function', expressionOrFunc);\n }\n };\n ExpressionService.prototype.evaluateExpression = function (expression, params) {\n try {\n var javaScriptFunction = this.createExpressionFunction(expression);\n // the params don't have all these values, rather we add every possible\n // value a params can have, which makes whatever is in the params available.\n var result = javaScriptFunction(params.value, params.context, params.oldValue, params.newValue, params.value, params.node, params.data, params.colDef, params.rowIndex, params.api, params.columnApi, params.getValue, params.column, params.columnGroup);\n return result;\n }\n catch (e) {\n // the expression failed, which can happen, as it's the client that\n // provides the expression. so print a nice message\n // tslint:disable-next-line\n console.log('Processing of the expression failed');\n // tslint:disable-next-line\n console.log('Expression = ' + expression);\n // tslint:disable-next-line\n console.log('Exception = ' + e);\n return null;\n }\n };\n ExpressionService.prototype.createExpressionFunction = function (expression) {\n // check cache first\n if (this.expressionToFunctionCache[expression]) {\n return this.expressionToFunctionCache[expression];\n }\n // if not found in cache, return the function\n var functionBody = this.createFunctionBody(expression);\n var theFunction = new Function('x, ctx, oldValue, newValue, value, node, data, colDef, rowIndex, api, columnApi, getValue, column, columnGroup', functionBody);\n // store in cache\n this.expressionToFunctionCache[expression] = theFunction;\n return theFunction;\n };\n ExpressionService.prototype.createFunctionBody = function (expression) {\n // if the expression has the 'return' word in it, then use as is,\n // if not, then wrap it with return and ';' to make a function\n if (expression.indexOf('return') >= 0) {\n return expression;\n }\n else {\n return 'return ' + expression + ';';\n }\n };\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], ExpressionService.prototype, \"setBeans\", null);\n ExpressionService = __decorate([\n Bean('expressionService')\n ], ExpressionService);\n return ExpressionService;\n}());\nexport { ExpressionService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Bean } from \"./context/context\";\nimport { Autowired } from \"./context/context\";\nvar TemplateService = /** @class */ (function () {\n function TemplateService() {\n this.templateCache = {};\n this.waitingCallbacks = {};\n }\n // returns the template if it is loaded, or null if it is not loaded\n // but will call the callback when it is loaded\n TemplateService.prototype.getTemplate = function (url, callback) {\n var templateFromCache = this.templateCache[url];\n if (templateFromCache) {\n return templateFromCache;\n }\n var callbackList = this.waitingCallbacks[url];\n var that = this;\n if (!callbackList) {\n // first time this was called, so need a new list for callbacks\n callbackList = [];\n this.waitingCallbacks[url] = callbackList;\n // and also need to do the http request\n var client = new XMLHttpRequest();\n client.onload = function () {\n that.handleHttpResult(this, url);\n };\n client.open(\"GET\", url);\n client.send();\n }\n // add this callback\n if (callback) {\n callbackList.push(callback);\n }\n // caller needs to wait for template to load, so return null\n return null;\n };\n TemplateService.prototype.handleHttpResult = function (httpResult, url) {\n if (httpResult.status !== 200 || httpResult.response === null) {\n console.warn(\"Unable to get template error \" + httpResult.status + \" - \" + url);\n return;\n }\n // response success, so process it\n // in IE9 the response is in - responseText\n this.templateCache[url] = httpResult.response || httpResult.responseText;\n // inform all listeners that this is now in the cache\n var callbacks = this.waitingCallbacks[url];\n for (var i = 0; i < callbacks.length; i++) {\n var callback = callbacks[i];\n // we could pass the callback the response, however we know the client of this code\n // is the cell renderer, and it passes the 'cellRefresh' method in as the callback\n // which doesn't take any parameters.\n callback();\n }\n if (this.$scope) {\n var that_1 = this;\n window.setTimeout(function () {\n that_1.$scope.$apply();\n }, 0);\n }\n };\n __decorate([\n Autowired('$scope')\n ], TemplateService.prototype, \"$scope\", void 0);\n TemplateService = __decorate([\n Bean('templateService')\n ], TemplateService);\n return TemplateService;\n}());\nexport { TemplateService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Constants } from \"../constants\";\nimport { Autowired, Bean } from \"../context/context\";\nimport { Events } from '../events';\nimport { _ } from \"../utils\";\nvar PopupService = /** @class */ (function () {\n function PopupService() {\n this.popupList = [];\n }\n PopupService.prototype.registerGridCore = function (gridCore) {\n this.gridCore = gridCore;\n };\n PopupService.prototype.getDocument = function () {\n return this.gridOptionsWrapper.getDocument();\n };\n PopupService.prototype.getPopupParent = function () {\n var ePopupParent = this.gridOptionsWrapper.getPopupParent();\n if (ePopupParent) {\n return ePopupParent;\n }\n return this.gridCore.getRootGui();\n };\n PopupService.prototype.positionPopupForMenu = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var eDocument = this.getDocument();\n var popupParent = this.getPopupParent();\n var parentRect;\n if (popupParent === eDocument.body) {\n parentRect = eDocument.documentElement.getBoundingClientRect();\n }\n else {\n parentRect = popupParent.getBoundingClientRect();\n }\n var y = sourceRect.top - parentRect.top;\n y = this.keepYWithinBounds(params, y);\n var minWidth = (params.ePopup.clientWidth > 0) ? params.ePopup.clientWidth : 200;\n params.ePopup.style.minWidth = minWidth + \"px\";\n var widthOfParent = parentRect.right - parentRect.left;\n var maxX = widthOfParent - minWidth;\n // the x position of the popup depends on RTL or LTR. for normal cases, LTR, we put the child popup\n // to the right, unless it doesn't fit and we then put it to the left. for RTL it's the other way around,\n // we try place it first to the left, and then if not to the right.\n var x;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, try left first\n x = xLeftPosition();\n if (x < 0) {\n x = xRightPosition();\n }\n if (x > maxX) {\n x = 0;\n }\n }\n else {\n // for LTR, try right first\n x = xRightPosition();\n if (x > maxX) {\n x = xLeftPosition();\n }\n if (x < 0) {\n x = 0;\n }\n }\n params.ePopup.style.left = x + \"px\";\n params.ePopup.style.top = y + \"px\";\n function xRightPosition() {\n return sourceRect.right - parentRect.left - 2;\n }\n function xLeftPosition() {\n return sourceRect.left - parentRect.left - minWidth;\n }\n };\n PopupService.prototype.positionPopupUnderMouseEvent = function (params) {\n var _a = this.calculatePointerAlign(params.mouseEvent), x = _a.x, y = _a.y;\n var ePopup = params.ePopup, nudgeX = params.nudgeX, nudgeY = params.nudgeY;\n this.positionPopup({\n ePopup: ePopup,\n x: x,\n y: y,\n nudgeX: nudgeX,\n nudgeY: nudgeY,\n keepWithinBounds: true\n });\n this.callPostProcessPopup(params.ePopup, null, params.mouseEvent, params.type, params.column, params.rowNode);\n };\n PopupService.prototype.calculatePointerAlign = function (e) {\n var eDocument = this.getDocument();\n var popupParent = this.getPopupParent();\n var parentRect = popupParent.getBoundingClientRect();\n var documentRect = eDocument.documentElement.getBoundingClientRect();\n return {\n x: e.clientX - (popupParent === eDocument.body ? documentRect.left : parentRect.left),\n y: e.clientY - (popupParent === eDocument.body ? documentRect.top : parentRect.top)\n };\n };\n PopupService.prototype.positionPopupUnderComponent = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var eDocument = this.getDocument();\n var popupParent = this.getPopupParent();\n var alignSide = params.alignSide || 'left';\n var parentRect;\n if (popupParent === eDocument.body) {\n parentRect = eDocument.documentElement.getBoundingClientRect();\n }\n else {\n parentRect = popupParent.getBoundingClientRect();\n }\n var x = sourceRect.left - parentRect.left;\n if (alignSide === 'right') {\n x -= (params.ePopup.offsetWidth - sourceRect.width);\n }\n this.positionPopup({\n ePopup: params.ePopup,\n minWidth: params.minWidth,\n minHeight: params.minHeight,\n nudgeX: params.nudgeX,\n nudgeY: params.nudgeY,\n x: x,\n y: sourceRect.top - parentRect.top + sourceRect.height,\n keepWithinBounds: params.keepWithinBounds\n });\n this.callPostProcessPopup(params.ePopup, params.eventSource, null, params.type, params.column, params.rowNode);\n };\n PopupService.prototype.positionPopupOverComponent = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var eDocument = this.getDocument();\n var popupParent = this.getPopupParent();\n var parentRect;\n if (popupParent === eDocument.body) {\n parentRect = eDocument.documentElement.getBoundingClientRect();\n }\n else {\n parentRect = popupParent.getBoundingClientRect();\n }\n this.positionPopup({\n ePopup: params.ePopup,\n minWidth: params.minWidth,\n nudgeX: params.nudgeX,\n nudgeY: params.nudgeY,\n x: sourceRect.left - parentRect.left,\n y: sourceRect.top - parentRect.top,\n keepWithinBounds: params.keepWithinBounds\n });\n this.callPostProcessPopup(params.ePopup, params.eventSource, null, params.type, params.column, params.rowNode);\n };\n PopupService.prototype.callPostProcessPopup = function (ePopup, eventSource, mouseEvent, type, column, rowNode) {\n var callback = this.gridOptionsWrapper.getPostProcessPopupFunc();\n if (callback) {\n var params = {\n column: column,\n rowNode: rowNode,\n ePopup: ePopup,\n type: type,\n eventSource: eventSource,\n mouseEvent: mouseEvent\n };\n callback(params);\n }\n };\n PopupService.prototype.positionPopup = function (params) {\n var x = params.x;\n var y = params.y;\n if (params.nudgeX) {\n x += params.nudgeX;\n }\n if (params.nudgeY) {\n y += params.nudgeY;\n }\n // if popup is overflowing to the bottom, move it up\n if (params.keepWithinBounds) {\n x = this.keepXWithinBounds(params, x);\n y = this.keepYWithinBounds(params, y);\n }\n params.ePopup.style.left = x + \"px\";\n params.ePopup.style.top = y + \"px\";\n };\n PopupService.prototype.keepYWithinBounds = function (params, y) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var docElement = eDocument.documentElement;\n var popupParent = this.getPopupParent();\n var parentRect = popupParent.getBoundingClientRect();\n var documentRect = eDocument.documentElement.getBoundingClientRect();\n var isBody = popupParent === eDocument.body;\n var defaultPadding = 3;\n var minHeight = Math.min(200, parentRect.height);\n var diff = 0;\n if (params.minHeight && params.minHeight < minHeight) {\n minHeight = params.minHeight;\n }\n else if (params.ePopup.offsetHeight > 0) {\n minHeight = params.ePopup.clientHeight;\n diff = _.getAbsoluteHeight(params.ePopup) - minHeight;\n }\n var heightOfParent = isBody ? (_.getAbsoluteHeight(docElement) + docElement.scrollTop) : parentRect.height;\n if (isBody) {\n heightOfParent -= Math.abs(documentRect.top - parentRect.top);\n }\n var maxY = heightOfParent - minHeight - diff - defaultPadding;\n return Math.min(Math.max(y, 0), Math.abs(maxY));\n };\n PopupService.prototype.keepXWithinBounds = function (params, x) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var docElement = eDocument.documentElement;\n var popupParent = this.getPopupParent();\n var parentRect = popupParent.getBoundingClientRect();\n var documentRect = eDocument.documentElement.getBoundingClientRect();\n var isBody = popupParent === eDocument.body;\n var defaultPadding = 3;\n var ePopup = params.ePopup;\n var minWidth = Math.min(200, parentRect.width);\n var diff = 0;\n if (params.minWidth && params.minWidth < minWidth) {\n minWidth = params.minWidth;\n }\n else if (ePopup.offsetWidth > 0) {\n minWidth = ePopup.offsetWidth;\n ePopup.style.minWidth = minWidth + \"px\";\n diff = _.getAbsoluteWidth(ePopup) - minWidth;\n }\n var widthOfParent = isBody ? (_.getAbsoluteWidth(docElement) + docElement.scrollLeft) : parentRect.width;\n if (isBody) {\n widthOfParent -= Math.abs(documentRect.left - parentRect.left);\n }\n var maxX = widthOfParent - minWidth - diff - defaultPadding;\n return Math.min(Math.max(x, 0), Math.abs(maxX));\n };\n // adds an element to a div, but also listens to background checking for clicks,\n // so that when the background is clicked, the child is removed again, giving\n // a model look to popups.\n PopupService.prototype.addAsModalPopup = function (eChild, closeOnEsc, closedCallback, click) {\n return this.addPopup(true, eChild, closeOnEsc, closedCallback, click);\n };\n PopupService.prototype.addPopup = function (modal, eChild, closeOnEsc, closedCallback, click, alwaysOnTop) {\n var _this = this;\n var eDocument = this.gridOptionsWrapper.getDocument();\n if (!eDocument) {\n console.warn('ag-grid: could not find the document, document is empty');\n return function () { };\n }\n var pos = _.findIndex(this.popupList, function (popup) { return popup.element === eChild; });\n if (pos !== -1) {\n var popup = this.popupList[pos];\n return popup.hideFunc;\n }\n var ePopupParent = this.getPopupParent();\n // for angular specifically, but shouldn't cause an issue with js or other fw's\n // https://github.com/angular/angular/issues/8563\n ePopupParent.appendChild(eChild);\n eChild.style.top = '0px';\n eChild.style.left = '0px';\n // add env CSS class to child, in case user provided a popup parent, which means\n // theme class may be missing\n var eWrapper = document.createElement('div');\n var theme = this.environment.getTheme().theme;\n if (theme) {\n _.addCssClass(eWrapper, theme);\n }\n _.addCssClass(eWrapper, 'ag-popup');\n _.addCssClass(eChild, this.gridOptionsWrapper.isEnableRtl() ? 'ag-rtl' : 'ag-ltr');\n eWrapper.appendChild(eChild);\n ePopupParent.appendChild(eWrapper);\n if (alwaysOnTop) {\n this.setAlwaysOnTop(eWrapper, true);\n }\n else {\n this.bringPopupToFront(eWrapper);\n }\n var popupHidden = false;\n var hidePopupOnKeyboardEvent = function (event) {\n var key = event.which || event.keyCode;\n if (key === Constants.KEY_ESCAPE && eWrapper.contains(document.activeElement)) {\n hidePopup(null);\n }\n };\n var hidePopupOnMouseEvent = function (event) {\n hidePopup(event);\n };\n var hidePopupOnTouchEvent = function (event) {\n hidePopup(null, event);\n };\n var hidePopup = function (mouseEvent, touchEvent) {\n if (\n // we don't hide popup if the event was on the child, or any\n // children of this child\n _this.isEventFromCurrentPopup(mouseEvent, touchEvent, eChild) ||\n // if the event to close is actually the open event, then ignore it\n _this.isEventSameChainAsOriginalEvent(click, mouseEvent, touchEvent) ||\n // this method should only be called once. the client can have different\n // paths, each one wanting to close, so this method may be called multiple times.\n popupHidden) {\n return;\n }\n popupHidden = true;\n ePopupParent.removeChild(eWrapper);\n eDocument.removeEventListener('keydown', hidePopupOnKeyboardEvent);\n eDocument.removeEventListener('mousedown', hidePopupOnMouseEvent);\n eDocument.removeEventListener('touchstart', hidePopupOnTouchEvent);\n eDocument.removeEventListener('contextmenu', hidePopupOnMouseEvent);\n _this.eventService.removeEventListener(Events.EVENT_DRAG_STARTED, hidePopupOnMouseEvent);\n if (closedCallback) {\n closedCallback();\n }\n _this.popupList = _this.popupList.filter(function (popup) { return popup.element !== eChild; });\n };\n // if we add these listeners now, then the current mouse\n // click will be included, which we don't want\n window.setTimeout(function () {\n if (closeOnEsc) {\n eDocument.addEventListener('keydown', hidePopupOnKeyboardEvent);\n }\n if (modal) {\n eDocument.addEventListener('mousedown', hidePopupOnMouseEvent);\n _this.eventService.addEventListener(Events.EVENT_DRAG_STARTED, hidePopupOnMouseEvent);\n eDocument.addEventListener('touchstart', hidePopupOnTouchEvent);\n eDocument.addEventListener('contextmenu', hidePopupOnMouseEvent);\n }\n }, 0);\n this.popupList.push({\n element: eChild,\n hideFunc: hidePopup\n });\n return hidePopup;\n };\n PopupService.prototype.isEventFromCurrentPopup = function (mouseEvent, touchEvent, eChild) {\n var event = mouseEvent ? mouseEvent : touchEvent;\n if (!event) {\n return false;\n }\n var indexOfThisChild = _.findIndex(this.popupList, function (popup) { return popup.element === eChild; });\n if (indexOfThisChild === -1) {\n return false;\n }\n for (var i = indexOfThisChild; i < this.popupList.length; i++) {\n var popup = this.popupList[i];\n if (_.isElementInEventPath(popup.element, event)) {\n return true;\n }\n }\n // if the user did not write their own Custom Element to be rendered as popup\n // and this component has additional popup element, they should have the\n // `ag-custom-component-popup` class to be detected as part of the Custom Component\n var el = event.target;\n while (el && el != document.body) {\n if (el.classList.contains('ag-custom-component-popup') || el.parentElement === null) {\n return true;\n }\n el = el.parentElement;\n }\n };\n // in some browsers, the context menu event can be fired before the click event, which means\n // the context menu event could open the popup, but then the click event closes it straight away.\n PopupService.prototype.isEventSameChainAsOriginalEvent = function (originalClick, mouseEvent, touchEvent) {\n // we check the coordinates of the event, to see if it's the same event. there is a 1 / 1000 chance that\n // the event is a different event, however that is an edge case that is not very relevant (the user clicking\n // twice on the same location isn't a normal path).\n // event could be mouse event or touch event.\n var mouseEventOrTouch = null;\n if (mouseEvent) {\n // mouse event can be used direction, it has coordinates\n mouseEventOrTouch = mouseEvent;\n }\n else if (touchEvent) {\n // touch event doesn't have coordinates, need it's touch object\n mouseEventOrTouch = touchEvent.touches[0];\n }\n if (mouseEventOrTouch && originalClick) {\n // for x, allow 4px margin, to cover iPads, where touch (which opens menu) is followed\n // by browser click (when you life finger up, touch is interrupted as click in browser)\n var screenX_1 = mouseEvent ? mouseEvent.screenX : 0;\n var screenY_1 = mouseEvent ? mouseEvent.screenY : 0;\n var xMatch = Math.abs(originalClick.screenX - screenX_1) < 5;\n var yMatch = Math.abs(originalClick.screenY - screenY_1) < 5;\n if (xMatch && yMatch) {\n return true;\n }\n }\n return false;\n };\n PopupService.prototype.getWrapper = function (ePopup) {\n while (!_.containsClass(ePopup, 'ag-popup') && ePopup.parentElement) {\n ePopup = ePopup.parentElement;\n }\n return _.containsClass(ePopup, 'ag-popup') ? ePopup : null;\n };\n PopupService.prototype.setAlwaysOnTop = function (ePopup, alwaysOnTop) {\n var eWrapper = this.getWrapper(ePopup);\n if (!eWrapper) {\n return;\n }\n _.addOrRemoveCssClass(eWrapper, 'ag-always-on-top', !!alwaysOnTop);\n if (alwaysOnTop) {\n this.bringPopupToFront(eWrapper);\n }\n };\n PopupService.prototype.bringPopupToFront = function (ePopup) {\n var parent = this.getPopupParent();\n var popupList = Array.prototype.slice.call(parent.querySelectorAll('.ag-popup'));\n var popupLen = popupList.length;\n var alwaysOnTopList = Array.prototype.slice.call(parent.querySelectorAll('.ag-popup.ag-always-on-top'));\n var onTopLength = alwaysOnTopList.length;\n var eWrapper = this.getWrapper(ePopup);\n if (!eWrapper || popupLen <= 1 || !parent.contains(ePopup)) {\n return;\n }\n var pos = popupList.indexOf(eWrapper);\n if (onTopLength) {\n var isPopupAlwaysOnTop = _.containsClass(eWrapper, 'ag-always-on-top');\n if (isPopupAlwaysOnTop) {\n if (pos !== popupLen - 1) {\n _.last(alwaysOnTopList).insertAdjacentElement('afterend', eWrapper);\n }\n }\n else if (pos !== popupLen - onTopLength - 1) {\n alwaysOnTopList[0].insertAdjacentElement('beforebegin', eWrapper);\n }\n }\n else if (pos !== popupLen - 1) {\n _.last(popupList).insertAdjacentElement('afterend', eWrapper);\n }\n var params = {\n type: 'popupToFront',\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n eWrapper: eWrapper\n };\n this.eventService.dispatchEvent(params);\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], PopupService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('environment')\n ], PopupService.prototype, \"environment\", void 0);\n __decorate([\n Autowired('eventService')\n ], PopupService.prototype, \"eventService\", void 0);\n PopupService = __decorate([\n Bean('popupService')\n ], PopupService);\n return PopupService;\n}());\nexport { PopupService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean } from \"../context/context\";\nimport { HeaderWrapperComp } from \"../headerRendering/header/headerWrapperComp\";\nvar AutoWidthCalculator = /** @class */ (function () {\n function AutoWidthCalculator() {\n }\n AutoWidthCalculator.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n AutoWidthCalculator.prototype.registerHeaderRootComp = function (headerRootComp) {\n this.headerRootComp = headerRootComp;\n };\n // this is the trick: we create a dummy container and clone all the cells\n // into the dummy, then check the dummy's width. then destroy the dummy\n // as we don't need it any more.\n // drawback: only the cells visible on the screen are considered\n AutoWidthCalculator.prototype.getPreferredWidthForColumn = function (column) {\n var eHeaderCell = this.getHeaderCellForColumn(column);\n // cell isn't visible\n if (!eHeaderCell) {\n return -1;\n }\n var eDummyContainer = document.createElement('span');\n // position fixed, so it isn't restricted to the boundaries of the parent\n eDummyContainer.style.position = 'fixed';\n // we put the dummy into the body container, so it will inherit all the\n // css styles that the real cells are inheriting\n var eBodyContainer = this.gridPanel.getCenterContainer();\n eBodyContainer.appendChild(eDummyContainer);\n // get all the cells that are currently displayed (this only brings back\n // rendered cells, rows not rendered due to row visualisation will not be here)\n this.putRowCellsIntoDummyContainer(column, eDummyContainer);\n // also put header cell in\n // we only consider the lowest level cell, not the group cell. in 99% of the time, this\n // will be enough. if we consider groups, then it gets to complicated for what it's worth,\n // as the groups can span columns and this class only considers one column at a time.\n this.cloneItemIntoDummy(eHeaderCell, eDummyContainer);\n // at this point, all the clones are lined up vertically with natural widths. the dummy\n // container will have a width wide enough just to fit the largest.\n var dummyContainerWidth = eDummyContainer.offsetWidth;\n // we are finished with the dummy container, so get rid of it\n eBodyContainer.removeChild(eDummyContainer);\n // we add padding as I found sometimes the gui still put '...' after some of the texts. so the\n // user can configure the grid to add a few more pixels after the calculated width\n var autoSizePadding = this.gridOptionsWrapper.getAutoSizePadding();\n return dummyContainerWidth + autoSizePadding;\n };\n AutoWidthCalculator.prototype.getHeaderCellForColumn = function (column) {\n var comp = null;\n // find the rendered header cell\n this.headerRootComp.forEachHeaderElement(function (headerElement) {\n if (headerElement instanceof HeaderWrapperComp) {\n var headerWrapperComp = headerElement;\n if (headerWrapperComp.getColumn() === column) {\n comp = headerWrapperComp;\n }\n }\n });\n return comp ? comp.getGui() : null;\n };\n AutoWidthCalculator.prototype.putRowCellsIntoDummyContainer = function (column, eDummyContainer) {\n var _this = this;\n var eCells = this.rowRenderer.getAllCellsForColumn(column);\n eCells.forEach(function (eCell) { return _this.cloneItemIntoDummy(eCell, eDummyContainer); });\n };\n AutoWidthCalculator.prototype.cloneItemIntoDummy = function (eCell, eDummyContainer) {\n // make a deep clone of the cell\n var eCellClone = eCell.cloneNode(true);\n // the original has a fixed width, we remove this to allow the natural width based on content\n eCellClone.style.width = '';\n // the original has position = absolute, we need to remove this so it's positioned normally\n eCellClone.style.position = 'static';\n eCellClone.style.left = '';\n // we put the cell into a containing div, as otherwise the cells would just line up\n // on the same line, standard flow layout, by putting them into divs, they are laid\n // out one per line\n var eCloneParent = document.createElement('div');\n // table-row, so that each cell is on a row. i also tried display='block', but this\n // didn't work in IE\n eCloneParent.style.display = 'table-row';\n // the twig on the branch, the branch on the tree, the tree in the hole,\n // the hole in the bog, the bog in the clone, the clone in the parent,\n // the parent in the dummy, and the dummy down in the vall-e-ooo, OOOOOOOOO! Oh row the rattling bog....\n eCloneParent.appendChild(eCellClone);\n eDummyContainer.appendChild(eCloneParent);\n };\n __decorate([\n Autowired('rowRenderer')\n ], AutoWidthCalculator.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], AutoWidthCalculator.prototype, \"gridOptionsWrapper\", void 0);\n AutoWidthCalculator = __decorate([\n Bean('autoWidthCalculator')\n ], AutoWidthCalculator);\n return AutoWidthCalculator;\n}());\nexport { AutoWidthCalculator };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean } from \"../context/context\";\nvar HorizontalResizeService = /** @class */ (function () {\n function HorizontalResizeService() {\n }\n HorizontalResizeService.prototype.addResizeBar = function (params) {\n var _this = this;\n var dragSource = {\n dragStartPixels: params.dragStartPixels || 0,\n eElement: params.eResizeBar,\n onDragStart: this.onDragStart.bind(this, params),\n onDragStop: this.onDragStop.bind(this, params),\n onDragging: this.onDragging.bind(this, params)\n };\n this.dragService.addDragSource(dragSource, true);\n // we pass remove func back to the caller, so call can tell us when they\n // are finished, and then we remove the listener from the drag source\n var finishedWithResizeFunc = function () { return _this.dragService.removeDragSource(dragSource); };\n return finishedWithResizeFunc;\n };\n HorizontalResizeService.prototype.onDragStart = function (params, mouseEvent) {\n this.draggingStarted = true;\n this.dragStartX = mouseEvent.clientX;\n this.setResizeIcons();\n var shiftKey = mouseEvent instanceof MouseEvent ? mouseEvent.shiftKey === true : false;\n params.onResizeStart(shiftKey);\n };\n HorizontalResizeService.prototype.setResizeIcons = function () {\n this.oldBodyCursor = this.eGridDiv.style.cursor;\n this.oldMsUserSelect = this.eGridDiv.style.msUserSelect;\n this.oldWebkitUserSelect = this.eGridDiv.style.webkitUserSelect;\n // change the body cursor, so when drag moves out of the drag bar, the cursor is still 'resize' (or 'move'\n this.eGridDiv.style.cursor = 'col-resize';\n // we don't want text selection outside the grid (otherwise it looks weird as text highlights when we move)\n this.eGridDiv.style.msUserSelect = 'none';\n this.eGridDiv.style.webkitUserSelect = 'none';\n };\n HorizontalResizeService.prototype.onDragStop = function (params, mouseEvent) {\n params.onResizeEnd(this.resizeAmount);\n this.resetIcons();\n };\n HorizontalResizeService.prototype.resetIcons = function () {\n // we don't want text selection outside the grid (otherwise it looks weird as text highlights when we move)\n this.eGridDiv.style.cursor = this.oldBodyCursor;\n this.eGridDiv.style.msUserSelect = this.oldMsUserSelect;\n this.eGridDiv.style.webkitUserSelect = this.oldWebkitUserSelect;\n };\n HorizontalResizeService.prototype.onDragging = function (params, mouseEvent) {\n this.resizeAmount = mouseEvent.clientX - this.dragStartX;\n params.onResizing(this.resizeAmount);\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], HorizontalResizeService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('dragService')\n ], HorizontalResizeService.prototype, \"dragService\", void 0);\n __decorate([\n Autowired('eGridDiv')\n ], HorizontalResizeService.prototype, \"eGridDiv\", void 0);\n HorizontalResizeService = __decorate([\n Bean('horizontalResizeService')\n ], HorizontalResizeService);\n return HorizontalResizeService;\n}());\nexport { HorizontalResizeService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Autowired, Optional, PostConstruct } from \"./context/context\";\nimport { Component } from \"./widgets/component\";\nimport { RefSelector } from \"./widgets/componentAnnotations\";\nimport { Events } from \"./events\";\nimport { SideBarDefParser } from \"./entities/sideBar\";\nimport { _ } from \"./utils\";\nimport { ModuleNames } from \"./modules/moduleNames\";\nimport { ModuleRegistry } from \"./modules/moduleRegistry\";\nvar GridCore = /** @class */ (function (_super) {\n __extends(GridCore, _super);\n function GridCore() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridCore.prototype.init = function () {\n var _this = this;\n this.logger = this.loggerFactory.create('GridCore');\n var template = this.createTemplate();\n this.setTemplate(template);\n // register with services that need grid core\n [\n this.gridApi,\n this.filterManager,\n this.rowRenderer,\n this.popupService\n ].forEach(function (service) { return service.registerGridCore(_this); });\n if (ModuleRegistry.isRegistered(ModuleNames.ClipboardModule)) {\n this.clipboardService.registerGridCore(this);\n }\n this.gridOptionsWrapper.addLayoutElement(this.getGui());\n this.eGridDiv.appendChild(this.getGui());\n this.addDestroyFunc(function () {\n _this.eGridDiv.removeChild(_this.getGui());\n });\n // if using angular, watch for quickFilter changes\n if (this.$scope) {\n var quickFilterUnregisterFn = this.$scope.$watch(this.quickFilterOnScope, function (newFilter) { return _this.filterManager.setQuickFilter(newFilter); });\n this.addDestroyFunc(quickFilterUnregisterFn);\n }\n // important to set rtl before doLayout, as setting the RTL class impacts the scroll position,\n // which doLayout indirectly depends on\n this.addRtlSupport();\n this.logger.log('ready');\n this.gridOptionsWrapper.addLayoutElement(this.eRootWrapperBody);\n var gridPanelEl = this.gridPanel.getGui();\n this.addDestroyableEventListener(gridPanelEl, 'focusin', function () {\n _.addCssClass(gridPanelEl, 'ag-has-focus');\n });\n this.addDestroyableEventListener(gridPanelEl, 'focusout', function (e) {\n if (!gridPanelEl.contains(e.relatedTarget)) {\n _.removeCssClass(gridPanelEl, 'ag-has-focus');\n }\n });\n var unsubscribeFromResize = this.resizeObserverService.observeResize(this.eGridDiv, this.onGridSizeChanged.bind(this));\n this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n };\n GridCore.prototype.createTemplate = function () {\n var sideBarModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.SideBarModule);\n var statusBarModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.StatusBarModule);\n var rowGroupingLoaded = ModuleRegistry.isRegistered(ModuleNames.RowGroupingModule);\n var enterpriseCoreLoaded = ModuleRegistry.isRegistered(ModuleNames.EnterpriseCoreModule);\n var dropZones = rowGroupingLoaded ? '' : '';\n var sideBar = sideBarModuleLoaded ? '' : '';\n var statusBar = statusBarModuleLoaded ? '' : '';\n var watermark = enterpriseCoreLoaded ? '' : '';\n var template = \"
\\n \" + dropZones + \"\\n
\\n \\n \" + sideBar + \"\\n
\\n \" + statusBar + \"\\n \\n \" + watermark + \"\\n
\";\n return template;\n };\n GridCore.prototype.onGridSizeChanged = function () {\n var event = {\n type: Events.EVENT_GRID_SIZE_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n clientWidth: this.eGridDiv.clientWidth,\n clientHeight: this.eGridDiv.clientHeight\n };\n this.eventService.dispatchEvent(event);\n };\n GridCore.prototype.addRtlSupport = function () {\n var cssClass = this.gridOptionsWrapper.isEnableRtl() ? 'ag-rtl' : 'ag-ltr';\n _.addCssClass(this.getGui(), cssClass);\n };\n GridCore.prototype.getRootGui = function () {\n return this.getGui();\n };\n GridCore.prototype.isSideBarVisible = function () {\n if (!this.sideBarComp) {\n return false;\n }\n return this.sideBarComp.isDisplayed();\n };\n GridCore.prototype.setSideBarVisible = function (show) {\n if (!this.sideBarComp) {\n if (show) {\n console.warn('ag-Grid: sideBar is not loaded');\n }\n return;\n }\n this.sideBarComp.setDisplayed(show);\n };\n GridCore.prototype.setSideBarPosition = function (position) {\n if (!this.sideBarComp) {\n console.warn('ag-Grid: sideBar is not loaded');\n return;\n }\n this.sideBarComp.setSideBarPosition(position);\n };\n GridCore.prototype.closeToolPanel = function () {\n if (!this.sideBarComp) {\n console.warn('ag-Grid: toolPanel is only available in ag-Grid Enterprise');\n return;\n }\n this.sideBarComp.close();\n };\n GridCore.prototype.getSideBar = function () {\n return this.gridOptions.sideBar;\n };\n GridCore.prototype.getToolPanelInstance = function (key) {\n if (!this.sideBarComp) {\n console.warn('ag-Grid: toolPanel is only available in ag-Grid Enterprise');\n return;\n }\n return this.sideBarComp.getToolPanelInstance(key);\n };\n GridCore.prototype.refreshSideBar = function () {\n if (this.sideBarComp) {\n this.sideBarComp.refresh();\n }\n };\n GridCore.prototype.setSideBar = function (def) {\n if (!this.sideBarComp) {\n return;\n }\n this.eRootWrapperBody.removeChild(this.sideBarComp.getGui());\n this.gridOptions.sideBar = SideBarDefParser.parse(def);\n this.sideBarComp.reset();\n this.eRootWrapperBody.appendChild(this.sideBarComp.getGui());\n };\n GridCore.prototype.getOpenedToolPanel = function () {\n if (!this.sideBarComp) {\n return null;\n }\n return this.sideBarComp.openedItem();\n };\n GridCore.prototype.openToolPanel = function (key) {\n if (!this.sideBarComp) {\n console.warn('ag-Grid: toolPanel is only available in ag-Grid Enterprise');\n return;\n }\n this.sideBarComp.openToolPanel(key);\n };\n GridCore.prototype.isToolPanelShowing = function () {\n return this.sideBarComp.isToolPanelShowing();\n };\n GridCore.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.logger.log('Grid DOM removed');\n };\n // Valid values for position are bottom, middle and top\n GridCore.prototype.ensureNodeVisible = function (comparator, position) {\n if (position === void 0) { position = 'top'; }\n if (this.doingVirtualPaging) {\n throw new Error('Cannot use ensureNodeVisible when doing virtual paging, as we cannot check rows that are not in memory');\n }\n // look for the node index we want to display\n var rowCount = this.rowModel.getRowCount();\n var comparatorIsAFunction = typeof comparator === 'function';\n var indexToSelect = -1;\n // go through all the nodes, find the one we want to show\n for (var i = 0; i < rowCount; i++) {\n var node = this.rowModel.getRow(i);\n if (comparatorIsAFunction) {\n if (comparator(node)) {\n indexToSelect = i;\n break;\n }\n }\n else {\n // check object equality against node and data\n if (comparator === node || comparator === node.data) {\n indexToSelect = i;\n break;\n }\n }\n }\n if (indexToSelect >= 0) {\n this.gridPanel.ensureIndexVisible(indexToSelect, position);\n }\n };\n __decorate([\n Autowired('gridOptions')\n ], GridCore.prototype, \"gridOptions\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], GridCore.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('rowModel')\n ], GridCore.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('resizeObserverService')\n ], GridCore.prototype, \"resizeObserverService\", void 0);\n __decorate([\n Autowired('columnController')\n ], GridCore.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], GridCore.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('filterManager')\n ], GridCore.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('eventService')\n ], GridCore.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('eGridDiv')\n ], GridCore.prototype, \"eGridDiv\", void 0);\n __decorate([\n Autowired('$scope')\n ], GridCore.prototype, \"$scope\", void 0);\n __decorate([\n Autowired('quickFilterOnScope')\n ], GridCore.prototype, \"quickFilterOnScope\", void 0);\n __decorate([\n Autowired('popupService')\n ], GridCore.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('focusedCellController')\n ], GridCore.prototype, \"focusedCellController\", void 0);\n __decorate([\n Autowired('loggerFactory')\n ], GridCore.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('columnApi')\n ], GridCore.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], GridCore.prototype, \"gridApi\", void 0);\n __decorate([\n Optional('clipboardService')\n ], GridCore.prototype, \"clipboardService\", void 0);\n __decorate([\n RefSelector('gridPanel')\n ], GridCore.prototype, \"gridPanel\", void 0);\n __decorate([\n RefSelector('sideBar')\n ], GridCore.prototype, \"sideBarComp\", void 0);\n __decorate([\n RefSelector('rootWrapperBody')\n ], GridCore.prototype, \"eRootWrapperBody\", void 0);\n __decorate([\n PostConstruct\n ], GridCore.prototype, \"init\", null);\n return GridCore;\n}(Component));\nexport { GridCore };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean } from \"../context/context\";\nimport { _ } from \"../utils\";\nvar StandardMenuFactory = /** @class */ (function () {\n function StandardMenuFactory() {\n }\n StandardMenuFactory.prototype.hideActiveMenu = function () {\n if (this.hidePopup) {\n this.hidePopup();\n }\n };\n StandardMenuFactory.prototype.showMenuAfterMouseEvent = function (column, mouseEvent) {\n var _this = this;\n this.showPopup(column, function (eMenu) {\n _this.popupService.positionPopupUnderMouseEvent({\n column: column,\n type: 'columnMenu',\n mouseEvent: mouseEvent,\n ePopup: eMenu\n });\n });\n };\n StandardMenuFactory.prototype.showMenuAfterButtonClick = function (column, eventSource) {\n var _this = this;\n this.showPopup(column, function (eMenu) {\n _this.popupService.positionPopupUnderComponent({\n type: 'columnMenu', eventSource: eventSource,\n ePopup: eMenu, keepWithinBounds: true, column: column\n });\n });\n };\n StandardMenuFactory.prototype.showPopup = function (column, positionCallback) {\n var _this = this;\n var filterWrapper = this.filterManager.getOrCreateFilterWrapper(column, 'COLUMN_MENU');\n var eMenu = document.createElement('div');\n _.addCssClass(eMenu, 'ag-menu');\n filterWrapper.guiPromise.promise.then(function (gui) {\n eMenu.appendChild(gui);\n });\n var hidePopup;\n var bodyScrollListener = function (event) {\n // if h scroll, popup is no longer over the column\n if (event.direction === 'horizontal') {\n hidePopup();\n }\n };\n this.eventService.addEventListener('bodyScroll', bodyScrollListener);\n var closedCallback = function () {\n _this.eventService.removeEventListener('bodyScroll', bodyScrollListener);\n column.setMenuVisible(false, \"contextMenu\");\n };\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 hidePopup = this.popupService.addAsModalPopup(eMenu, true, closedCallback);\n positionCallback(eMenu);\n filterWrapper.filterPromise.then(function (filter) {\n if (filter.afterGuiAttached) {\n var params = {\n hidePopup: hidePopup\n };\n filter.afterGuiAttached(params);\n }\n });\n this.hidePopup = hidePopup;\n column.setMenuVisible(true, \"contextMenu\");\n };\n StandardMenuFactory.prototype.isMenuEnabled = function (column) {\n // for standard, we show menu if filter is enabled, and he menu is not suppressed\n return column.isFilterAllowed();\n };\n __decorate([\n Autowired('eventService')\n ], StandardMenuFactory.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('filterManager')\n ], StandardMenuFactory.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('popupService')\n ], StandardMenuFactory.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], StandardMenuFactory.prototype, \"gridOptionsWrapper\", void 0);\n StandardMenuFactory = __decorate([\n Bean('menuFactory')\n ], StandardMenuFactory);\n return StandardMenuFactory;\n}());\nexport { StandardMenuFactory };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Bean, PreDestroy, Autowired, PostConstruct } from \"../context/context\";\nimport { Events } from \"../events\";\nimport { _ } from \"../utils\";\n/** Adds drag listening onto an element. In ag-Grid this is used twice, first is resizing columns,\n * second is moving the columns and column groups around (ie the 'drag' part of Drag and Drop. */\nvar DragService = /** @class */ (function () {\n function DragService() {\n this.onMouseUpListener = this.onMouseUp.bind(this);\n this.onMouseMoveListener = this.onMouseMove.bind(this);\n this.onTouchEndListener = this.onTouchUp.bind(this);\n this.onTouchMoveListener = this.onTouchMove.bind(this);\n this.dragEndFunctions = [];\n this.dragSources = [];\n }\n DragService.prototype.init = function () {\n this.logger = this.loggerFactory.create('DragService');\n };\n DragService.prototype.destroy = function () {\n this.dragSources.forEach(this.removeListener.bind(this));\n this.dragSources.length = 0;\n };\n DragService.prototype.removeListener = function (dragSourceAndListener) {\n var element = dragSourceAndListener.dragSource.eElement;\n var mouseDownListener = dragSourceAndListener.mouseDownListener;\n element.removeEventListener('mousedown', mouseDownListener);\n // remove touch listener only if it exists\n if (dragSourceAndListener.touchEnabled) {\n var touchStartListener = dragSourceAndListener.touchStartListener;\n element.removeEventListener('touchstart', touchStartListener, { passive: true });\n }\n };\n DragService.prototype.removeDragSource = function (params) {\n var dragSourceAndListener = _.find(this.dragSources, function (item) { return item.dragSource === params; });\n if (!dragSourceAndListener) {\n return;\n }\n this.removeListener(dragSourceAndListener);\n _.removeFromArray(this.dragSources, dragSourceAndListener);\n };\n DragService.prototype.setNoSelectToBody = function (noSelect) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var eBody = eDocument.querySelector('body');\n if (_.exists(eBody)) {\n // when we drag the mouse in ag-Grid, this class gets added / removed from the body, so that\n // the mouse isn't selecting text when dragging.\n _.addOrRemoveCssClass(eBody, 'ag-unselectable', noSelect);\n }\n };\n DragService.prototype.addDragSource = function (params, includeTouch) {\n if (includeTouch === void 0) { includeTouch = false; }\n var mouseListener = this.onMouseDown.bind(this, params);\n params.eElement.addEventListener('mousedown', mouseListener);\n var touchListener = null;\n var suppressTouch = this.gridOptionsWrapper.isSuppressTouch();\n if (includeTouch && !suppressTouch) {\n touchListener = this.onTouchStart.bind(this, params);\n params.eElement.addEventListener('touchstart', touchListener, { passive: false });\n }\n this.dragSources.push({\n dragSource: params,\n mouseDownListener: mouseListener,\n touchStartListener: touchListener,\n touchEnabled: includeTouch\n });\n };\n // gets called whenever mouse down on any drag source\n DragService.prototype.onTouchStart = function (params, touchEvent) {\n var _this = this;\n this.currentDragParams = params;\n this.dragging = false;\n var touch = touchEvent.touches[0];\n this.touchLastTime = touch;\n this.touchStart = touch;\n touchEvent.preventDefault();\n // we temporally add these listeners, for the duration of the drag, they\n // are removed in touch end handling.\n params.eElement.addEventListener('touchmove', this.onTouchMoveListener, { passive: true });\n params.eElement.addEventListener('touchend', this.onTouchEndListener, { passive: true });\n params.eElement.addEventListener('touchcancel', this.onTouchEndListener, { passive: true });\n this.dragEndFunctions.push(function () {\n params.eElement.removeEventListener('touchmove', _this.onTouchMoveListener, { passive: true });\n params.eElement.removeEventListener('touchend', _this.onTouchEndListener, { passive: true });\n params.eElement.removeEventListener('touchcancel', _this.onTouchEndListener, { passive: true });\n });\n // see if we want to start dragging straight away\n if (params.dragStartPixels === 0) {\n this.onCommonMove(touch, this.touchStart);\n }\n };\n // gets called whenever mouse down on any drag source\n DragService.prototype.onMouseDown = function (params, mouseEvent) {\n var _this = this;\n // we ignore when shift key is pressed. this is for the range selection, as when\n // user shift-clicks a cell, this should not be interpreted as the start of a drag.\n // if (mouseEvent.shiftKey) { return; }\n if (params.skipMouseEvent) {\n if (params.skipMouseEvent(mouseEvent)) {\n return;\n }\n }\n // if there are two elements with parent / child relationship, and both are draggable,\n // when we drag the child, we should NOT drag the parent. an example of this is row moving\n // and range selection - row moving should get preference when use drags the rowDrag component.\n if (mouseEvent._alreadyProcessedByDragService) {\n return;\n }\n mouseEvent._alreadyProcessedByDragService = true;\n // only interested in left button clicks\n if (mouseEvent.button !== 0) {\n return;\n }\n this.currentDragParams = params;\n this.dragging = false;\n this.mouseStartEvent = mouseEvent;\n var eDocument = this.gridOptionsWrapper.getDocument();\n this.setNoSelectToBody(true);\n // we temporally add these listeners, for the duration of the drag, they\n // are removed in mouseup handling.\n eDocument.addEventListener('mousemove', this.onMouseMoveListener);\n eDocument.addEventListener('mouseup', this.onMouseUpListener);\n this.dragEndFunctions.push(function () {\n eDocument.removeEventListener('mousemove', _this.onMouseMoveListener);\n eDocument.removeEventListener('mouseup', _this.onMouseUpListener);\n });\n //see if we want to start dragging straight away\n if (params.dragStartPixels === 0) {\n this.onMouseMove(mouseEvent);\n }\n };\n // returns true if the event is close to the original event by X pixels either vertically or horizontally.\n // we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n DragService.prototype.isEventNearStartEvent = function (currentEvent, startEvent) {\n // by default, we wait 4 pixels before starting the drag\n var dragStartPixels = this.currentDragParams.dragStartPixels;\n var requiredPixelDiff = _.exists(dragStartPixels) ? dragStartPixels : 4;\n return _.areEventsNear(currentEvent, startEvent, requiredPixelDiff);\n };\n DragService.prototype.getFirstActiveTouch = function (touchList) {\n for (var i = 0; i < touchList.length; i++) {\n if (touchList[i].identifier === this.touchStart.identifier) {\n return touchList[i];\n }\n }\n return null;\n };\n DragService.prototype.onCommonMove = function (currentEvent, startEvent) {\n if (!this.dragging) {\n // if mouse hasn't travelled from the start position enough, do nothing\n if (!this.dragging && this.isEventNearStartEvent(currentEvent, startEvent)) {\n return;\n }\n this.dragging = true;\n var event_1 = {\n type: Events.EVENT_DRAG_STARTED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n this.currentDragParams.onDragStart(startEvent);\n }\n this.currentDragParams.onDragging(currentEvent);\n };\n DragService.prototype.onTouchMove = function (touchEvent) {\n var touch = this.getFirstActiveTouch(touchEvent.touches);\n if (!touch) {\n return;\n }\n // this.___statusPanel.setInfoText(Math.random() + ' onTouchMove preventDefault stopPropagation');\n // if we don't preview default, then the browser will try and do it's own touch stuff,\n // like do 'back button' (chrome does this) or scroll the page (eg drag column could be confused\n // with scroll page in the app)\n // touchEvent.preventDefault();\n this.onCommonMove(touch, this.touchStart);\n };\n // only gets called after a mouse down - as this is only added after mouseDown\n // and is removed when mouseUp happens\n DragService.prototype.onMouseMove = function (mouseEvent) {\n this.onCommonMove(mouseEvent, this.mouseStartEvent);\n };\n DragService.prototype.onTouchUp = function (touchEvent) {\n var touch = this.getFirstActiveTouch(touchEvent.changedTouches);\n // i haven't worked this out yet, but there is no matching touch\n // when we get the touch up event. to get around this, we swap in\n // the last touch. this is a hack to 'get it working' while we\n // figure out what's going on, why we are not getting a touch in\n // current event.\n if (!touch) {\n touch = this.touchLastTime;\n }\n // if mouse was left up before we started to move, then this is a tap.\n // we check this before onUpCommon as onUpCommon resets the dragging\n // let tap = !this.dragging;\n // let tapTarget = this.currentDragParams.eElement;\n this.onUpCommon(touch);\n // if tap, tell user\n // console.log(`${Math.random()} tap = ${tap}`);\n // if (tap) {\n // tapTarget.click();\n // }\n };\n DragService.prototype.onMouseUp = function (mouseEvent) {\n this.onUpCommon(mouseEvent);\n };\n DragService.prototype.onUpCommon = function (eventOrTouch) {\n if (this.dragging) {\n this.dragging = false;\n this.currentDragParams.onDragStop(eventOrTouch);\n var event_2 = {\n type: Events.EVENT_DRAG_STOPPED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_2);\n }\n this.setNoSelectToBody(false);\n this.mouseStartEvent = null;\n this.touchStart = null;\n this.touchLastTime = null;\n this.currentDragParams = null;\n this.dragEndFunctions.forEach(function (func) { return func(); });\n this.dragEndFunctions.length = 0;\n };\n __decorate([\n Autowired('loggerFactory')\n ], DragService.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('eventService')\n ], DragService.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], DragService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnApi')\n ], DragService.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], DragService.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], DragService.prototype, \"init\", null);\n __decorate([\n PreDestroy\n ], DragService.prototype, \"destroy\", null);\n DragService = __decorate([\n Bean('dragService')\n ], DragService);\n return DragService;\n}());\nexport { DragService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean } from \"./context/context\";\nimport { Events } from \"./events\";\nimport { Constants } from \"./constants\";\nvar SortController = /** @class */ (function () {\n function SortController() {\n var _this = this;\n // used by the public api, for saving the sort model\n this.getSortModel = function () {\n return _this.getColumnsWithSortingOrdered().map(function (column) { return ({\n colId: column.getColId(),\n sort: column.getSort()\n }); });\n };\n }\n SortController_1 = SortController;\n SortController.prototype.progressSort = function (column, multiSort, source) {\n if (source === void 0) { source = \"api\"; }\n var nextDirection = this.getNextSortDirection(column);\n this.setSortForColumn(column, nextDirection, multiSort, source);\n };\n SortController.prototype.setSortForColumn = function (column, sort, multiSort, source) {\n if (source === void 0) { source = \"api\"; }\n // auto correct - if sort not legal value, then set it to 'no sort' (which is null)\n if (sort !== Constants.SORT_ASC && sort !== Constants.SORT_DESC) {\n sort = null;\n }\n // update sort on current col\n column.setSort(sort, source);\n // sortedAt used for knowing order of cols when multi-col sort\n if (column.getSort()) {\n var sortedAt = Number(new Date().valueOf());\n column.setSortedAt(sortedAt);\n }\n else {\n column.setSortedAt(null);\n }\n var doingMultiSort = multiSort && !this.gridOptionsWrapper.isSuppressMultiSort();\n // clear sort on all columns except this one, and update the icons\n if (!doingMultiSort) {\n this.clearSortBarThisColumn(column, source);\n }\n this.dispatchSortChangedEvents();\n };\n // gets called by API, so if data changes, use can call this, which will end up\n // working out the sort order again of the rows.\n SortController.prototype.onSortChanged = function () {\n this.dispatchSortChangedEvents();\n };\n SortController.prototype.dispatchSortChangedEvents = function () {\n var event = {\n type: Events.EVENT_SORT_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n SortController.prototype.clearSortBarThisColumn = function (columnToSkip, source) {\n this.columnController.getPrimaryAndSecondaryAndAutoColumns().forEach(function (columnToClear) {\n // Do not clear if either holding shift, or if column in question was clicked\n if (!(columnToClear === columnToSkip)) {\n // setting to 'undefined' as null means 'none' rather than cleared, otherwise issue will arise\n // if sort order is: ['desc', null , 'asc'], as it will start at null rather than 'desc'.\n columnToClear.setSort(undefined, source);\n }\n });\n };\n SortController.prototype.getNextSortDirection = function (column) {\n var sortingOrder;\n if (column.getColDef().sortingOrder) {\n sortingOrder = column.getColDef().sortingOrder;\n }\n else if (this.gridOptionsWrapper.getSortingOrder()) {\n sortingOrder = this.gridOptionsWrapper.getSortingOrder();\n }\n else {\n sortingOrder = SortController_1.DEFAULT_SORTING_ORDER;\n }\n if (!Array.isArray(sortingOrder) || sortingOrder.length <= 0) {\n console.warn(\"ag-grid: sortingOrder must be an array with at least one element, currently it's \" + sortingOrder);\n return null;\n }\n var currentIndex = sortingOrder.indexOf(column.getSort());\n var notInArray = currentIndex < 0;\n var lastItemInArray = currentIndex == sortingOrder.length - 1;\n var result;\n if (notInArray || lastItemInArray) {\n result = sortingOrder[0];\n }\n else {\n result = sortingOrder[currentIndex + 1];\n }\n // verify the sort type exists, as the user could provide the sortingOrder, need to make sure it's valid\n if (SortController_1.DEFAULT_SORTING_ORDER.indexOf(result) < 0) {\n console.warn('ag-grid: invalid sort type ' + result);\n return null;\n }\n return result;\n };\n SortController.prototype.setSortModel = function (sortModel, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n // first up, clear any previous sort\n var sortModelProvided = sortModel && sortModel.length > 0;\n var allColumnsIncludingAuto = this.columnController.getPrimaryAndSecondaryAndAutoColumns();\n allColumnsIncludingAuto.forEach(function (column) {\n var sortForCol = null;\n var sortedAt = -1;\n if (sortModelProvided && column.getColDef().sortable) {\n for (var j = 0; j < sortModel.length; j++) {\n var sortModelEntry = sortModel[j];\n if (typeof sortModelEntry.colId === 'string'\n && typeof column.getColId() === 'string'\n && _this.compareColIds(sortModelEntry, column)) {\n sortForCol = sortModelEntry.sort;\n sortedAt = j;\n }\n }\n }\n if (sortForCol) {\n column.setSort(sortForCol, source);\n column.setSortedAt(sortedAt);\n }\n else {\n column.setSort(null, source);\n column.setSortedAt(null);\n }\n });\n this.dispatchSortChangedEvents();\n };\n SortController.prototype.compareColIds = function (sortModelEntry, column) {\n return sortModelEntry.colId === column.getColId();\n };\n SortController.prototype.getColumnsWithSortingOrdered = function () {\n // pull out all the columns that have sorting set\n var allColumnsIncludingAuto = this.columnController.getPrimaryAndSecondaryAndAutoColumns();\n var columnsWithSorting = allColumnsIncludingAuto.filter(function (column) { return !!column.getSort(); });\n // put the columns in order of which one got sorted first\n columnsWithSorting.sort(function (a, b) { return a.sortedAt - b.sortedAt; });\n return columnsWithSorting;\n };\n // used by row controller, when doing the sorting\n SortController.prototype.getSortForRowController = function () {\n return this.getColumnsWithSortingOrdered().map(function (column) {\n var isAscending = column.getSort() === Constants.SORT_ASC;\n return {\n inverter: isAscending ? 1 : -1,\n column: column\n };\n });\n };\n var SortController_1;\n SortController.DEFAULT_SORTING_ORDER = [Constants.SORT_ASC, Constants.SORT_DESC, null];\n __decorate([\n Autowired('gridOptionsWrapper')\n ], SortController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], SortController.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], SortController.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], SortController.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], SortController.prototype, \"gridApi\", void 0);\n SortController = SortController_1 = __decorate([\n Bean('sortController')\n ], SortController);\n return SortController;\n}());\nexport { SortController };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Bean, Autowired, PostConstruct } from \"./context/context\";\nimport { Events } from \"./events\";\nimport { CellComp } from \"./rendering/cellComp\";\nimport { _ } from \"./utils\";\nvar FocusedCellController = /** @class */ (function () {\n function FocusedCellController() {\n }\n FocusedCellController.prototype.init = function () {\n this.eventService.addEventListener(Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.clearFocusedCell.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.clearFocusedCell.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_GROUP_OPENED, this.clearFocusedCell.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.clearFocusedCell.bind(this));\n // we used to remove focus when moving column, am not sure why. so taking this out and see who complains.\n // we can delete these three lines of code soon.\n // this.eventService.addEventListener(Events.EVENT_COLUMN_MOVED, this.clearFocusedCell.bind(this));\n // this.eventService.addEventListener(Events.EVENT_COLUMN_PINNED, this.clearFocusedCell.bind(this));\n // this.eventService.addEventListener(Events.EVENT_COLUMN_VISIBLE, this.clearFocusedCell.bind(this));\n };\n FocusedCellController.prototype.clearFocusedCell = function () {\n this.focusedCellPosition = null;\n this.onCellFocused(false);\n };\n FocusedCellController.prototype.getFocusedCell = function () {\n return this.focusedCellPosition;\n };\n // we check if the browser is focusing something, and if it is, and\n // it's the cell we think is focused, then return the cell. so this\n // methods returns the cell if a) we think it has focus and b) the\n // browser thinks it has focus. this then returns nothing if we\n // first focus a cell, then second click outside the grid, as then the\n // grid cell will still be focused as far as the grid is concerned,\n // however the browser focus will have moved somewhere else.\n FocusedCellController.prototype.getFocusCellToUseAfterRefresh = function () {\n if (this.gridOptionsWrapper.isSuppressFocusAfterRefresh()) {\n return null;\n }\n if (!this.focusedCellPosition) {\n return null;\n }\n // we check that the browser is actually focusing on the grid, if it is not, then\n // we have nothing to worry about\n var browserFocusedCell = this.getGridCellForDomElement(document.activeElement);\n if (!browserFocusedCell) {\n return null;\n }\n return this.focusedCellPosition;\n };\n FocusedCellController.prototype.getGridCellForDomElement = function (eBrowserCell) {\n var ePointer = eBrowserCell;\n while (ePointer) {\n var cellComp = this.gridOptionsWrapper.getDomData(ePointer, CellComp.DOM_DATA_KEY_CELL_COMP);\n if (cellComp) {\n return cellComp.getCellPosition();\n }\n ePointer = ePointer.parentNode;\n }\n return null;\n };\n FocusedCellController.prototype.setFocusedCell = function (rowIndex, colKey, floating, forceBrowserFocus) {\n if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }\n var column = _.makeNull(this.columnController.getGridColumn(colKey));\n this.focusedCellPosition = { rowIndex: rowIndex, rowPinned: _.makeNull(floating), column: column };\n this.onCellFocused(forceBrowserFocus);\n };\n FocusedCellController.prototype.isCellFocused = function (cellPosition) {\n if (_.missing(this.focusedCellPosition)) {\n return false;\n }\n return this.focusedCellPosition.column === cellPosition.column && this.isRowFocused(cellPosition.rowIndex, cellPosition.rowPinned);\n };\n FocusedCellController.prototype.isRowNodeFocused = function (rowNode) {\n return this.isRowFocused(rowNode.rowIndex, rowNode.rowPinned);\n };\n FocusedCellController.prototype.isAnyCellFocused = function () {\n return !!this.focusedCellPosition;\n };\n FocusedCellController.prototype.isRowFocused = function (rowIndex, floating) {\n if (_.missing(this.focusedCellPosition)) {\n return false;\n }\n var floatingOrNull = _.makeNull(floating);\n return this.focusedCellPosition.rowIndex === rowIndex && this.focusedCellPosition.rowPinned === floatingOrNull;\n };\n FocusedCellController.prototype.onCellFocused = function (forceBrowserFocus) {\n var event = {\n type: Events.EVENT_CELL_FOCUSED,\n forceBrowserFocus: forceBrowserFocus,\n rowIndex: null,\n column: null,\n floating: null,\n api: this.gridApi,\n columnApi: this.columnApi,\n rowPinned: null\n };\n if (this.focusedCellPosition) {\n event.rowIndex = this.focusedCellPosition.rowIndex;\n event.column = this.focusedCellPosition.column;\n event.rowPinned = this.focusedCellPosition.rowPinned;\n }\n this.eventService.dispatchEvent(event);\n };\n __decorate([\n Autowired('eventService')\n ], FocusedCellController.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], FocusedCellController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], FocusedCellController.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('columnApi')\n ], FocusedCellController.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], FocusedCellController.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], FocusedCellController.prototype, \"init\", null);\n FocusedCellController = __decorate([\n Bean('focusedCellController')\n ], FocusedCellController);\n return FocusedCellController;\n}());\nexport { FocusedCellController };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Bean, PostConstruct } from \"../context/context\";\nimport { Autowired } from \"../context/context\";\nimport { NumberSequence, _ } from '../utils';\nvar MouseEventService = /** @class */ (function () {\n function MouseEventService() {\n this.gridInstanceId = MouseEventService_1.gridInstanceSequence.next();\n }\n MouseEventService_1 = MouseEventService;\n MouseEventService.prototype.init = function () {\n this.stampDomElementWithGridInstance();\n };\n // we put the instance id onto the main DOM element. this is used for events, when grids are inside grids,\n // so the grid can work out if the even came from this grid or a grid inside this one. see the ctrl+v logic\n // for where this is used.\n MouseEventService.prototype.stampDomElementWithGridInstance = function () {\n this.eGridDiv[MouseEventService_1.GRID_DOM_KEY] = this.gridInstanceId;\n };\n MouseEventService.prototype.getRenderedCellForEvent = function (event) {\n return _.getCellCompForEvent(this.gridOptionsWrapper, event);\n };\n // walks the path of the event, and returns true if this grid is the first one that it finds. if doing\n // master / detail grids, and a child grid is found, then it returns false. this stops things like copy/paste\n // getting executed on many grids at the same time.\n MouseEventService.prototype.isEventFromThisGrid = function (event) {\n var path = _.getEventPath(event);\n for (var i = 0; i < path.length; i++) {\n var element = path[i];\n var instanceId = element[MouseEventService_1.GRID_DOM_KEY];\n if (_.exists(instanceId)) {\n var eventFromThisGrid = instanceId === this.gridInstanceId;\n return eventFromThisGrid;\n }\n }\n return false;\n };\n MouseEventService.prototype.getCellPositionForEvent = function (event) {\n var cellComp = this.getRenderedCellForEvent(event);\n return cellComp ? cellComp.getCellPosition() : null;\n };\n var MouseEventService_1;\n MouseEventService.gridInstanceSequence = new NumberSequence();\n MouseEventService.GRID_DOM_KEY = '__ag_grid_instance';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], MouseEventService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('eGridDiv')\n ], MouseEventService.prototype, \"eGridDiv\", void 0);\n __decorate([\n PostConstruct\n ], MouseEventService.prototype, \"init\", null);\n MouseEventService = MouseEventService_1 = __decorate([\n Bean('mouseEventService')\n ], MouseEventService);\n return MouseEventService;\n}());\nexport { MouseEventService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean } from \"./context/context\";\nimport { Constants } from \"./constants\";\nimport { _ } from \"./utils\";\nvar CellNavigationService = /** @class */ (function () {\n function CellNavigationService() {\n }\n // returns null if no cell to focus on, ie at the end of the grid\n CellNavigationService.prototype.getNextCellToFocus = function (key, lastCellToFocus) {\n // starting with the provided cell, we keep moving until we find a cell we can\n // focus on.\n var pointer = lastCellToFocus;\n var finished = false;\n // finished will be true when either:\n // a) cell found that we can focus on\n // b) run out of cells (ie the method returns null)\n while (!finished) {\n switch (key) {\n case Constants.KEY_UP:\n pointer = this.getCellAbove(pointer);\n break;\n case Constants.KEY_DOWN:\n pointer = this.getCellBelow(pointer);\n break;\n case Constants.KEY_RIGHT:\n if (this.gridOptionsWrapper.isEnableRtl()) {\n pointer = this.getCellToLeft(pointer);\n }\n else {\n pointer = this.getCellToRight(pointer);\n }\n break;\n case Constants.KEY_LEFT:\n if (this.gridOptionsWrapper.isEnableRtl()) {\n pointer = this.getCellToRight(pointer);\n }\n else {\n pointer = this.getCellToLeft(pointer);\n }\n break;\n default:\n pointer = null;\n console.warn('ag-Grid: unknown key for navigation ' + key);\n break;\n }\n if (pointer) {\n finished = this.isCellGoodToFocusOn(pointer);\n }\n else {\n finished = true;\n }\n }\n return pointer;\n };\n CellNavigationService.prototype.isCellGoodToFocusOn = function (gridCell) {\n var column = gridCell.column;\n var rowNode;\n switch (gridCell.rowPinned) {\n case Constants.PINNED_TOP:\n rowNode = this.pinnedRowModel.getPinnedTopRow(gridCell.rowIndex);\n break;\n case Constants.PINNED_BOTTOM:\n rowNode = this.pinnedRowModel.getPinnedBottomRow(gridCell.rowIndex);\n break;\n default:\n rowNode = this.rowModel.getRow(gridCell.rowIndex);\n break;\n }\n var suppressNavigable = column.isSuppressNavigable(rowNode);\n return !suppressNavigable;\n };\n CellNavigationService.prototype.getCellToLeft = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var colToLeft = this.columnController.getDisplayedColBefore(lastCell.column);\n if (!colToLeft) {\n return null;\n }\n return {\n rowIndex: lastCell.rowIndex,\n column: colToLeft,\n rowPinned: lastCell.rowPinned\n };\n };\n CellNavigationService.prototype.getCellToRight = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var colToRight = this.columnController.getDisplayedColAfter(lastCell.column);\n // if already on right, do nothing\n if (!colToRight) {\n return null;\n }\n return {\n rowIndex: lastCell.rowIndex,\n column: colToRight,\n rowPinned: lastCell.rowPinned\n };\n };\n CellNavigationService.prototype.getRowBelow = function (rowPosition) {\n // if already on top row, do nothing\n var index = rowPosition.rowIndex;\n var pinned = rowPosition.rowPinned;\n if (this.isLastRowInContainer(rowPosition)) {\n switch (pinned) {\n case Constants.PINNED_BOTTOM:\n // never any rows after pinned bottom\n return null;\n case Constants.PINNED_TOP:\n // if on last row of pinned top, then next row is main body (if rows exist),\n // otherwise it's the pinned bottom\n if (this.rowModel.isRowsToRender()) {\n return { rowIndex: 0, rowPinned: null };\n }\n else if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_BOTTOM)) {\n return { rowIndex: 0, rowPinned: Constants.PINNED_BOTTOM };\n }\n return null;\n default:\n // if in the main body, then try pinned bottom, otherwise return nothing\n if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_BOTTOM)) {\n return { rowIndex: 0, rowPinned: Constants.PINNED_BOTTOM };\n }\n return null;\n }\n }\n return { rowIndex: index + 1, rowPinned: pinned };\n };\n CellNavigationService.prototype.getCellBelow = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var rowBelow = this.getRowBelow(lastCell);\n if (rowBelow) {\n return {\n rowIndex: rowBelow.rowIndex,\n column: lastCell.column,\n rowPinned: rowBelow.rowPinned\n };\n }\n return null;\n };\n CellNavigationService.prototype.isLastRowInContainer = function (rowPosition) {\n var pinned = rowPosition.rowPinned;\n var index = rowPosition.rowIndex;\n if (pinned === Constants.PINNED_TOP) {\n var lastTopIndex = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n return lastTopIndex <= index;\n }\n else if (pinned === Constants.PINNED_BOTTOM) {\n var lastBottomIndex = this.pinnedRowModel.getPinnedBottomRowData().length - 1;\n return lastBottomIndex <= index;\n }\n var lastBodyIndex = this.rowModel.getRowCount() - 1;\n return lastBodyIndex <= index;\n };\n CellNavigationService.prototype.getRowAbove = function (rowPosition) {\n // if already on top row, do nothing\n var index = rowPosition.rowIndex;\n var pinned = rowPosition.rowPinned;\n // if already on top row, do nothing\n if (index === 0) {\n if (pinned === Constants.PINNED_TOP) {\n return null;\n }\n else if (!pinned) {\n if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_TOP)) {\n return this.getLastFloatingTopRow();\n }\n return null;\n }\n else {\n // last floating bottom\n if (this.rowModel.isRowsToRender()) {\n return this.getLastBodyCell();\n }\n else if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_TOP)) {\n return this.getLastFloatingTopRow();\n }\n return null;\n }\n }\n return { rowIndex: index - 1, rowPinned: pinned };\n };\n CellNavigationService.prototype.getCellAbove = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var rowAbove = this.getRowAbove({ rowIndex: lastCell.rowIndex, rowPinned: lastCell.rowPinned });\n if (rowAbove) {\n return {\n rowIndex: rowAbove.rowIndex,\n column: lastCell.column,\n rowPinned: rowAbove.rowPinned\n };\n }\n return null;\n };\n CellNavigationService.prototype.getLastBodyCell = function () {\n var lastBodyRow = this.rowModel.getRowCount() - 1;\n return { rowIndex: lastBodyRow, rowPinned: null };\n };\n CellNavigationService.prototype.getLastFloatingTopRow = function () {\n var lastFloatingRow = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n return { rowIndex: lastFloatingRow, rowPinned: Constants.PINNED_TOP };\n };\n CellNavigationService.prototype.getNextTabbedCell = function (gridCell, backwards) {\n if (backwards) {\n return this.getNextTabbedCellBackwards(gridCell);\n }\n return this.getNextTabbedCellForwards(gridCell);\n };\n CellNavigationService.prototype.getNextTabbedCellForwards = function (gridCell) {\n var displayedColumns = this.columnController.getAllDisplayedColumns();\n var newRowIndex = gridCell.rowIndex;\n var newFloating = gridCell.rowPinned;\n // move along to the next cell\n var newColumn = this.columnController.getDisplayedColAfter(gridCell.column);\n // check if end of the row, and if so, go forward a row\n if (!newColumn) {\n newColumn = displayedColumns[0];\n var rowBelow = this.getRowBelow(gridCell);\n if (_.missing(rowBelow)) {\n return null;\n }\n newRowIndex = rowBelow ? rowBelow.rowIndex : null;\n newFloating = rowBelow ? rowBelow.rowPinned : null;\n }\n return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };\n };\n CellNavigationService.prototype.getNextTabbedCellBackwards = function (gridCell) {\n var displayedColumns = this.columnController.getAllDisplayedColumns();\n var newRowIndex = gridCell.rowIndex;\n var newFloating = gridCell.rowPinned;\n // move along to the next cell\n var newColumn = this.columnController.getDisplayedColBefore(gridCell.column);\n // check if end of the row, and if so, go forward a row\n if (!newColumn) {\n newColumn = _.last(displayedColumns);\n var rowAbove = this.getRowAbove({ rowIndex: gridCell.rowIndex, rowPinned: gridCell.rowPinned });\n if (_.missing(rowAbove)) {\n return null;\n }\n newRowIndex = rowAbove ? rowAbove.rowIndex : null;\n newFloating = rowAbove ? rowAbove.rowPinned : null;\n }\n return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };\n };\n __decorate([\n Autowired('columnController')\n ], CellNavigationService.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('rowModel')\n ], CellNavigationService.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], CellNavigationService.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], CellNavigationService.prototype, \"gridOptionsWrapper\", void 0);\n CellNavigationService = __decorate([\n Bean('cellNavigationService')\n ], CellNavigationService);\n return CellNavigationService;\n}());\nexport { CellNavigationService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Bean, PostConstruct, Autowired } from \"../context/context\";\nimport { AnimateSlideCellRenderer } from \"./cellRenderers/animateSlideCellRenderer\";\nimport { AnimateShowChangeCellRenderer } from \"./cellRenderers/animateShowChangeCellRenderer\";\nimport { GroupCellRenderer } from \"./cellRenderers/groupCellRenderer\";\nimport { _ } from '../utils';\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRendererMap = {};\n }\n CellRendererFactory_1 = CellRendererFactory;\n CellRendererFactory.prototype.init = function () {\n this.cellRendererMap[CellRendererFactory_1.ANIMATE_SLIDE] = AnimateSlideCellRenderer;\n this.cellRendererMap[CellRendererFactory_1.ANIMATE_SHOW_CHANGE] = AnimateShowChangeCellRenderer;\n this.cellRendererMap[CellRendererFactory_1.GROUP] = GroupCellRenderer;\n // this.registerRenderersFromGridOptions();\n };\n // private registerRenderersFromGridOptions(): void {\n // let userProvidedCellRenderers = this.gridOptionsWrapper.getCellRenderers();\n // _.iterateObject(userProvidedCellRenderers, (key: string, cellRenderer: {new(): ICellRenderer} | ICellRendererFunc)=> {\n // this.addCellRenderer(key, cellRenderer);\n // });\n // }\n CellRendererFactory.prototype.addCellRenderer = function (key, cellRenderer) {\n this.cellRendererMap[key] = cellRenderer;\n };\n CellRendererFactory.prototype.getCellRenderer = function (key) {\n var result = this.cellRendererMap[key];\n if (_.missing(result)) {\n console.warn('ag-Grid: unable to find cellRenderer for key ' + key);\n return null;\n }\n return result;\n };\n var CellRendererFactory_1;\n CellRendererFactory.ANIMATE_SLIDE = 'animateSlide';\n CellRendererFactory.ANIMATE_SHOW_CHANGE = 'animateShowChange';\n CellRendererFactory.GROUP = 'group';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], CellRendererFactory.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('expressionService')\n ], CellRendererFactory.prototype, \"expressionService\", void 0);\n __decorate([\n Autowired('eventService')\n ], CellRendererFactory.prototype, \"eventService\", void 0);\n __decorate([\n PostConstruct\n ], CellRendererFactory.prototype, \"init\", null);\n CellRendererFactory = CellRendererFactory_1 = __decorate([\n Bean('cellRendererFactory')\n ], CellRendererFactory);\n return CellRendererFactory;\n}());\nexport { CellRendererFactory };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Bean, Autowired } from \"../context/context\";\nvar ValueFormatterService = /** @class */ (function () {\n function ValueFormatterService() {\n }\n ValueFormatterService.prototype.formatValue = function (column, rowNode, $scope, value) {\n var formatter;\n var colDef = column.getColDef();\n // if floating, give preference to the floating formatter\n if (rowNode && rowNode.rowPinned) {\n formatter = colDef.pinnedRowValueFormatter ? colDef.pinnedRowValueFormatter : colDef.valueFormatter;\n }\n else {\n formatter = colDef.valueFormatter;\n }\n var result = null;\n if (formatter) {\n var params = {\n value: value,\n node: rowNode,\n data: rowNode ? rowNode.data : null,\n colDef: column.getColDef(),\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n // originally we put the angular 1 scope here, but we don't want the scope\n // in the params interface, as other frameworks will see the interface, and\n // angular 1 is not cool any more. so we hack the scope in here (we cannot\n // include it above, as it's not in the interface, so would cause a compile error).\n // in the future, when we stop supporting angular 1, we can take this out.\n params.$scope = $scope;\n result = this.expressionService.evaluate(formatter, params);\n }\n else if (colDef.refData) {\n return colDef.refData[value] || '';\n }\n // if we don't do this, then arrays get displayed as 1,2,3, but we want 1, 2, 3 (ie with spaces)\n if ((result === null || result === undefined) && Array.isArray(value)) {\n result = value.join(', ');\n }\n return result;\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ValueFormatterService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('expressionService')\n ], ValueFormatterService.prototype, \"expressionService\", void 0);\n ValueFormatterService = __decorate([\n Bean('valueFormatterService')\n ], ValueFormatterService);\n return ValueFormatterService;\n}());\nexport { ValueFormatterService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/** The base frameworks, eg React & Angular 2, override this bean with implementations specific to their requirement. */\nvar VanillaFrameworkOverrides = /** @class */ (function () {\n function VanillaFrameworkOverrides() {\n }\n // for Vanilla JS, we use simple timeout\n VanillaFrameworkOverrides.prototype.setTimeout = function (action, timeout) {\n window.setTimeout(action, timeout);\n };\n // for Vanilla JS, we just add the event to the element\n VanillaFrameworkOverrides.prototype.addEventListenerOutsideAngular = function (element, type, listener, useCapture) {\n element.addEventListener(type, listener, useCapture);\n };\n return VanillaFrameworkOverrides;\n}());\nexport { VanillaFrameworkOverrides };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Bean, Autowired } from \"../context/context\";\nimport { Events } from \"../events\";\nvar ScrollVisibleService = /** @class */ (function () {\n function ScrollVisibleService() {\n }\n ScrollVisibleService.prototype.setScrollsVisible = function (params) {\n var atLeastOneDifferent = this.horizontalScrollShowing !== params.horizontalScrollShowing ||\n this.verticalScrollShowing !== params.verticalScrollShowing;\n if (atLeastOneDifferent) {\n this.horizontalScrollShowing = params.horizontalScrollShowing;\n this.verticalScrollShowing = params.verticalScrollShowing;\n var event_1 = {\n type: Events.EVENT_SCROLL_VISIBILITY_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n // used by pagination service - to know page height\n ScrollVisibleService.prototype.isHorizontalScrollShowing = function () {\n return this.horizontalScrollShowing;\n };\n // used by header container\n ScrollVisibleService.prototype.isVerticalScrollShowing = function () {\n return this.verticalScrollShowing;\n };\n __decorate([\n Autowired('eventService')\n ], ScrollVisibleService.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnController')\n ], ScrollVisibleService.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ScrollVisibleService.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ScrollVisibleService.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ScrollVisibleService.prototype, \"gridOptionsWrapper\", void 0);\n ScrollVisibleService = __decorate([\n Bean('scrollVisibleService')\n ], ScrollVisibleService);\n return ScrollVisibleService;\n}());\nexport { ScrollVisibleService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean } from \"../context/context\";\nvar StylingService = /** @class */ (function () {\n function StylingService() {\n }\n StylingService.prototype.processAllCellClasses = function (colDef, params, onApplicableClass, onNotApplicableClass) {\n this.processClassRules(colDef.cellClassRules, params, onApplicableClass, onNotApplicableClass);\n this.processStaticCellClasses(colDef, params, onApplicableClass);\n };\n StylingService.prototype.processClassRules = function (classRules, params, onApplicableClass, onNotApplicableClass) {\n if (typeof classRules === 'object' && classRules !== null) {\n var classNames = Object.keys(classRules);\n for (var i = 0; i < classNames.length; i++) {\n var className = classNames[i];\n var rule = classRules[className];\n var resultOfRule = void 0;\n if (typeof rule === 'string') {\n resultOfRule = this.expressionService.evaluate(rule, params);\n }\n else if (typeof rule === 'function') {\n resultOfRule = rule(params);\n }\n if (resultOfRule) {\n onApplicableClass(className);\n }\n else if (onNotApplicableClass) {\n onNotApplicableClass(className);\n }\n }\n }\n };\n StylingService.prototype.processStaticCellClasses = function (colDef, params, onApplicableClass) {\n var cellClass = colDef.cellClass;\n if (cellClass) {\n var classOrClasses = void 0;\n if (typeof colDef.cellClass === 'function') {\n var cellClassFunc = colDef.cellClass;\n classOrClasses = cellClassFunc(params);\n }\n else {\n classOrClasses = colDef.cellClass;\n }\n if (typeof classOrClasses === 'string') {\n onApplicableClass(classOrClasses);\n }\n else if (Array.isArray(classOrClasses)) {\n classOrClasses.forEach(function (cssClassItem) {\n onApplicableClass(cssClassItem);\n });\n }\n }\n };\n __decorate([\n Autowired('expressionService')\n ], StylingService.prototype, \"expressionService\", void 0);\n StylingService = __decorate([\n Bean('stylingService')\n ], StylingService);\n return StylingService;\n}());\nexport { StylingService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { BeanStub } from \"../context/beanStub\";\nimport { Events } from \"../events\";\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { _ } from \"../utils\";\nvar PaginationProxy = /** @class */ (function (_super) {\n __extends(PaginationProxy, _super);\n function PaginationProxy() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.currentPage = 0;\n _this.topDisplayedRowIndex = 0;\n _this.bottomDisplayedRowIndex = 0;\n _this.pixelOffset = 0;\n _this.masterRowCount = 0;\n return _this;\n }\n PaginationProxy.prototype.postConstruct = function () {\n this.active = this.gridOptionsWrapper.isPagination();\n this.paginateChildRows = this.gridOptionsWrapper.isPaginateChildRows();\n this.addDestroyableEventListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, 'paginationPageSize', this.onModelUpdated.bind(this));\n this.onModelUpdated();\n };\n PaginationProxy.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n var res = this.rowModel.ensureRowHeightsValid(startPixel, endPixel, this.getPageFirstRow(), this.getPageLastRow());\n if (res) {\n this.calculatePages();\n }\n return res;\n };\n PaginationProxy.prototype.onModelUpdated = function (modelUpdatedEvent) {\n this.calculatePages();\n var paginationChangedEvent = {\n type: Events.EVENT_PAGINATION_CHANGED,\n animate: modelUpdatedEvent ? modelUpdatedEvent.animate : false,\n newData: modelUpdatedEvent ? modelUpdatedEvent.newData : false,\n newPage: modelUpdatedEvent ? modelUpdatedEvent.newPage : false,\n keepRenderedRows: modelUpdatedEvent ? modelUpdatedEvent.keepRenderedRows : false,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(paginationChangedEvent);\n };\n PaginationProxy.prototype.goToPage = function (page) {\n if (!this.active) {\n return;\n }\n if (this.currentPage === page) {\n return;\n }\n this.currentPage = page;\n var event = {\n type: Events.EVENT_MODEL_UPDATED,\n animate: false,\n keepRenderedRows: false,\n newData: false,\n newPage: true,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.onModelUpdated(event);\n };\n PaginationProxy.prototype.getPixelOffset = function () {\n return this.pixelOffset;\n };\n PaginationProxy.prototype.getRow = function (index) {\n return this.rowModel.getRow(index);\n };\n PaginationProxy.prototype.getRowNode = function (id) {\n return this.rowModel.getRowNode(id);\n };\n PaginationProxy.prototype.getRowIndexAtPixel = function (pixel) {\n return this.rowModel.getRowIndexAtPixel(pixel);\n };\n PaginationProxy.prototype.getCurrentPageHeight = function () {\n if (_.missing(this.topRowBounds) || _.missing(this.bottomRowBounds)) {\n return 0;\n }\n return Math.max(this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight - this.topRowBounds.rowTop, 0);\n };\n PaginationProxy.prototype.isRowPresent = function (rowNode) {\n if (!this.rowModel.isRowPresent(rowNode)) {\n return false;\n }\n var nodeIsInPage = rowNode.rowIndex >= this.topDisplayedRowIndex && rowNode.rowIndex <= this.bottomDisplayedRowIndex;\n return nodeIsInPage;\n };\n PaginationProxy.prototype.isEmpty = function () {\n return this.rowModel.isEmpty();\n };\n PaginationProxy.prototype.isRowsToRender = function () {\n return this.rowModel.isRowsToRender();\n };\n PaginationProxy.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n return this.rowModel.getNodesInRangeForSelection(firstInRange, lastInRange);\n };\n PaginationProxy.prototype.forEachNode = function (callback) {\n return this.rowModel.forEachNode(callback);\n };\n PaginationProxy.prototype.getType = function () {\n return this.rowModel.getType();\n };\n PaginationProxy.prototype.getRowBounds = function (index) {\n var res = this.rowModel.getRowBounds(index);\n res.rowIndex = index;\n return res;\n };\n PaginationProxy.prototype.getPageFirstRow = function () {\n return this.topRowBounds ? this.topRowBounds.rowIndex : -1;\n };\n PaginationProxy.prototype.getPageLastRow = function () {\n return this.bottomRowBounds ? this.bottomRowBounds.rowIndex : -1;\n };\n PaginationProxy.prototype.getRowCount = function () {\n return this.rowModel.getRowCount();\n };\n PaginationProxy.prototype.goToPageWithIndex = function (index) {\n if (!this.active) {\n return;\n }\n var pageNumber = Math.floor(index / this.pageSize);\n this.goToPage(pageNumber);\n };\n PaginationProxy.prototype.isLastPageFound = function () {\n return this.rowModel.isLastRowFound();\n };\n PaginationProxy.prototype.getCurrentPage = function () {\n return this.currentPage;\n };\n PaginationProxy.prototype.goToNextPage = function () {\n this.goToPage(this.currentPage + 1);\n };\n PaginationProxy.prototype.goToPreviousPage = function () {\n this.goToPage(this.currentPage - 1);\n };\n PaginationProxy.prototype.goToFirstPage = function () {\n this.goToPage(0);\n };\n PaginationProxy.prototype.goToLastPage = function () {\n var rowCount = this.rowModel.getRowCount();\n var lastPage = Math.floor(rowCount / this.pageSize);\n this.goToPage(lastPage);\n };\n PaginationProxy.prototype.getPageSize = function () {\n return this.pageSize;\n };\n PaginationProxy.prototype.getTotalPages = function () {\n return this.totalPages;\n };\n PaginationProxy.prototype.setPageSize = function () {\n // show put this into super class\n this.pageSize = this.gridOptionsWrapper.getPaginationPageSize();\n if (!(this.pageSize >= 1)) {\n this.pageSize = 100;\n }\n };\n PaginationProxy.prototype.calculatePages = function () {\n if (this.active) {\n this.setPageSize();\n if (this.paginateChildRows) {\n this.calculatePagesAllRows();\n }\n else {\n this.calculatePagesMasterRowsOnly();\n }\n }\n else {\n this.calculatedPagesNotActive();\n }\n this.topRowBounds = this.rowModel.getRowBounds(this.topDisplayedRowIndex);\n if (this.topRowBounds) {\n this.topRowBounds.rowIndex = this.topDisplayedRowIndex;\n }\n this.bottomRowBounds = this.rowModel.getRowBounds(this.bottomDisplayedRowIndex);\n if (this.bottomRowBounds) {\n this.bottomRowBounds.rowIndex = this.bottomDisplayedRowIndex;\n }\n this.pixelOffset = _.exists(this.topRowBounds) ? this.topRowBounds.rowTop : 0;\n };\n PaginationProxy.prototype.setZeroRows = function () {\n this.topDisplayedRowIndex = 0;\n this.bottomDisplayedRowIndex = -1;\n this.currentPage = 0;\n this.totalPages = 0;\n };\n PaginationProxy.prototype.calculatePagesMasterRowsOnly = function () {\n // const csrm = this.rowModel;\n // const rootNode = csrm.getRootNode();\n // const masterRows = rootNode.childrenAfterSort;\n this.masterRowCount = this.rowModel.getTopLevelRowCount();\n if (this.masterRowCount === 0) {\n this.setZeroRows();\n return;\n }\n var masterLastRowIndex = this.masterRowCount - 1;\n this.totalPages = Math.floor((masterLastRowIndex) / this.pageSize) + 1;\n if (this.currentPage >= this.totalPages) {\n this.currentPage = this.totalPages - 1;\n }\n if (!_.isNumeric(this.currentPage) || this.currentPage < 0) {\n this.currentPage = 0;\n }\n var masterPageStartIndex = this.pageSize * this.currentPage;\n var masterPageEndIndex = (this.pageSize * (this.currentPage + 1)) - 1;\n if (masterPageEndIndex > masterLastRowIndex) {\n masterPageEndIndex = masterLastRowIndex;\n }\n this.topDisplayedRowIndex = this.rowModel.getTopLevelRowDisplayedIndex(masterPageStartIndex);\n // masterRows[masterPageStartIndex].rowIndex;\n if (masterPageEndIndex === masterLastRowIndex) {\n // if showing the last master row, then we want to show the very last row of the model\n this.bottomDisplayedRowIndex = this.rowModel.getRowCount() - 1;\n }\n else {\n var firstIndexNotToShow = this.rowModel.getTopLevelRowDisplayedIndex(masterPageEndIndex + 1);\n //masterRows[masterPageEndIndex + 1].rowIndex;\n // this gets the index of the last child - eg current row is open, we want to display all children,\n // the index of the last child is one less than the index of the next parent row.\n this.bottomDisplayedRowIndex = firstIndexNotToShow - 1;\n }\n };\n PaginationProxy.prototype.getMasterRowCount = function () {\n return this.masterRowCount;\n };\n PaginationProxy.prototype.calculatePagesAllRows = function () {\n this.masterRowCount = this.rowModel.getRowCount();\n if (this.masterRowCount === 0) {\n this.setZeroRows();\n return;\n }\n var maxRowIndex = this.masterRowCount - 1;\n this.totalPages = Math.floor((maxRowIndex) / this.pageSize) + 1;\n if (this.currentPage >= this.totalPages) {\n this.currentPage = this.totalPages - 1;\n }\n if (!_.isNumeric(this.currentPage) || this.currentPage < 0) {\n this.currentPage = 0;\n }\n this.topDisplayedRowIndex = this.pageSize * this.currentPage;\n this.bottomDisplayedRowIndex = (this.pageSize * (this.currentPage + 1)) - 1;\n if (this.bottomDisplayedRowIndex > maxRowIndex) {\n this.bottomDisplayedRowIndex = maxRowIndex;\n }\n };\n PaginationProxy.prototype.calculatedPagesNotActive = function () {\n this.pageSize = this.rowModel.getRowCount();\n this.totalPages = 1;\n this.currentPage = 0;\n this.topDisplayedRowIndex = 0;\n this.bottomDisplayedRowIndex = this.rowModel.getRowCount() - 1;\n };\n __decorate([\n Autowired('rowModel')\n ], PaginationProxy.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('eventService')\n ], PaginationProxy.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], PaginationProxy.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('selectionController')\n ], PaginationProxy.prototype, \"selectionController\", void 0);\n __decorate([\n Autowired('columnApi')\n ], PaginationProxy.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], PaginationProxy.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], PaginationProxy.prototype, \"postConstruct\", null);\n PaginationProxy = __decorate([\n Bean('paginationProxy')\n ], PaginationProxy);\n return PaginationProxy;\n}(BeanStub));\nexport { PaginationProxy };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nvar ValueCache = /** @class */ (function () {\n function ValueCache() {\n this.cacheVersion = 0;\n }\n ValueCache.prototype.init = function () {\n this.active = this.gridOptionsWrapper.isValueCache();\n this.neverExpires = this.gridOptionsWrapper.isValueCacheNeverExpires();\n };\n ValueCache.prototype.onDataChanged = function () {\n if (this.neverExpires) {\n return;\n }\n this.expire();\n };\n ValueCache.prototype.expire = function () {\n this.cacheVersion++;\n };\n ValueCache.prototype.setValue = function (rowNode, colId, value) {\n if (this.active) {\n if (rowNode.__cacheVersion !== this.cacheVersion) {\n rowNode.__cacheVersion = this.cacheVersion;\n rowNode.__cacheData = {};\n }\n rowNode.__cacheData[colId] = value;\n }\n };\n ValueCache.prototype.getValue = function (rowNode, colId) {\n if (!this.active || rowNode.__cacheVersion !== this.cacheVersion) {\n return undefined;\n }\n return rowNode.__cacheData[colId];\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ValueCache.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], ValueCache.prototype, \"init\", null);\n ValueCache = __decorate([\n Bean('valueCache')\n ], ValueCache);\n return ValueCache;\n}());\nexport { ValueCache };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Events } from \"./events\";\nimport { Bean } from \"./context/context\";\nimport { Qualifier } from \"./context/context\";\nimport { Autowired } from \"./context/context\";\nimport { PostConstruct } from \"./context/context\";\nvar AlignedGridsService = /** @class */ (function () {\n function AlignedGridsService() {\n // flag to mark if we are consuming. to avoid cyclic events (ie other grid firing back to master\n // while processing a master event) we mark this if consuming an event, and if we are, then\n // we don't fire back any events.\n this.consuming = false;\n }\n AlignedGridsService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('AlignedGridsService');\n };\n AlignedGridsService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n AlignedGridsService.prototype.init = function () {\n this.eventService.addEventListener(Events.EVENT_COLUMN_MOVED, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_VISIBLE, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_PINNED, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_GROUP_OPENED, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_RESIZED, this.fireColumnEvent.bind(this));\n this.eventService.addEventListener(Events.EVENT_BODY_SCROLL, this.fireScrollEvent.bind(this));\n };\n // common logic across all the fire methods\n AlignedGridsService.prototype.fireEvent = function (callback) {\n // if we are already consuming, then we are acting on an event from a master,\n // so we don't cause a cyclic firing of events\n if (this.consuming) {\n return;\n }\n // iterate through the aligned grids, and pass each aligned grid service to the callback\n var otherGrids = this.gridOptionsWrapper.getAlignedGrids();\n if (otherGrids) {\n otherGrids.forEach(function (otherGridOptions) {\n if (otherGridOptions.api) {\n var alignedGridService = otherGridOptions.api.__getAlignedGridService();\n callback(alignedGridService);\n }\n });\n }\n };\n // common logic across all consume methods. very little common logic, however extracting\n // guarantees consistency across the methods.\n AlignedGridsService.prototype.onEvent = function (callback) {\n this.consuming = true;\n callback();\n this.consuming = false;\n };\n AlignedGridsService.prototype.fireColumnEvent = function (event) {\n this.fireEvent(function (alignedGridsService) {\n alignedGridsService.onColumnEvent(event);\n });\n };\n AlignedGridsService.prototype.fireScrollEvent = function (event) {\n if (event.direction !== 'horizontal') {\n return;\n }\n this.fireEvent(function (alignedGridsService) {\n alignedGridsService.onScrollEvent(event);\n });\n };\n AlignedGridsService.prototype.onScrollEvent = function (event) {\n var _this = this;\n this.onEvent(function () {\n _this.gridPanel.setHorizontalScrollPosition(event.left);\n });\n };\n AlignedGridsService.prototype.getMasterColumns = function (event) {\n var result = [];\n if (event.columns) {\n event.columns.forEach(function (column) {\n result.push(column);\n });\n }\n else if (event.column) {\n result.push(event.column);\n }\n return result;\n };\n AlignedGridsService.prototype.getColumnIds = function (event) {\n var result = [];\n if (event.columns) {\n event.columns.forEach(function (column) {\n result.push(column.getColId());\n });\n }\n else if (event.column) {\n result.push(event.column.getColId());\n }\n return result;\n };\n AlignedGridsService.prototype.onColumnEvent = function (event) {\n var _this = this;\n this.onEvent(function () {\n switch (event.type) {\n case Events.EVENT_COLUMN_MOVED:\n case Events.EVENT_COLUMN_VISIBLE:\n case Events.EVENT_COLUMN_PINNED:\n case Events.EVENT_COLUMN_RESIZED:\n var colEvent = event;\n _this.processColumnEvent(colEvent);\n break;\n case Events.EVENT_COLUMN_GROUP_OPENED:\n var groupOpenedEvent = event;\n _this.processGroupOpenedEvent(groupOpenedEvent);\n break;\n case Events.EVENT_COLUMN_PIVOT_CHANGED:\n // we cannot support pivoting with aligned grids as the columns will be out of sync as the\n // grids will have columns created based on the row data of the grid.\n console.warn('ag-Grid: pivoting is not supported with aligned grids. ' +\n 'You can only use one of these features at a time in a grid.');\n break;\n }\n });\n };\n AlignedGridsService.prototype.processGroupOpenedEvent = function (groupOpenedEvent) {\n // likewise for column group\n var masterColumnGroup = groupOpenedEvent.columnGroup;\n var otherColumnGroup;\n if (masterColumnGroup) {\n var groupId = masterColumnGroup.getGroupId();\n otherColumnGroup = this.columnController.getOriginalColumnGroup(groupId);\n }\n if (masterColumnGroup && !otherColumnGroup) {\n return;\n }\n this.logger.log('onColumnEvent-> processing ' + groupOpenedEvent + ' expanded = ' + masterColumnGroup.isExpanded());\n this.columnController.setColumnGroupOpened(otherColumnGroup, masterColumnGroup.isExpanded(), \"alignedGridChanged\");\n };\n AlignedGridsService.prototype.processColumnEvent = function (colEvent) {\n var _this = this;\n // the column in the event is from the master grid. need to\n // look up the equivalent from this (other) grid\n var masterColumn = colEvent.column;\n var otherColumn;\n if (masterColumn) {\n otherColumn = this.columnController.getPrimaryColumn(masterColumn.getColId());\n }\n // if event was with respect to a master column, that is not present in this\n // grid, then we ignore the event\n if (masterColumn && !otherColumn) {\n return;\n }\n // in time, all the methods below should use the column ids, it's a more generic way\n // of handling columns, and also allows for single or multi column events\n var columnIds = this.getColumnIds(colEvent);\n var masterColumns = this.getMasterColumns(colEvent);\n switch (colEvent.type) {\n case Events.EVENT_COLUMN_MOVED:\n var movedEvent = colEvent;\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" toIndex = \" + movedEvent.toIndex);\n this.columnController.moveColumns(columnIds, movedEvent.toIndex, \"alignedGridChanged\");\n break;\n case Events.EVENT_COLUMN_VISIBLE:\n var visibleEvent = colEvent;\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" visible = \" + visibleEvent.visible);\n this.columnController.setColumnsVisible(columnIds, visibleEvent.visible, \"alignedGridChanged\");\n break;\n case Events.EVENT_COLUMN_PINNED:\n var pinnedEvent = colEvent;\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" pinned = \" + pinnedEvent.pinned);\n this.columnController.setColumnsPinned(columnIds, pinnedEvent.pinned, \"alignedGridChanged\");\n break;\n case Events.EVENT_COLUMN_RESIZED:\n var resizedEvent_1 = colEvent;\n masterColumns.forEach(function (column) {\n _this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" actualWidth = \" + column.getActualWidth());\n _this.columnController.setColumnWidth(column.getColId(), column.getActualWidth(), false, resizedEvent_1.finished, \"alignedGridChanged\");\n });\n break;\n }\n var isVerticalScrollShowing = this.gridPanel.isVerticalScrollShowing();\n var alignedGrids = this.gridOptionsWrapper.getAlignedGrids();\n alignedGrids.forEach(function (grid) {\n grid.api.setAlwaysShowVerticalScroll(isVerticalScrollShowing);\n });\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], AlignedGridsService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], AlignedGridsService.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('eventService')\n ], AlignedGridsService.prototype, \"eventService\", void 0);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], AlignedGridsService.prototype, \"setBeans\", null);\n __decorate([\n PostConstruct\n ], AlignedGridsService.prototype, \"init\", null);\n AlignedGridsService = __decorate([\n Bean('alignedGridsService')\n ], AlignedGridsService);\n return AlignedGridsService;\n}());\nexport { AlignedGridsService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Bean, Autowired } from './context/context';\nimport { _ } from \"./utils\";\nvar MAT_GRID_SIZE = 8;\nvar FRESH_GRID_SIZE = 4;\nvar BALHAM_GRID_SIZE = 4;\nvar HARD_CODED_SIZES = {\n 'ag-theme-material': {\n headerHeight: MAT_GRID_SIZE * 7,\n virtualItemHeight: MAT_GRID_SIZE * 5,\n rowHeight: MAT_GRID_SIZE * 6\n },\n 'ag-theme-classic': {\n headerHeight: 25,\n virtualItemHeight: FRESH_GRID_SIZE * 5,\n rowHeight: 25\n },\n 'ag-theme-balham': {\n headerHeight: BALHAM_GRID_SIZE * 8,\n virtualItemHeight: BALHAM_GRID_SIZE * 7,\n rowHeight: BALHAM_GRID_SIZE * 7\n }\n};\n/**\n * this object contains a list of Sass variables and an array\n * of CSS styles required to get the correct value.\n * eg. $virtual-item-height requires a structure, so we can get it's height.\n *
\n *
\n *
\n *
\n */\nvar SASS_PROPERTY_BUILDER = {\n headerHeight: ['ag-header-row'],\n virtualItemHeight: ['ag-virtual-list-container', 'ag-virtual-list-item'],\n rowHeight: ['ag-row']\n};\nvar CALCULATED_SIZES = {};\nvar Environment = /** @class */ (function () {\n function Environment() {\n }\n Environment.prototype.getSassVariable = function (theme, key) {\n var useTheme = 'ag-theme-' + (theme.match('material') ? 'material' : (theme.match('balham') ? 'balham' : 'classic'));\n var defaultValue = HARD_CODED_SIZES[useTheme][key];\n var calculatedValue = 0;\n if (!CALCULATED_SIZES[theme]) {\n CALCULATED_SIZES[theme] = {};\n }\n if (CALCULATED_SIZES[theme][key]) {\n return CALCULATED_SIZES[theme][key];\n }\n if (SASS_PROPERTY_BUILDER[key]) {\n var classList = SASS_PROPERTY_BUILDER[key];\n var div = document.createElement('div');\n var el = classList.reduce(function (el, currentClass, idx) {\n if (idx === 0) {\n _.addCssClass(el, theme);\n }\n var div = document.createElement('div');\n _.addCssClass(div, currentClass);\n el.appendChild(div);\n return div;\n }, div);\n if (document.body) {\n document.body.appendChild(div);\n calculatedValue = parseInt(window.getComputedStyle(el).height, 10);\n document.body.removeChild(div);\n }\n }\n CALCULATED_SIZES[theme][key] = calculatedValue || defaultValue;\n return CALCULATED_SIZES[theme][key];\n };\n Environment.prototype.isThemeDark = function () {\n var theme = this.getTheme().theme;\n return !!theme && theme.indexOf('dark') >= 0;\n };\n Environment.prototype.getTheme = function () {\n var reg = /\\bag-(fresh|dark|blue|material|bootstrap|(?:theme-([\\w\\-]*)))\\b/;\n var el = this.eGridDiv;\n var themeMatch;\n while (el) {\n themeMatch = reg.exec(el.className);\n if (!themeMatch) {\n el = el.parentElement;\n }\n else {\n break;\n }\n }\n if (!themeMatch) {\n return {};\n }\n var theme = themeMatch[0];\n var usingOldTheme = themeMatch[2] === undefined;\n if (usingOldTheme) {\n var newTheme_1 = theme.replace('ag-', 'ag-theme-');\n _.doOnce(function () { return console.warn(\"ag-Grid: As of v19 old theme are no longer provided. Please replace \" + theme + \" with \" + newTheme_1 + \".\"); }, 'using-old-theme');\n }\n return { theme: theme, el: el };\n };\n __decorate([\n Autowired('eGridDiv')\n ], Environment.prototype, \"eGridDiv\", void 0);\n Environment = __decorate([\n Bean('environment')\n ], Environment);\n return Environment;\n}());\nexport { Environment };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { _ } from \"../utils\";\nvar SelectableService = /** @class */ (function () {\n function SelectableService() {\n }\n SelectableService.prototype.init = function () {\n this.groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n this.isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();\n };\n SelectableService.prototype.updateSelectableAfterGrouping = function (rowNode) {\n if (this.isRowSelectableFunc) {\n var nextChildrenFunc = function (rowNode) { return rowNode.childrenAfterGroup; };\n this.recurseDown(rowNode.childrenAfterGroup, nextChildrenFunc);\n }\n };\n SelectableService.prototype.updateSelectableAfterFiltering = function (rowNode) {\n if (this.isRowSelectableFunc) {\n var nextChildrenFunc = function (rowNode) { return rowNode.childrenAfterFilter; };\n this.recurseDown(rowNode.childrenAfterGroup, nextChildrenFunc);\n }\n };\n SelectableService.prototype.recurseDown = function (children, nextChildrenFunc) {\n var _this = this;\n children.forEach(function (child) {\n if (!child.group) {\n return;\n } // only interested in groups\n if (child.hasChildren()) {\n _this.recurseDown(nextChildrenFunc(child), nextChildrenFunc);\n }\n var rowSelectable;\n if (_this.groupSelectsChildren) {\n // have this group selectable if at least one direct child is selectable\n var firstSelectable = _.find(nextChildrenFunc(child), 'selectable', true);\n rowSelectable = _.exists(firstSelectable);\n }\n else {\n // directly retrieve selectable value from user callback\n rowSelectable = _this.isRowSelectableFunc ? _this.isRowSelectableFunc(child) : false;\n }\n child.setRowSelectable(rowSelectable);\n });\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], SelectableService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], SelectableService.prototype, \"init\", null);\n SelectableService = __decorate([\n Bean('selectableService')\n ], SelectableService);\n return SelectableService;\n}());\nexport { SelectableService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean } from \"../context/context\";\nimport { _ } from \"../utils\";\nvar ResizeObserverService = /** @class */ (function () {\n function ResizeObserverService() {\n }\n ResizeObserverService.prototype.observeResize = function (element, callback, debounceDelay) {\n if (debounceDelay === void 0) { debounceDelay = 50; }\n // put in variable, so available to usePolyfill() function below\n var frameworkFactory = this.frameworkOverrides;\n // this gets fired too often and might cause some relayout issues\n // so we add a debounce to the callback here to avoid the flashing effect.\n var debouncedCallback = _.debounce(callback, debounceDelay);\n var useBrowserResizeObserver = function () {\n var resizeObserver = new window.ResizeObserver(debouncedCallback);\n resizeObserver.observe(element);\n return function () { return resizeObserver.disconnect(); };\n };\n var usePolyfill = function () {\n // initialise to the current width and height, so first call will have no changes\n var widthLastTime = _.offsetWidth(element);\n var heightLastTime = _.offsetHeight(element);\n // when finished, this gets turned to false.\n var running = true;\n var periodicallyCheckWidthAndHeight = function () {\n if (running) {\n var newWidth = _.offsetWidth(element);\n var newHeight = _.offsetHeight(element);\n var changed = newWidth !== widthLastTime || newHeight !== heightLastTime;\n if (changed) {\n widthLastTime = newWidth;\n heightLastTime = newHeight;\n callback();\n }\n frameworkFactory.setTimeout(periodicallyCheckWidthAndHeight, debounceDelay);\n }\n };\n periodicallyCheckWidthAndHeight();\n // the callback function we return sets running to false\n return function () { return running = false; };\n };\n var suppressResize = this.gridOptionsWrapper.isSuppressBrowserResizeObserver();\n var resizeObserverExists = !!window.ResizeObserver;\n if (resizeObserverExists && !suppressResize) {\n return useBrowserResizeObserver();\n }\n else {\n return usePolyfill();\n }\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ResizeObserverService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('frameworkOverrides')\n ], ResizeObserverService.prototype, \"frameworkOverrides\", void 0);\n ResizeObserverService = __decorate([\n Bean('resizeObserverService')\n ], ResizeObserverService);\n return ResizeObserverService;\n}());\nexport { ResizeObserverService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, Bean } from \"../context/context\";\nimport { _ } from \"../utils\";\nvar TooltipManager = /** @class */ (function () {\n function TooltipManager() {\n this.DEFAULT_HIDE_TOOLTIP_TIMEOUT = 10000;\n this.MOUSEOUT_HIDE_TOOLTIP_TIMEOUT = 1000;\n this.MOUSEOVER_SHOW_TOOLTIP_TIMEOUT = 2000;\n this.HIDE_SHOW_ONLY = true;\n this.showTimeoutId = 0;\n this.hideTimeoutId = 0;\n // map of compId to [tooltip component, close function]\n this.registeredComponents = {};\n }\n TooltipManager.prototype.registerTooltip = function (targetCmp) {\n var _this = this;\n var el = targetCmp.getGui();\n var id = targetCmp.getCompId();\n this.registeredComponents[id] = {\n tooltipComp: undefined,\n destroyFunc: undefined,\n eventDestroyFuncs: [\n targetCmp.addDestroyableEventListener(el, 'mouseover', function (e) { return _this.processMouseOver(e, targetCmp); }),\n targetCmp.addDestroyableEventListener(el, 'mousemove', function (e) { return _this.processMouseMove(e); }),\n targetCmp.addDestroyableEventListener(el, 'mousedown', this.hideTooltip.bind(this)),\n targetCmp.addDestroyableEventListener(el, 'mouseout', this.processMouseOut.bind(this))\n ]\n };\n targetCmp.addDestroyFunc(function () { return _this.unregisterTooltip(targetCmp); });\n };\n TooltipManager.prototype.unregisterTooltip = function (targetCmp) {\n var id = targetCmp.getCompId();\n var registeredComponent = this.registeredComponents[id];\n // hide the tooltip if it's being displayed while unregistering the component\n if (this.activeComponent === targetCmp) {\n this.hideTooltip();\n }\n if (targetCmp.isAlive() && registeredComponent && registeredComponent.eventDestroyFuncs.length) {\n registeredComponent.eventDestroyFuncs.forEach(function (func) { return func(); });\n }\n delete this.registeredComponents[id];\n };\n TooltipManager.prototype.processMouseOver = function (e, targetCmp) {\n var delay = this.MOUSEOVER_SHOW_TOOLTIP_TIMEOUT;\n if (this.activeComponent) {\n // lastHoveredComponent will be the activeComponent when we are hovering\n // a component with many child elements like the grid header\n if (this.lastHoveredComponent === this.activeComponent) {\n return;\n }\n delay = 200;\n }\n else if (this.showTimeoutId && this.lastHoveredComponent === targetCmp) {\n return;\n }\n this.clearTimers(this.HIDE_SHOW_ONLY);\n // lastHoveredComponent will be the targetCmp when a click hid the tooltip\n // and the lastHoveredComponent has many child elements\n if (this.lastHoveredComponent === targetCmp) {\n return;\n }\n this.lastHoveredComponent = targetCmp;\n this.lastMouseEvent = e;\n this.showTimeoutId = window.setTimeout(this.showTooltip.bind(this), delay, e);\n };\n TooltipManager.prototype.processMouseOut = function (e) {\n var activeComponent = this.activeComponent;\n var relatedTarget = e.relatedTarget;\n if (!activeComponent) {\n if (this.lastHoveredComponent) {\n var containsElement = this.lastHoveredComponent.getGui().contains(relatedTarget);\n if (this.showTimeoutId && containsElement) {\n // if we are hovering within a component with multiple child elements before\n // the tooltip has been displayed, we should cancel this event\n return;\n }\n else if (!containsElement) {\n // when a click hides the tooltip we need to reset the lastHoveredComponent\n // otherwise the tooltip won't appear until another registered component is hovered.\n this.lastHoveredComponent = undefined;\n }\n }\n this.clearTimers();\n return;\n }\n // the mouseout was called from within the activeComponent so we do nothing\n if (activeComponent.getGui().contains(relatedTarget)) {\n return;\n }\n var registeredComponent = this.registeredComponents[activeComponent.getCompId()];\n _.addCssClass(registeredComponent.tooltipComp.getGui(), 'ag-tooltip-hiding');\n this.lastHoveredComponent = undefined;\n this.clearTimers();\n this.hideTimeoutId = window.setTimeout(this.hideTooltip.bind(this), this.MOUSEOUT_HIDE_TOOLTIP_TIMEOUT);\n };\n TooltipManager.prototype.processMouseMove = function (e) {\n // there is a delay from the time we mouseOver a component and the time the\n // tooltip is displayed, so we need to track mousemove to be able to correctly\n // position the tooltip when showTooltip is called.\n this.lastMouseEvent = e;\n };\n TooltipManager.prototype.showTooltip = function (e) {\n var targetCmp = this.lastHoveredComponent;\n var cellComp = targetCmp;\n var registeredComponent = this.registeredComponents[targetCmp.getCompId()];\n this.hideTooltip();\n var params = {\n api: this.gridApi,\n columnApi: this.columnApi,\n colDef: targetCmp.getComponentHolder(),\n column: cellComp.getColumn && cellComp.getColumn(),\n context: this.gridOptionsWrapper.getContext(),\n rowIndex: cellComp.getCellPosition && cellComp.getCellPosition().rowIndex,\n value: targetCmp.getTooltipText()\n };\n this.createTooltipComponent(params, registeredComponent, e);\n };\n TooltipManager.prototype.createTooltipComponent = function (params, cmp, e) {\n var _this = this;\n var mouseEvent = this.lastMouseEvent;\n if (!mouseEvent) {\n return;\n }\n this.userComponentFactory.newTooltipComponent(params).then(function (tooltipComp) {\n // if the component was unregistered while creating\n // the tooltip (async) we should return undefined here.\n if (!cmp) {\n return;\n }\n cmp.tooltipComp = tooltipComp;\n var eGui = tooltipComp.getGui();\n if (!_.containsClass(eGui, 'ag-tooltip')) {\n _.addCssClass(eGui, 'ag-tooltip-custom');\n }\n var closeFnc = _this.popupService.addPopup(false, eGui, false);\n cmp.destroyFunc = function () {\n closeFnc();\n if (tooltipComp.destroy) {\n tooltipComp.destroy();\n }\n };\n _this.popupService.positionPopupUnderMouseEvent({\n type: 'tooltip',\n mouseEvent: mouseEvent,\n ePopup: eGui,\n nudgeY: 18\n });\n _this.activeComponent = _this.lastHoveredComponent;\n _this.hideTimeoutId = window.setTimeout(_this.hideTooltip.bind(_this), _this.DEFAULT_HIDE_TOOLTIP_TIMEOUT);\n });\n };\n TooltipManager.prototype.hideTooltip = function () {\n var activeComponent = this.activeComponent;\n this.clearTimers();\n if (!activeComponent) {\n return;\n }\n var id = activeComponent.getCompId();\n var registeredComponent = this.registeredComponents[id];\n this.activeComponent = undefined;\n if (!registeredComponent) {\n return;\n }\n if (registeredComponent.destroyFunc) {\n registeredComponent.destroyFunc();\n }\n this.clearRegisteredComponent(registeredComponent);\n };\n TooltipManager.prototype.clearRegisteredComponent = function (registeredComponent) {\n delete registeredComponent.destroyFunc;\n delete registeredComponent.tooltipComp;\n };\n TooltipManager.prototype.clearTimers = function (showOnly) {\n if (showOnly === void 0) { showOnly = false; }\n if (this.hideTimeoutId && !showOnly) {\n window.clearTimeout(this.hideTimeoutId);\n this.hideTimeoutId = 0;\n }\n if (this.showTimeoutId) {\n window.clearTimeout(this.showTimeoutId);\n this.showTimeoutId = 0;\n }\n };\n __decorate([\n Autowired('popupService')\n ], TooltipManager.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], TooltipManager.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('columnApi')\n ], TooltipManager.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], TooltipManager.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], TooltipManager.prototype, \"gridOptionsWrapper\", void 0);\n TooltipManager = __decorate([\n Bean('tooltipManager')\n ], TooltipManager);\n return TooltipManager;\n}());\nexport { TooltipManager };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"./component\";\nimport { RefSelector } from \"./componentAnnotations\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { _ } from \"../utils\";\nvar AgGroupComponent = /** @class */ (function (_super) {\n __extends(AgGroupComponent, _super);\n function AgGroupComponent(params) {\n var _this = _super.call(this, AgGroupComponent.TEMPLATE) || this;\n _this.suppressEnabledCheckbox = true;\n _this.suppressOpenCloseIcons = false;\n if (!params) {\n params = {};\n }\n var title = params.title, enabled = params.enabled, items = params.items, suppressEnabledCheckbox = params.suppressEnabledCheckbox, suppressOpenCloseIcons = params.suppressOpenCloseIcons;\n _this.title = title;\n _this.enabled = enabled != null ? enabled : true;\n _this.items = items || [];\n _this.alignItems = params.alignItems || 'center';\n if (suppressEnabledCheckbox != null) {\n _this.suppressEnabledCheckbox = suppressEnabledCheckbox;\n }\n if (suppressOpenCloseIcons != null) {\n _this.suppressOpenCloseIcons = suppressOpenCloseIcons;\n }\n return _this;\n }\n AgGroupComponent.prototype.postConstruct = function () {\n if (this.items.length) {\n var initialItems = this.items;\n this.items = [];\n this.addItems(initialItems);\n }\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.cbGroupEnabled.setLabel(localeTextFunc('enabled', 'Enabled'));\n if (this.title) {\n this.setTitle(this.title);\n }\n if (this.enabled) {\n this.setEnabled(this.enabled);\n }\n this.setAlignItems(this.alignItems);\n this.hideEnabledCheckbox(this.suppressEnabledCheckbox);\n this.hideOpenCloseIcons(this.suppressOpenCloseIcons);\n this.setupExpandContract();\n };\n AgGroupComponent.prototype.setupExpandContract = function () {\n var _this = this;\n this.eGroupClosedIcon.appendChild(_.createIcon('columnSelectClosed', this.gridOptionsWrapper, null));\n this.eGroupOpenedIcon.appendChild(_.createIcon('columnSelectOpen', this.gridOptionsWrapper, null));\n this.setOpenClosedIcons();\n this.addDestroyableEventListener(this.groupTitle, 'click', function () { return _this.toggleGroupExpand(); });\n };\n AgGroupComponent.prototype.setOpenClosedIcons = function () {\n var folderOpen = this.expanded;\n _.setDisplayed(this.eGroupClosedIcon, !folderOpen);\n _.setDisplayed(this.eGroupOpenedIcon, folderOpen);\n };\n AgGroupComponent.prototype.isExpanded = function () {\n return this.expanded;\n };\n AgGroupComponent.prototype.setAlignItems = function (alignment) {\n var eGui = this.getGui();\n if (this.alignItems !== alignment) {\n _.removeCssClass(eGui, \"ag-alignment-\" + this.alignItems);\n }\n this.alignItems = alignment;\n var newCls = \"ag-alignment-\" + this.alignItems;\n if (alignment !== 'center' && !_.containsClass(eGui, newCls)) {\n _.addCssClass(eGui, newCls);\n }\n return this;\n };\n AgGroupComponent.prototype.toggleGroupExpand = function (expanded) {\n var eGui = this.getGui();\n if (this.suppressOpenCloseIcons) {\n this.expanded = true;\n _.removeCssClass(eGui, 'ag-collapsed');\n return this;\n }\n expanded = expanded != null ? expanded : !this.expanded;\n if (this.expanded === expanded) {\n return this;\n }\n this.expanded = expanded;\n this.setOpenClosedIcons();\n _.addOrRemoveCssClass(eGui, 'ag-collapsed', !expanded);\n if (this.expanded) {\n var event_1 = {\n type: 'expanded',\n };\n this.dispatchEvent(event_1);\n }\n else {\n var event_2 = {\n type: 'collapsed',\n };\n this.dispatchEvent(event_2);\n }\n return this;\n };\n AgGroupComponent.prototype.addItems = function (items) {\n var _this = this;\n items.forEach(function (item) { return _this.addItem(item); });\n };\n AgGroupComponent.prototype.addItem = function (item) {\n var container = this.groupContainer;\n var el = item instanceof Component ? item.getGui() : item;\n _.addCssClass(el, 'ag-group-item');\n container.appendChild(el);\n this.items.push(el);\n };\n AgGroupComponent.prototype.hideItem = function (hide, index) {\n var itemToHide = this.items[index];\n _.addOrRemoveCssClass(itemToHide, 'ag-hidden', hide);\n };\n AgGroupComponent.prototype.setTitle = function (title) {\n this.lbGroupTitle.innerText = title;\n return this;\n };\n AgGroupComponent.prototype.setEnabled = function (enabled, skipToggle) {\n this.enabled = enabled;\n _.addOrRemoveCssClass(this.getGui(), 'ag-disabled', !enabled);\n this.toggleGroupExpand(enabled);\n if (!skipToggle) {\n this.cbGroupEnabled.setValue(enabled);\n }\n return this;\n };\n AgGroupComponent.prototype.isEnabled = function () {\n return this.enabled;\n };\n AgGroupComponent.prototype.onEnableChange = function (callbackFn) {\n var _this = this;\n this.cbGroupEnabled.onValueChange(function (newSelection) {\n _this.setEnabled(newSelection, true);\n callbackFn(newSelection);\n });\n return this;\n };\n AgGroupComponent.prototype.hideEnabledCheckbox = function (hide) {\n _.addOrRemoveCssClass(this.eToolbar, 'ag-hidden', hide);\n return this;\n };\n AgGroupComponent.prototype.hideOpenCloseIcons = function (hide) {\n this.suppressOpenCloseIcons = hide;\n _.addOrRemoveCssClass(this.getGui(), 'ag-collapsible', !hide);\n if (hide) {\n this.toggleGroupExpand(true);\n }\n return this;\n };\n AgGroupComponent.TEMPLATE = \"
\\n
\\n \\n \\n \\n \\n \\n
\\n
\\n \\n
\\n
\\n
\";\n __decorate([\n Autowired('gridOptionsWrapper')\n ], AgGroupComponent.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n RefSelector('groupTitle')\n ], AgGroupComponent.prototype, \"groupTitle\", void 0);\n __decorate([\n RefSelector('eGroupOpenedIcon')\n ], AgGroupComponent.prototype, \"eGroupOpenedIcon\", void 0);\n __decorate([\n RefSelector('eGroupClosedIcon')\n ], AgGroupComponent.prototype, \"eGroupClosedIcon\", void 0);\n __decorate([\n RefSelector('eToolbar')\n ], AgGroupComponent.prototype, \"eToolbar\", void 0);\n __decorate([\n RefSelector('cbGroupEnabled')\n ], AgGroupComponent.prototype, \"cbGroupEnabled\", void 0);\n __decorate([\n RefSelector(\"lbGroupTitle\")\n ], AgGroupComponent.prototype, \"lbGroupTitle\", void 0);\n __decorate([\n RefSelector(\"eContainer\")\n ], AgGroupComponent.prototype, \"groupContainer\", void 0);\n __decorate([\n PostConstruct\n ], AgGroupComponent.prototype, \"postConstruct\", null);\n return AgGroupComponent;\n}(Component));\nexport { AgGroupComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { AgAbstractInputField } from \"./agAbstractInputField\";\nvar AgInputTextArea = /** @class */ (function (_super) {\n __extends(AgInputTextArea, _super);\n function AgInputTextArea(config) {\n var _this = _super.call(this) || this;\n _this.className = 'ag-text-area';\n _this.displayTag = 'textarea';\n _this.inputType = '';\n _this.setTemplate(_this.TEMPLATE.replace(/%displayField%/g, _this.displayTag));\n if (config) {\n _this.config = config;\n }\n return _this;\n }\n AgInputTextArea.prototype.setValue = function (value, silent) {\n var ret = _super.prototype.setValue.call(this, value, silent);\n this.eInput.value = value;\n return ret;\n };\n return AgInputTextArea;\n}(AgAbstractInputField));\nexport { AgInputTextArea };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { RefSelector } from \"./componentAnnotations\";\nimport { AgAbstractLabel } from \"./agAbstractLabel\";\nimport { AgAbstractField } from \"./agAbstractField\";\nvar AgSlider = /** @class */ (function (_super) {\n __extends(AgSlider, _super);\n function AgSlider() {\n var _this = _super.call(this, AgSlider.TEMPLATE) || this;\n _this.labelAlignment = 'top';\n return _this;\n }\n AgSlider.prototype.onValueChange = function (callbackFn) {\n var _this = this;\n var eventChanged = AgAbstractField.EVENT_CHANGED;\n this.addDestroyableEventListener(this.eText, eventChanged, function () {\n var textValue = parseFloat(_this.eText.getValue());\n _this.eSlider.setValue(textValue.toString(), true);\n callbackFn(textValue || 0);\n });\n this.addDestroyableEventListener(this.eSlider, eventChanged, function () {\n var sliderValue = _this.eSlider.getValue();\n _this.eText.setValue(sliderValue, true);\n callbackFn(parseFloat(sliderValue));\n });\n return this;\n };\n AgSlider.prototype.setSliderWidth = function (width) {\n this.eSlider.setWidth(width);\n return this;\n };\n AgSlider.prototype.setTextFieldWidth = function (width) {\n this.eText.setWidth(width);\n return this;\n };\n AgSlider.prototype.setMinValue = function (minValue) {\n this.eSlider.setMinValue(minValue);\n this.eText.setMin(minValue);\n return this;\n };\n AgSlider.prototype.setMaxValue = function (maxValue) {\n this.eSlider.setMaxValue(maxValue);\n this.eText.setMax(maxValue);\n return this;\n };\n AgSlider.prototype.getValue = function () {\n return this.eText.getValue();\n };\n AgSlider.prototype.setValue = function (value) {\n if (this.getValue() === value) {\n return this;\n }\n this.eText.setValue(value, true);\n this.eSlider.setValue(value, true);\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n return this;\n };\n AgSlider.prototype.setStep = function (step) {\n this.eSlider.setStep(step);\n this.eText.setStep(step);\n return this;\n };\n AgSlider.TEMPLATE = \"
\\n \\n
\\n \\n \\n
\\n
\";\n __decorate([\n RefSelector('eLabel')\n ], AgSlider.prototype, \"eLabel\", void 0);\n __decorate([\n RefSelector('eSlider')\n ], AgSlider.prototype, \"eSlider\", void 0);\n __decorate([\n RefSelector('eText')\n ], AgSlider.prototype, \"eText\", void 0);\n return AgSlider;\n}(AgAbstractLabel));\nexport { AgSlider };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { AgInputTextField } from \"./agInputTextField\";\nvar AgInputNumberField = /** @class */ (function (_super) {\n __extends(AgInputNumberField, _super);\n function AgInputNumberField() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.className = 'ag-number-field';\n _this.inputType = 'number';\n return _this;\n }\n AgInputNumberField.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n this.addDestroyableEventListener(this.eInput, 'blur', function () {\n var value = _this.normalizeValue(_this.eInput.value);\n if (_this.value !== value) {\n _this.setValue(value);\n }\n });\n };\n AgInputNumberField.prototype.normalizeValue = function (value) {\n if (value === '') {\n return '';\n }\n if (this.precision) {\n value = this.adjustPrecision(value);\n }\n var val = parseFloat(value);\n if (this.min != null && val < this.min) {\n value = this.min.toString();\n }\n else if (this.max != null && val > this.max) {\n value = this.max.toString();\n }\n return value;\n };\n AgInputNumberField.prototype.adjustPrecision = function (value) {\n if (this.precision) {\n var floatString = parseFloat(value).toFixed(this.precision);\n value = parseFloat(floatString).toString();\n }\n return value;\n };\n AgInputNumberField.prototype.setMin = function (min) {\n if (this.min === min) {\n return this;\n }\n this.min = min;\n if (this.min != null) {\n this.eInput.setAttribute('min', min.toString());\n }\n else {\n this.eInput.removeAttribute('min');\n }\n return this;\n };\n AgInputNumberField.prototype.setMax = function (max) {\n if (this.max === max) {\n return this;\n }\n this.max = max;\n if (this.max != null) {\n this.eInput.setAttribute('max', max.toString());\n }\n else {\n this.eInput.removeAttribute('max');\n }\n return this;\n };\n AgInputNumberField.prototype.setPrecision = function (precision) {\n this.precision = precision;\n return this;\n };\n AgInputNumberField.prototype.setStep = function (step) {\n if (this.step === step) {\n return this;\n }\n this.step = step;\n if (step != null) {\n this.eInput.setAttribute('step', step.toString());\n }\n else {\n this.eInput.removeAttribute('step');\n }\n return this;\n };\n AgInputNumberField.prototype.setValue = function (value, silent) {\n value = this.adjustPrecision(value);\n var normalizedValue = this.normalizeValue(value);\n if (value != normalizedValue) {\n return this;\n }\n return _super.prototype.setValue.call(this, value, silent);\n };\n return AgInputNumberField;\n}(AgInputTextField));\nexport { AgInputNumberField };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { AgAbstractInputField } from \"./agAbstractInputField\";\nimport { _ } from \"../utils\";\nvar AgInputRange = /** @class */ (function (_super) {\n __extends(AgInputRange, _super);\n function AgInputRange(config) {\n var _this = _super.call(this) || this;\n _this.className = 'ag-range-field';\n _this.displayTag = 'input';\n _this.inputType = 'range';\n _this.setTemplate(_this.TEMPLATE.replace(/%displayField%/g, _this.displayTag));\n if (config) {\n _this.config = config;\n }\n return _this;\n }\n AgInputRange.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n var _a = this.config, min = _a.min, max = _a.max, step = _a.step;\n if (min != null) {\n this.setMinValue(min);\n }\n if (max != null) {\n this.setMaxValue(max);\n }\n this.setStep(step || 1);\n };\n AgInputRange.prototype.addInputListeners = function () {\n var _this = this;\n var isIE = _.isBrowserIE();\n var eventName = isIE ? 'change' : 'input';\n this.addDestroyableEventListener(this.eInput, eventName, function (e) {\n var value = e.target.value;\n _this.setValue(value);\n });\n };\n AgInputRange.prototype.setMinValue = function (value) {\n this.min = value;\n this.eInput.setAttribute('min', value.toString());\n return this;\n };\n AgInputRange.prototype.setMaxValue = function (value) {\n this.max = value;\n this.eInput.setAttribute('max', value.toString());\n return this;\n };\n AgInputRange.prototype.setStep = function (value) {\n this.step = value;\n this.eInput.setAttribute('step', value.toString());\n return this;\n };\n AgInputRange.prototype.setValue = function (value, silent) {\n if (this.min != null) {\n value = Math.max(parseFloat(value), this.min).toString();\n }\n if (this.max != null) {\n value = Math.min(parseFloat(value), this.max).toString();\n }\n var ret = _super.prototype.setValue.call(this, value, silent);\n this.eInput.value = value;\n return ret;\n };\n return AgInputRange;\n}(AgAbstractInputField));\nexport { AgInputRange };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { AgAbstractInputField } from \"./agAbstractInputField\";\nvar AgSelect = /** @class */ (function (_super) {\n __extends(AgSelect, _super);\n function AgSelect() {\n var _this = _super.call(this) || this;\n _this.className = 'ag-select';\n _this.displayTag = 'select';\n _this.inputType = '';\n _this.setTemplate(_this.TEMPLATE.replace(/%displayField%/g, _this.displayTag));\n return _this;\n }\n AgSelect.prototype.addOptions = function (options) {\n var _this = this;\n options.forEach(function (option) { return _this.addOption(option); });\n return this;\n };\n AgSelect.prototype.addOption = function (option) {\n var optionEl = document.createElement('option');\n optionEl.value = option.value;\n optionEl.text = option.text || option.value;\n this.eInput.appendChild(optionEl);\n return this;\n };\n AgSelect.prototype.setValue = function (value, silent) {\n var ret = _super.prototype.setValue.call(this, value, silent);\n this.eInput.value = value;\n return ret;\n };\n return AgSelect;\n}(AgAbstractInputField));\nexport { AgSelect };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { AgAbstractLabel } from \"./agAbstractLabel\";\nimport { RefSelector } from \"./componentAnnotations\";\nimport { Autowired } from \"../context/context\";\nimport { AgAbstractField } from \"./agAbstractField\";\nimport { _ } from \"../utils\";\nvar AgAngleSelect = /** @class */ (function (_super) {\n __extends(AgAngleSelect, _super);\n function AgAngleSelect() {\n var _this = _super.call(this, AgAngleSelect.TEMPLATE) || this;\n _this.radius = 0;\n _this.offsetX = 0;\n _this.offsetY = 0;\n return _this;\n }\n AgAngleSelect.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n this.dragListener = {\n eElement: this.eParentCircle,\n dragStartPixels: 0,\n onDragStart: function (e) {\n _this.parentCircleRect = _this.eParentCircle.getBoundingClientRect();\n },\n onDragging: function (e) { return _this.calculateAngleDrag(e); },\n onDragStop: function () { }\n };\n this.dragService.addDragSource(this.dragListener);\n this.eAngleValue\n .setLabel('')\n .setLabelWidth(5)\n .setInputWidth(45)\n .setMin(0)\n .setMax(360)\n .setValue(\"\" + this.degrees)\n .onValueChange(function (value) {\n if (value == null || value === '') {\n value = '0';\n }\n value = _this.eAngleValue.normalizeValue(value);\n var floatValue = parseFloat(value);\n if (floatValue > 180) {\n floatValue = floatValue - 360;\n }\n _this.setValue(floatValue);\n });\n this.updateNumberInput();\n if (_.exists(this.getValue())) {\n this.eAngleValue.setValue(this.normalizeNegativeValue(this.getValue()).toString());\n }\n this.addDestroyableEventListener(this, AgAbstractField.EVENT_CHANGED, function () {\n if (_this.eAngleValue.getInputElement().contains(document.activeElement)) {\n return;\n }\n _this.updateNumberInput();\n });\n };\n AgAngleSelect.prototype.updateNumberInput = function () {\n var normalizedValue = this.normalizeNegativeValue(this.getValue());\n this.eAngleValue.setValue(normalizedValue.toString());\n };\n AgAngleSelect.prototype.positionChildCircle = function (radians) {\n var rect = this.parentCircleRect || { width: 24, height: 24 };\n var eChildCircle = this.eChildCircle;\n var centerX = rect.width / 2;\n var centerY = rect.height / 2;\n eChildCircle.style.left = centerX + Math.cos(radians) * 8 + \"px\";\n eChildCircle.style.top = centerY + Math.sin(radians) * 8 + \"px\";\n };\n AgAngleSelect.prototype.calculatePolar = function () {\n var x = this.offsetX;\n var y = this.offsetY;\n var radians = Math.atan2(y, x);\n this.degrees = this.toDegrees(radians);\n this.radius = Math.sqrt((x * x) + (y * y));\n this.positionChildCircle(radians);\n };\n AgAngleSelect.prototype.calculateCartesian = function () {\n var radians = this.toRadians(this.getValue());\n var radius = this.getRadius();\n this\n .setOffsetX(Math.cos(radians) * radius)\n .setOffsetY(Math.sin(radians) * radius);\n };\n AgAngleSelect.prototype.setOffsetX = function (offset) {\n if (this.offsetX !== offset) {\n this.offsetX = offset;\n this.calculatePolar();\n }\n return this;\n };\n AgAngleSelect.prototype.setOffsetY = function (offset) {\n if (this.offsetY !== offset) {\n this.offsetY = offset;\n this.calculatePolar();\n }\n return this;\n };\n AgAngleSelect.prototype.calculateAngleDrag = function (e) {\n var rect = this.parentCircleRect;\n var centerX = rect.width / 2;\n var centerY = rect.height / 2;\n var x = e.clientX - rect.left;\n var y = e.clientY - rect.top;\n var dx = x - centerX;\n var dy = y - centerY;\n var radians = Math.atan2(dy, dx);\n this.setValue(radians, true);\n };\n AgAngleSelect.prototype.toDegrees = function (radians) {\n return radians / Math.PI * 180;\n };\n AgAngleSelect.prototype.toRadians = function (degrees) {\n return degrees / 180 * Math.PI;\n };\n AgAngleSelect.prototype.normalizeNegativeValue = function (degrees) {\n return degrees < 0 ? 360 + degrees : degrees;\n };\n AgAngleSelect.prototype.normalizeAngle180 = function (radians) {\n radians %= Math.PI * 2;\n if (radians < -Math.PI) {\n radians += Math.PI * 2;\n }\n else if (radians >= Math.PI) {\n radians -= Math.PI * 2;\n }\n return radians;\n };\n AgAngleSelect.prototype.getRadius = function () {\n return this.radius;\n };\n AgAngleSelect.prototype.setRadius = function (r) {\n if (this.radius === r) {\n return this;\n }\n this.radius = r;\n this.calculateCartesian();\n return this;\n };\n AgAngleSelect.prototype.onValueChange = function (callbackFn) {\n var _this = this;\n this.addDestroyableEventListener(this, AgAbstractField.EVENT_CHANGED, function () {\n callbackFn(_this.degrees);\n });\n return this;\n };\n AgAngleSelect.prototype.getValue = function (radians) {\n return radians ? this.toRadians(this.degrees) : this.degrees;\n };\n AgAngleSelect.prototype.setValue = function (degrees, radians) {\n var radiansValue;\n if (!radians) {\n radiansValue = this.normalizeAngle180(this.toRadians(degrees));\n }\n else {\n radiansValue = degrees;\n }\n degrees = this.toDegrees(radiansValue);\n if (this.degrees !== degrees) {\n this.degrees = Math.floor(degrees);\n this.calculateCartesian();\n this.positionChildCircle(radiansValue);\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n }\n return this;\n };\n AgAngleSelect.prototype.setWidth = function (width) {\n _.setFixedWidth(this.getGui(), width);\n return this;\n };\n AgAngleSelect.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.dragService.removeDragSource(this.dragListener);\n };\n AgAngleSelect.TEMPLATE = \"
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\";\n __decorate([\n RefSelector('eLabel')\n ], AgAngleSelect.prototype, \"eLabel\", void 0);\n __decorate([\n RefSelector('eParentCircle')\n ], AgAngleSelect.prototype, \"eParentCircle\", void 0);\n __decorate([\n RefSelector('eChildCircle')\n ], AgAngleSelect.prototype, \"eChildCircle\", void 0);\n __decorate([\n RefSelector('eAngleValue')\n ], AgAngleSelect.prototype, \"eAngleValue\", void 0);\n __decorate([\n Autowired(\"dragService\")\n ], AgAngleSelect.prototype, \"dragService\", void 0);\n return AgAngleSelect;\n}(AgAbstractLabel));\nexport { AgAngleSelect };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { AgRadioButton } from \"./agRadioButton\";\nimport { _ } from \"../utils\";\nvar AgToggleButton = /** @class */ (function (_super) {\n __extends(AgToggleButton, _super);\n function AgToggleButton() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.className = 'ag-toggle-button';\n return _this;\n }\n AgToggleButton.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n _.addCssClass(this.eIconEl, 'ag-icon');\n };\n AgToggleButton.prototype.updateIcons = function () {\n var value = this.getValue();\n _.addOrRemoveCssClass(this.eIconEl, 'ag-icon-toggle-on', value);\n _.addOrRemoveCssClass(this.eIconEl, 'ag-icon-toggle-off', !value);\n };\n AgToggleButton.prototype.setValue = function (value, silent) {\n _super.prototype.setValue.call(this, value, silent);\n _.addOrRemoveCssClass(this.getGui(), 'ag-selected', this.getValue());\n return this;\n };\n return AgToggleButton;\n}(AgRadioButton));\nexport { AgToggleButton };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Constants } from \"../constants\";\nimport { Autowired, Bean } from \"../context/context\";\nimport { _ } from \"../utils\";\nvar RowPositionUtils = /** @class */ (function () {\n function RowPositionUtils() {\n }\n RowPositionUtils.prototype.getRowNode = function (gridRow) {\n switch (gridRow.rowPinned) {\n case Constants.PINNED_TOP:\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case Constants.PINNED_BOTTOM:\n return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n default:\n return this.rowModel.getRow(gridRow.rowIndex);\n }\n };\n RowPositionUtils.prototype.sameRow = function (rowA, rowB) {\n // if both missing\n if (!rowA && !rowB) {\n return true;\n }\n // if only one missing\n if ((rowA && !rowB) || (!rowA && rowB)) {\n return false;\n }\n // otherwise compare (use == to compare rowPinned because it can be null or undefined)\n return rowA.rowIndex === rowB.rowIndex && rowA.rowPinned == rowB.rowPinned;\n };\n // tests if this row selection is before the other row selection\n RowPositionUtils.prototype.before = function (rowA, rowB) {\n switch (rowA.rowPinned) {\n case Constants.PINNED_TOP:\n // we we are floating top, and other isn't, then we are always before\n if (rowB.rowPinned !== Constants.PINNED_TOP) {\n return true;\n }\n break;\n case Constants.PINNED_BOTTOM:\n // if we are floating bottom, and the other isn't, then we are never before\n if (rowB.rowPinned !== Constants.PINNED_BOTTOM) {\n return false;\n }\n break;\n default:\n // if we are not floating, but the other one is floating...\n if (_.exists(rowB.rowPinned)) {\n return rowB.rowPinned !== Constants.PINNED_TOP;\n }\n break;\n }\n return rowA.rowIndex < rowB.rowIndex;\n };\n __decorate([\n Autowired('rowModel')\n ], RowPositionUtils.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], RowPositionUtils.prototype, \"pinnedRowModel\", void 0);\n RowPositionUtils = __decorate([\n Bean('rowPositionUtils')\n ], RowPositionUtils);\n return RowPositionUtils;\n}());\nexport { RowPositionUtils };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Bean } from \"../context/context\";\nvar CellPositionUtils = /** @class */ (function () {\n function CellPositionUtils() {\n }\n CellPositionUtils.prototype.createId = function (cellPosition) {\n var rowIndex = cellPosition.rowIndex, rowPinned = cellPosition.rowPinned, column = cellPosition.column;\n return this.createIdFromValues(rowIndex, column, rowPinned);\n };\n CellPositionUtils.prototype.createIdFromValues = function (rowIndex, column, rowPinned) {\n return rowIndex + \".\" + (rowPinned == null ? 'null' : rowPinned) + \".\" + column.getId();\n };\n CellPositionUtils.prototype.equals = function (cellA, cellB) {\n var colsMatch = cellA.column === cellB.column;\n var floatingMatch = cellA.rowPinned === cellB.rowPinned;\n var indexMatch = cellA.rowIndex === cellB.rowIndex;\n return colsMatch && floatingMatch && indexMatch;\n };\n CellPositionUtils = __decorate([\n Bean('cellPositionUtils')\n ], CellPositionUtils);\n return CellPositionUtils;\n}());\nexport { CellPositionUtils };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { RowNode } from \"../entities/rowNode\";\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { Events } from \"../events\";\nimport { Constants } from \"../constants\";\nimport { _ } from '../utils';\nvar PinnedRowModel = /** @class */ (function () {\n function PinnedRowModel() {\n }\n PinnedRowModel.prototype.init = function () {\n this.setPinnedTopRowData(this.gridOptionsWrapper.getPinnedTopRowData());\n this.setPinnedBottomRowData(this.gridOptionsWrapper.getPinnedBottomRowData());\n };\n PinnedRowModel.prototype.isEmpty = function (floating) {\n var rows = floating === Constants.PINNED_TOP ? this.pinnedTopRows : this.pinnedBottomRows;\n return _.missingOrEmpty(rows);\n };\n PinnedRowModel.prototype.isRowsToRender = function (floating) {\n return !this.isEmpty(floating);\n };\n PinnedRowModel.prototype.getRowAtPixel = function (pixel, floating) {\n var rows = floating === Constants.PINNED_TOP ? this.pinnedTopRows : this.pinnedBottomRows;\n if (_.missingOrEmpty(rows)) {\n return 0; // this should never happen, just in case, 0 is graceful failure\n }\n for (var i = 0; i < rows.length; i++) {\n var rowNode = rows[i];\n var rowTopPixel = rowNode.rowTop + rowNode.rowHeight - 1;\n // only need to range check against the top pixel, as we are going through the list\n // in order, first row to hit the pixel wins\n if (rowTopPixel >= pixel) {\n return i;\n }\n }\n return rows.length - 1;\n };\n PinnedRowModel.prototype.setPinnedTopRowData = function (rowData) {\n this.pinnedTopRows = this.createNodesFromData(rowData, true);\n var event = {\n type: Events.EVENT_PINNED_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n PinnedRowModel.prototype.setPinnedBottomRowData = function (rowData) {\n this.pinnedBottomRows = this.createNodesFromData(rowData, false);\n var event = {\n type: Events.EVENT_PINNED_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n PinnedRowModel.prototype.createNodesFromData = function (allData, isTop) {\n var _this = this;\n var rowNodes = [];\n if (allData) {\n var nextRowTop_1 = 0;\n allData.forEach(function (dataItem, index) {\n var rowNode = new RowNode();\n _this.context.wireBean(rowNode);\n rowNode.data = dataItem;\n rowNode.id = (isTop ? 't' : 'b') + \"-\" + index;\n rowNode.rowPinned = isTop ? Constants.PINNED_TOP : Constants.PINNED_BOTTOM;\n rowNode.setRowTop(nextRowTop_1);\n rowNode.setRowHeight(_this.gridOptionsWrapper.getRowHeightForNode(rowNode).height);\n rowNode.setRowIndex(index);\n nextRowTop_1 += rowNode.rowHeight;\n rowNodes.push(rowNode);\n });\n }\n return rowNodes;\n };\n PinnedRowModel.prototype.getPinnedTopRowData = function () {\n return this.pinnedTopRows;\n };\n PinnedRowModel.prototype.getPinnedBottomRowData = function () {\n return this.pinnedBottomRows;\n };\n PinnedRowModel.prototype.getPinnedTopTotalHeight = function () {\n return this.getTotalHeight(this.pinnedTopRows);\n };\n PinnedRowModel.prototype.getPinnedTopRowCount = function () {\n return this.pinnedTopRows ? this.pinnedTopRows.length : 0;\n };\n PinnedRowModel.prototype.getPinnedBottomRowCount = function () {\n return this.pinnedBottomRows ? this.pinnedBottomRows.length : 0;\n };\n PinnedRowModel.prototype.getPinnedTopRow = function (index) {\n return this.pinnedTopRows[index];\n };\n PinnedRowModel.prototype.getPinnedBottomRow = function (index) {\n return this.pinnedBottomRows[index];\n };\n PinnedRowModel.prototype.forEachPinnedTopRow = function (callback) {\n if (_.missingOrEmpty(this.pinnedTopRows)) {\n return;\n }\n this.pinnedTopRows.forEach(callback);\n };\n PinnedRowModel.prototype.forEachPinnedBottomRow = function (callback) {\n if (_.missingOrEmpty(this.pinnedBottomRows)) {\n return;\n }\n this.pinnedBottomRows.forEach(callback);\n };\n PinnedRowModel.prototype.getPinnedBottomTotalHeight = function () {\n return this.getTotalHeight(this.pinnedBottomRows);\n };\n PinnedRowModel.prototype.getTotalHeight = function (rowNodes) {\n if (!rowNodes || rowNodes.length === 0) {\n return 0;\n }\n else {\n var lastNode = _.last(rowNodes);\n return lastNode.rowTop + lastNode.rowHeight;\n }\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], PinnedRowModel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('eventService')\n ], PinnedRowModel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('context')\n ], PinnedRowModel.prototype, \"context\", void 0);\n __decorate([\n Autowired('columnApi')\n ], PinnedRowModel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], PinnedRowModel.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], PinnedRowModel.prototype, \"init\", null);\n PinnedRowModel = __decorate([\n Bean('pinnedRowModel')\n ], PinnedRowModel);\n return PinnedRowModel;\n}());\nexport { PinnedRowModel };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { GridOptionsWrapper } from \"../gridOptionsWrapper\";\nimport { _ } from \"../utils\";\n/**\n * There are many instances of this component covering each of the areas a row can be entered\n * eg body, pinned left, fullWidth. The component differs from others in that it's given the\n * elements, there is no template. All of the elements are part of the GridPanel.\n */\nvar RowContainerComponent = /** @class */ (function () {\n function RowContainerComponent(params) {\n this.childCount = 0;\n this.rowTemplatesToAdd = [];\n this.afterGuiAttachedCallbacks = [];\n // this is to cater for a 'strange behaviour' where when a panel is made visible, it is firing a scroll\n // event which we want to ignore. see gridPanel.onAnyBodyScroll()\n this.lastMadeVisibleTime = 0;\n this.eContainer = params.eContainer;\n this.eViewport = params.eViewport;\n if (params.eWrapper) {\n this.eWrapper = params.eWrapper;\n }\n this.hideWhenNoChildren = params.hideWhenNoChildren;\n }\n RowContainerComponent.prototype.setVerticalScrollPosition = function (verticalScrollPosition) {\n this.scrollTop = verticalScrollPosition;\n };\n RowContainerComponent.prototype.postConstruct = function () {\n this.checkDomOrder();\n this.checkVisibility();\n this.gridOptionsWrapper.addEventListener(GridOptionsWrapper.PROP_DOM_LAYOUT, this.checkDomOrder.bind(this));\n };\n RowContainerComponent.prototype.checkDomOrder = function () {\n this.domOrder = this.gridOptionsWrapper.isEnsureDomOrder();\n };\n RowContainerComponent.prototype.getRowElement = function (compId) {\n return this.eContainer.querySelector(\"[comp-id=\\\"\" + compId + \"\\\"]\");\n };\n RowContainerComponent.prototype.setHeight = function (height) {\n if (height == null) {\n this.eContainer.style.height = '';\n return;\n }\n this.eContainer.style.height = height + \"px\";\n if (this.eWrapper) {\n this.eWrapper.style.height = height + \"px\";\n }\n };\n RowContainerComponent.prototype.flushRowTemplates = function () {\n // if doing dom order, then rowTemplates will be empty,\n // or if no rows added since last time also empty.\n if (this.rowTemplatesToAdd.length !== 0) {\n var htmlToAdd = this.rowTemplatesToAdd.join('');\n _.appendHtml(this.eContainer, htmlToAdd);\n this.rowTemplatesToAdd.length = 0;\n }\n // this only empty if no rows since last time, as when\n // doing dom order, we still have callbacks to process\n this.afterGuiAttachedCallbacks.forEach(function (func) { return func(); });\n this.afterGuiAttachedCallbacks.length = 0;\n this.lastPlacedElement = null;\n };\n RowContainerComponent.prototype.appendRowTemplate = function (rowTemplate, callback) {\n if (this.domOrder) {\n this.lastPlacedElement = _.insertTemplateWithDomOrder(this.eContainer, rowTemplate, this.lastPlacedElement);\n }\n else {\n this.rowTemplatesToAdd.push(rowTemplate);\n }\n this.afterGuiAttachedCallbacks.push(callback);\n // it is important we put items in in order, so that when we open a row group,\n // the new rows are inserted after the opened group, but before the rows below.\n // that way, the rows below are over the new rows (as dom renders last in dom over\n // items previous in dom), otherwise the child rows would cover the row below and\n // that meant the user doesn't see the rows below slide away.\n this.childCount++;\n this.checkVisibility();\n };\n RowContainerComponent.prototype.ensureDomOrder = function (eRow) {\n if (this.domOrder) {\n _.ensureDomOrder(this.eContainer, eRow, this.lastPlacedElement);\n this.lastPlacedElement = eRow;\n }\n };\n RowContainerComponent.prototype.removeRowElement = function (eRow) {\n this.eContainer.removeChild(eRow);\n this.childCount--;\n this.checkVisibility();\n };\n RowContainerComponent.prototype.checkVisibility = function () {\n if (!this.hideWhenNoChildren) {\n return;\n }\n var eGui = this.eViewport ? this.eViewport : this.eContainer;\n var visible = this.childCount > 0;\n if (this.visible !== visible) {\n this.visible = visible;\n this.lastMadeVisibleTime = new Date().getTime();\n _.setDisplayed(eGui, visible);\n // if we are showing the viewport, then the scroll is always zero,\n // so we need to align with the other sections (ie if this is full\n // width container, and first time showing a full width row, we need to\n // scroll it so full width rows are show in right place alongside the\n // body rows). without this, there was an issue with 'loading rows' for\n // server side row model, as loading rows are full width, and they were\n // not getting displayed in the right location when rows were expanded.\n if (visible && this.eViewport) {\n this.eViewport.scrollTop = this.scrollTop;\n }\n }\n };\n RowContainerComponent.prototype.isMadeVisibleRecently = function () {\n var now = new Date().getTime();\n var millisSinceVisible = now - this.lastMadeVisibleTime;\n return millisSinceVisible < 500;\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], RowContainerComponent.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], RowContainerComponent.prototype, \"postConstruct\", null);\n return RowContainerComponent;\n}());\nexport { RowContainerComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { DragAndDropService, DragSourceType, VDirection } from \"../dragAndDrop/dragAndDropService\";\nimport { Autowired, Optional, PostConstruct } from \"../context/context\";\nimport { Events } from \"../eventKeys\";\nimport { Constants } from \"../constants\";\nvar RowDragFeature = /** @class */ (function () {\n function RowDragFeature(eContainer, gridPanel) {\n this.eContainer = eContainer;\n this.gridPanel = gridPanel;\n }\n RowDragFeature.prototype.postConstruct = function () {\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n this.clientSideRowModel = this.rowModel;\n }\n };\n RowDragFeature.prototype.getContainer = function () {\n return this.eContainer;\n };\n RowDragFeature.prototype.isInterestedIn = function (type) {\n return type === DragSourceType.RowDrag;\n };\n RowDragFeature.prototype.getIconName = function () {\n return DragAndDropService.ICON_MOVE;\n };\n RowDragFeature.prototype.onDragEnter = function (draggingEvent) {\n // when entering, we fire the enter event, then in onEnterOrDragging,\n // we also fire the move event. so we get both events when entering.\n this.dispatchEvent(Events.EVENT_ROW_DRAG_ENTER, draggingEvent);\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_MOVE);\n draggingEvent.dragItem.rowNode.setDragging(true);\n this.onEnterOrDragging(draggingEvent);\n };\n RowDragFeature.prototype.onDragging = function (draggingEvent) {\n this.onEnterOrDragging(draggingEvent);\n };\n RowDragFeature.prototype.onEnterOrDragging = function (draggingEvent) {\n // this event is fired for enter and move\n this.dispatchEvent(Events.EVENT_ROW_DRAG_MOVE, draggingEvent);\n this.lastDraggingEvent = draggingEvent;\n var pixel = this.normaliseForScroll(draggingEvent.y);\n var managedDrag = this.gridOptionsWrapper.isRowDragManaged();\n if (managedDrag) {\n this.doManagedDrag(draggingEvent, pixel);\n }\n this.checkCenterForScrolling(pixel);\n };\n RowDragFeature.prototype.doManagedDrag = function (draggingEvent, pixel) {\n var rowNode = draggingEvent.dragItem.rowNode;\n var rowWasMoved = this.clientSideRowModel.ensureRowAtPixel(rowNode, pixel);\n if (rowWasMoved) {\n this.focusedCellController.clearFocusedCell();\n if (this.rangeController) {\n this.rangeController.removeAllCellRanges();\n }\n }\n };\n RowDragFeature.prototype.normaliseForScroll = function (pixel) {\n var gridPanelHasScrolls = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_NORMAL;\n if (gridPanelHasScrolls) {\n var pixelRange = this.gridPanel.getVScrollPosition();\n return pixel + pixelRange.top;\n }\n else {\n return pixel;\n }\n };\n RowDragFeature.prototype.checkCenterForScrolling = function (pixel) {\n // scroll if the mouse is within 50px of the grid edge\n var pixelRange = this.gridPanel.getVScrollPosition();\n // console.log(`pixelRange = (${pixelRange.top}, ${pixelRange.bottom})`);\n this.needToMoveUp = pixel < (pixelRange.top + 50);\n this.needToMoveDown = pixel > (pixelRange.bottom - 50);\n // console.log(`needToMoveUp = ${this.needToMoveUp} = pixel < (pixelRange.top + 50) = ${pixel} < (${pixelRange.top} + 50)`);\n // console.log(`needToMoveDown = ${this.needToMoveDown} = pixel < (pixelRange.top + 50) = ${pixel} < (${pixelRange.top} + 50)`);\n if (this.needToMoveUp || this.needToMoveDown) {\n this.ensureIntervalStarted();\n }\n else {\n this.ensureIntervalCleared();\n }\n };\n RowDragFeature.prototype.ensureIntervalStarted = function () {\n if (!this.movingIntervalId) {\n this.intervalCount = 0;\n this.movingIntervalId = window.setInterval(this.moveInterval.bind(this), 100);\n }\n };\n RowDragFeature.prototype.ensureIntervalCleared = function () {\n if (this.moveInterval) {\n window.clearInterval(this.movingIntervalId);\n this.movingIntervalId = null;\n }\n };\n RowDragFeature.prototype.moveInterval = function () {\n // the amounts we move get bigger at each interval, so the speed accelerates, starting a bit slow\n // and getting faster. this is to give smoother user experience. we max at 100px to limit the speed.\n var pixelsToMove;\n this.intervalCount++;\n pixelsToMove = 10 + (this.intervalCount * 5);\n if (pixelsToMove > 100) {\n pixelsToMove = 100;\n }\n var pixelsMoved;\n if (this.needToMoveDown) {\n pixelsMoved = this.gridPanel.scrollVertically(pixelsToMove);\n }\n else if (this.needToMoveUp) {\n pixelsMoved = this.gridPanel.scrollVertically(-pixelsToMove);\n }\n if (pixelsMoved !== 0) {\n this.onDragging(this.lastDraggingEvent);\n }\n };\n // i tried using generics here with this:\n // public createEvent(type: string, clazz: {new(): T; }, draggingEvent: DraggingEvent) {\n // but it didn't work - i think it's because it only works with classes, and not interfaces, (the events are interfaces)\n RowDragFeature.prototype.dispatchEvent = function (type, draggingEvent) {\n var yNormalised = this.normaliseForScroll(draggingEvent.y);\n var overIndex = -1;\n var overNode = null;\n var mouseIsPastLastRow = yNormalised > this.rowModel.getCurrentPageHeight();\n if (!mouseIsPastLastRow) {\n overIndex = this.rowModel.getRowIndexAtPixel(yNormalised);\n overNode = this.rowModel.getRow(overIndex);\n }\n var vDirectionString;\n switch (draggingEvent.vDirection) {\n case VDirection.Down:\n vDirectionString = 'down';\n break;\n case VDirection.Up:\n vDirectionString = 'up';\n break;\n default:\n vDirectionString = null;\n break;\n }\n var event = {\n type: type,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n event: draggingEvent.event,\n node: draggingEvent.dragItem.rowNode,\n overIndex: overIndex,\n overNode: overNode,\n y: yNormalised,\n vDirection: vDirectionString\n };\n this.eventService.dispatchEvent(event);\n };\n RowDragFeature.prototype.onDragLeave = function (draggingEvent) {\n this.dispatchEvent(Events.EVENT_ROW_DRAG_LEAVE, draggingEvent);\n this.stopDragging(draggingEvent);\n };\n RowDragFeature.prototype.onDragStop = function (draggingEvent) {\n this.dispatchEvent(Events.EVENT_ROW_DRAG_END, draggingEvent);\n this.stopDragging(draggingEvent);\n };\n RowDragFeature.prototype.stopDragging = function (draggingEvent) {\n this.ensureIntervalCleared();\n draggingEvent.dragItem.rowNode.setDragging(false);\n };\n __decorate([\n Autowired('dragAndDropService')\n ], RowDragFeature.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('rowModel')\n ], RowDragFeature.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('focusedCellController')\n ], RowDragFeature.prototype, \"focusedCellController\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], RowDragFeature.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Optional('rangeController')\n ], RowDragFeature.prototype, \"rangeController\", void 0);\n __decorate([\n Autowired('eventService')\n ], RowDragFeature.prototype, \"eventService\", void 0);\n __decorate([\n PostConstruct\n ], RowDragFeature.prototype, \"postConstruct\", null);\n return RowDragFeature;\n}());\nexport { RowDragFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { GridOptionsWrapper } from \"../gridOptionsWrapper\";\nimport { Autowired, Optional, PostConstruct } from \"../context/context\";\nimport { Events } from \"../events\";\nimport { Constants } from \"../constants\";\nimport { RowContainerComponent } from \"../rendering/rowContainerComponent\";\nimport { PopupEditorWrapper } from \"../rendering/cellEditors/popupEditorWrapper\";\nimport { RowComp } from \"../rendering/rowComp\";\nimport { TouchListener } from \"../widgets/touchListener\";\nimport { RowDragFeature } from \"./rowDragFeature\";\nimport { Component } from \"../widgets/component\";\nimport { RefSelector } from \"../widgets/componentAnnotations\";\nimport { _ } from \"../utils\";\nimport { ModuleRegistry } from \"../modules/moduleRegistry\";\nimport { ModuleNames } from \"../modules/moduleNames\";\n// in the html below, it is important that there are no white space between some of the divs, as if there is white space,\n// it won't render correctly in safari, as safari renders white space as a gap\nvar GRID_PANEL_NORMAL_TEMPLATE = \"
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\";\nvar GridPanel = /** @class */ (function (_super) {\n __extends(GridPanel, _super);\n function GridPanel() {\n var _this = _super.call(this, GRID_PANEL_NORMAL_TEMPLATE) || this;\n _this.scrollLeft = -1;\n _this.scrollTop = -1;\n _this.resetLastHorizontalScrollElementDebounce = _.debounce(_this.resetLastHorizontalScrollElement.bind(_this), 500);\n return _this;\n }\n GridPanel.prototype.getVScrollPosition = function () {\n var result = {\n top: this.eBodyViewport.scrollTop,\n bottom: this.eBodyViewport.scrollTop + this.eBodyViewport.offsetHeight\n };\n return result;\n };\n GridPanel.prototype.getHScrollPosition = function () {\n var result = {\n left: this.eCenterViewport.scrollLeft,\n right: this.eCenterViewport.scrollLeft + this.eCenterViewport.offsetWidth\n };\n return result;\n };\n GridPanel.prototype.onRowDataChanged = function () {\n this.showOrHideOverlay();\n };\n GridPanel.prototype.showOrHideOverlay = function () {\n var isEmpty = this.paginationProxy.isEmpty();\n var isSuppressNoRowsOverlay = this.gridOptionsWrapper.isSuppressNoRowsOverlay();\n var method = isEmpty && !isSuppressNoRowsOverlay ? 'showNoRowsOverlay' : 'hideOverlay';\n this[method]();\n };\n GridPanel.prototype.onNewColumnsLoaded = function () {\n // hide overlay if columns and rows exist, this can happen if columns are loaded after data.\n // this problem exists before of the race condition between the services (column controller in this case)\n // and the view (grid panel). if the model beans were all initialised first, and then the view beans second,\n // this race condition would not happen.\n if (this.columnController.isReady() && !this.paginationProxy.isEmpty()) {\n this.hideOverlay();\n }\n };\n GridPanel.prototype.init = function () {\n var _this = this;\n this.scrollWidth = this.gridOptionsWrapper.getScrollbarWidth();\n this.enableRtl = this.gridOptionsWrapper.isEnableRtl();\n this.printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n // these elements have different CSS when layout changes\n this.gridOptionsWrapper.addLayoutElement(this.getGui());\n this.gridOptionsWrapper.addLayoutElement(this.eBodyViewport);\n this.suppressScrollOnFloatingRow();\n this.setupRowAnimationCssClass();\n this.buildRowContainerComponents();\n this.addEventListeners();\n this.addDragListeners();\n this.addScrollListener();\n if (this.gridOptionsWrapper.isRowModelDefault() && !this.gridOptionsWrapper.getRowData()) {\n this.showLoadingOverlay();\n }\n this.setCellTextSelection(this.gridOptionsWrapper.isEnableCellTextSelect());\n this.setPinnedContainerSize();\n this.setHeaderAndFloatingHeights();\n this.disableBrowserDragging();\n this.addMouseListeners();\n this.addKeyboardEvents();\n this.addBodyViewportListener();\n this.addStopEditingWhenGridLosesFocus();\n this.mockContextMenuForIPad();\n this.addRowDragListener();\n if (this.$scope) {\n this.addAngularApplyCheck();\n }\n this.onDisplayedColumnsWidthChanged();\n this.gridApi.registerGridComp(this);\n this.alignedGridsService.registerGridComp(this);\n this.headerRootComp.registerGridComp(this);\n this.navigationService.registerGridComp(this);\n this.heightScaler.registerGridComp(this);\n this.autoHeightCalculator.registerGridComp(this);\n this.columnAnimationService.registerGridComp(this);\n this.autoWidthCalculator.registerGridComp(this);\n this.paginationAutoPageSizeService.registerGridComp(this);\n this.beans.registerGridComp(this);\n this.rowRenderer.registerGridComp(this);\n if (this.rangeController) {\n this.rangeController.registerGridComp(this);\n }\n [this.eCenterViewport, this.eBodyViewport].forEach(function (viewport) {\n var unsubscribeFromResize = _this.resizeObserverService.observeResize(viewport, _this.onCenterViewportResized.bind(_this));\n _this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n });\n };\n GridPanel.prototype.onDomLayoutChanged = function () {\n var newPrintLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n if (this.printLayout !== newPrintLayout) {\n this.printLayout = newPrintLayout;\n this.setWidthsOfContainers();\n // pinned containers are always hidden for print layout\n this.setPinnedContainerSize();\n }\n };\n GridPanel.prototype.onCenterViewportResized = function () {\n if (_.isVisible(this.eCenterViewport)) {\n this.checkViewportAndScrolls();\n }\n else {\n this.bodyHeight = 0;\n }\n };\n // used by ColumnAnimationService\n GridPanel.prototype.setColumnMovingCss = function (moving) {\n this.addOrRemoveCssClass('ag-column-moving', moving);\n };\n GridPanel.prototype.setCellTextSelection = function (selectable) {\n if (selectable === void 0) { selectable = false; }\n [this.eTop, this.eBodyViewport, this.eBottom]\n .forEach(function (ct) { return _.addOrRemoveCssClass(ct, 'ag-selectable', selectable); });\n };\n GridPanel.prototype.addRowDragListener = function () {\n var rowDragFeature = new RowDragFeature(this.eBodyViewport, this);\n this.getContext().wireBean(rowDragFeature);\n this.dragAndDropService.addDropTarget(rowDragFeature);\n };\n GridPanel.prototype.addStopEditingWhenGridLosesFocus = function () {\n var _this = this;\n if (!this.gridOptionsWrapper.isStopEditingWhenGridLosesFocus()) {\n return;\n }\n var focusOutListener = function (event) {\n // this is the element the focus is moving to\n var elementWithFocus = event.relatedTarget;\n // see if the element the focus is going to is part of the grid\n var clickInsideGrid = false;\n var pointer = elementWithFocus;\n while (_.exists(pointer) && !clickInsideGrid) {\n var isPopup = !!_this.gridOptionsWrapper.getDomData(pointer, PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER);\n var isBody = _this.eBodyViewport === pointer || _this.eBottom === pointer || _this.eTop === pointer;\n clickInsideGrid = isPopup || isBody;\n pointer = pointer.parentNode;\n }\n if (!clickInsideGrid) {\n _this.rowRenderer.stopEditing();\n }\n };\n this.addDestroyableEventListener(this.eBodyViewport, 'focusout', focusOutListener);\n this.addDestroyableEventListener(this.eTop, 'focusout', focusOutListener);\n this.addDestroyableEventListener(this.eBottom, 'focusout', focusOutListener);\n };\n GridPanel.prototype.addAngularApplyCheck = function () {\n var _this = this;\n // this makes sure if we queue up requests, we only execute oe\n var applyTriggered = false;\n var listener = function () {\n // only need to do one apply at a time\n if (applyTriggered) {\n return;\n }\n applyTriggered = true; // mark 'need apply' to true\n window.setTimeout(function () {\n applyTriggered = false;\n _this.$scope.$apply();\n }, 0);\n };\n // these are the events we need to do an apply after - these are the ones that can end up\n // with columns added or removed\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n this.addDestroyableEventListener(this.eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, listener);\n };\n // if we do not do this, then the user can select a pic in the grid (eg an image in a custom cell renderer)\n // and then that will start the browser native drag n' drop, which messes up with our own drag and drop.\n GridPanel.prototype.disableBrowserDragging = function () {\n this.addGuiEventListener('dragstart', function (event) {\n if (event.target instanceof HTMLImageElement) {\n event.preventDefault();\n return false;\n }\n });\n };\n GridPanel.prototype.addEventListeners = function () {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_ROW_DATA_CHANGED, this.onRowDataChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_ROW_DATA_UPDATED, this.onRowDataChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, this.onDomLayoutChanged.bind(this));\n };\n GridPanel.prototype.addDragListeners = function () {\n var _this = this;\n if (!this.gridOptionsWrapper.isEnableRangeSelection() || // no range selection if no property\n _.missing(this.rangeController) // no range selection if not enterprise version\n ) {\n return;\n }\n var containers = [\n this.eLeftContainer,\n this.eRightContainer,\n this.eCenterContainer,\n this.eTop,\n this.eBottom\n ];\n containers.forEach(function (container) {\n var params = {\n eElement: container,\n onDragStart: _this.rangeController.onDragStart.bind(_this.rangeController),\n onDragStop: _this.rangeController.onDragStop.bind(_this.rangeController),\n onDragging: _this.rangeController.onDragging.bind(_this.rangeController)\n };\n _this.dragService.addDragSource(params);\n _this.addDestroyFunc(function () { return _this.dragService.removeDragSource(params); });\n });\n };\n GridPanel.prototype.addMouseListeners = function () {\n var _this = this;\n var eventNames = ['click', 'mousedown', 'dblclick', 'contextmenu', 'mouseover', 'mouseout'];\n eventNames.forEach(function (eventName) {\n var listener = _this.processMouseEvent.bind(_this, eventName);\n _this.eAllCellContainers.forEach(function (container) {\n return _this.addDestroyableEventListener(container, eventName, listener);\n });\n });\n };\n GridPanel.prototype.addKeyboardEvents = function () {\n var _this = this;\n var eventNames = ['keydown', 'keypress'];\n eventNames.forEach(function (eventName) {\n var listener = _this.processKeyboardEvent.bind(_this, eventName);\n _this.eAllCellContainers.forEach(function (container) {\n _this.addDestroyableEventListener(container, eventName, listener);\n });\n });\n };\n GridPanel.prototype.addBodyViewportListener = function () {\n var _this = this;\n // we want to listen for clicks directly on the eBodyViewport, so the user has a way of showing\n // the context menu if no rows or columns are displayed, or user simply clicks outside of a cell\n var listener = function (mouseEvent) {\n var target = _.getTarget(mouseEvent);\n if (target === _this.eBodyViewport || target === _this.eCenterViewport) {\n // show it\n _this.onContextMenu(mouseEvent, null, null, null, null);\n _this.preventDefaultOnContextMenu(mouseEvent);\n }\n };\n this.addDestroyableEventListener(this.eBodyViewport, 'contextmenu', listener);\n };\n // + rangeController - used to know when to scroll when user is dragging outside the\n // main viewport while doing a range selection\n GridPanel.prototype.getBodyClientRect = function () {\n if (!this.eBodyViewport) {\n return;\n }\n return this.eBodyViewport.getBoundingClientRect();\n };\n GridPanel.prototype.getRowForEvent = function (event) {\n var sourceElement = _.getTarget(event);\n while (sourceElement) {\n var renderedRow = this.gridOptionsWrapper.getDomData(sourceElement, RowComp.DOM_DATA_KEY_RENDERED_ROW);\n if (renderedRow) {\n return renderedRow;\n }\n sourceElement = sourceElement.parentElement;\n }\n return null;\n };\n GridPanel.prototype.processKeyboardEvent = function (eventName, keyboardEvent) {\n var cellComp = _.getCellCompForEvent(this.gridOptionsWrapper, keyboardEvent);\n if (!cellComp) {\n return;\n }\n var rowNode = cellComp.getRenderedRow().getRowNode();\n var column = cellComp.getColumn();\n var editing = cellComp.isEditing();\n var gridProcessingAllowed = !_.isUserSuppressingKeyboardEvent(this.gridOptionsWrapper, keyboardEvent, rowNode, column, editing);\n if (gridProcessingAllowed) {\n switch (eventName) {\n case 'keydown':\n // first see if it's a scroll key, page up / down, home / end etc\n var wasScrollKey = !editing && this.navigationService.handlePageScrollingKey(keyboardEvent);\n // if not a scroll key, then we pass onto cell\n if (!wasScrollKey) {\n cellComp.onKeyDown(keyboardEvent);\n }\n this.doClipboardOperations(keyboardEvent, cellComp);\n break;\n case 'keypress':\n cellComp.onKeyPress(keyboardEvent);\n break;\n }\n }\n if (eventName === 'keydown') {\n var cellKeyDownEvent = cellComp.createEvent(keyboardEvent, Events.EVENT_CELL_KEY_DOWN);\n this.beans.eventService.dispatchEvent(cellKeyDownEvent);\n }\n if (eventName === 'keypress') {\n var cellKeyPressEvent = cellComp.createEvent(keyboardEvent, Events.EVENT_CELL_KEY_PRESS);\n this.beans.eventService.dispatchEvent(cellKeyPressEvent);\n }\n };\n GridPanel.prototype.doClipboardOperations = function (keyboardEvent, cellComp) {\n // check if ctrl or meta key pressed\n if (!keyboardEvent.ctrlKey && !keyboardEvent.metaKey) {\n return;\n }\n // if the cell the event came from is editing, then we do not\n // want to do the default shortcut keys, otherwise the editor\n // (eg a text field) would not be able to do the normal cut/copy/paste\n if (cellComp.isEditing()) {\n return;\n }\n // for copy / paste, we don't want to execute when the event\n // was from a child grid (happens in master detail)\n if (!this.mouseEventService.isEventFromThisGrid(keyboardEvent)) {\n return;\n }\n switch (keyboardEvent.which) {\n case Constants.KEY_A:\n return this.onCtrlAndA(keyboardEvent);\n case Constants.KEY_C:\n return this.onCtrlAndC(keyboardEvent);\n case Constants.KEY_V:\n return this.onCtrlAndV();\n case Constants.KEY_D:\n return this.onCtrlAndD(keyboardEvent);\n }\n };\n // gets called by rowRenderer when new data loaded, as it will want to scroll to the top\n GridPanel.prototype.scrollToTop = function () {\n this.eBodyViewport.scrollTop = 0;\n };\n GridPanel.prototype.processMouseEvent = function (eventName, mouseEvent) {\n if (!this.mouseEventService.isEventFromThisGrid(mouseEvent) ||\n _.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n var rowComp = this.getRowForEvent(mouseEvent);\n var cellComp = this.mouseEventService.getRenderedCellForEvent(mouseEvent);\n if (eventName === \"contextmenu\") {\n this.handleContextMenuMouseEvent(mouseEvent, null, rowComp, cellComp);\n }\n else {\n if (cellComp) {\n cellComp.onMouseEvent(eventName, mouseEvent);\n }\n if (rowComp) {\n rowComp.onMouseEvent(eventName, mouseEvent);\n }\n }\n this.preventDefaultOnContextMenu(mouseEvent);\n };\n GridPanel.prototype.mockContextMenuForIPad = function () {\n var _this = this;\n // we do NOT want this when not in iPad, otherwise we will be doing\n if (!_.isIOSUserAgent()) {\n return;\n }\n this.eAllCellContainers.forEach(function (container) {\n var touchListener = new TouchListener(container);\n var longTapListener = function (event) {\n var rowComp = _this.getRowForEvent(event.touchEvent);\n var cellComp = _this.mouseEventService.getRenderedCellForEvent(event.touchEvent);\n _this.handleContextMenuMouseEvent(null, event.touchEvent, rowComp, cellComp);\n };\n _this.addDestroyableEventListener(touchListener, TouchListener.EVENT_LONG_TAP, longTapListener);\n _this.addDestroyFunc(function () { return touchListener.destroy(); });\n });\n };\n GridPanel.prototype.handleContextMenuMouseEvent = function (mouseEvent, touchEvent, rowComp, cellComp) {\n var rowNode = rowComp ? rowComp.getRowNode() : null;\n var column = cellComp ? cellComp.getColumn() : null;\n var value = null;\n if (column) {\n var event_1 = mouseEvent ? mouseEvent : touchEvent;\n cellComp.dispatchCellContextMenuEvent(event_1);\n value = this.valueService.getValue(column, rowNode);\n }\n this.onContextMenu(mouseEvent, touchEvent, rowNode, column, value);\n };\n GridPanel.prototype.onContextMenu = function (mouseEvent, touchEvent, rowNode, column, value) {\n // to allow us to debug in chrome, we ignore the event if ctrl is pressed.\n // not everyone wants this, so first 'if' below allows to turn this hack off.\n if (!this.gridOptionsWrapper.isAllowContextMenuWithControlKey()) {\n // then do the check\n if (mouseEvent && (mouseEvent.ctrlKey || mouseEvent.metaKey)) {\n return;\n }\n }\n if (this.contextMenuFactory && !this.gridOptionsWrapper.isSuppressContextMenu()) {\n var eventOrTouch = mouseEvent ? mouseEvent : touchEvent.touches[0];\n this.contextMenuFactory.showMenu(rowNode, column, value, eventOrTouch);\n var event_2 = mouseEvent ? mouseEvent : touchEvent;\n event_2.preventDefault();\n }\n };\n GridPanel.prototype.preventDefaultOnContextMenu = function (mouseEvent) {\n // if we don't do this, then middle click will never result in a 'click' event, as 'mousedown'\n // will be consumed by the browser to mean 'scroll' (as you can scroll with the middle mouse\n // button in the browser). so this property allows the user to receive middle button clicks if\n // they want.\n var gridOptionsWrapper = this.gridOptionsWrapper;\n var which = mouseEvent.which;\n if (gridOptionsWrapper.isPreventDefaultOnContextMenu() ||\n (gridOptionsWrapper.isSuppressMiddleClickScrolls() && which === 2)) {\n mouseEvent.preventDefault();\n }\n };\n GridPanel.prototype.onCtrlAndA = function (event) {\n var _a = this, columnController = _a.columnController, pinnedRowModel = _a.pinnedRowModel, paginationProxy = _a.paginationProxy, rangeController = _a.rangeController;\n var PINNED_BOTTOM = Constants.PINNED_BOTTOM, PINNED_TOP = Constants.PINNED_TOP;\n if (rangeController && paginationProxy.isRowsToRender()) {\n var _b = [\n pinnedRowModel.isEmpty(PINNED_TOP),\n pinnedRowModel.isEmpty(PINNED_BOTTOM)\n ], isEmptyPinnedTop = _b[0], isEmptyPinnedBottom = _b[1];\n var floatingStart = isEmptyPinnedTop ? null : PINNED_TOP;\n var floatingEnd = void 0;\n var rowEnd = void 0;\n if (isEmptyPinnedBottom) {\n floatingEnd = null;\n rowEnd = this.paginationProxy.getRowCount() - 1;\n }\n else {\n floatingEnd = PINNED_BOTTOM;\n rowEnd = pinnedRowModel.getPinnedBottomRowData().length - 1;\n }\n var allDisplayedColumns = columnController.getAllDisplayedColumns();\n if (_.missingOrEmpty(allDisplayedColumns)) {\n return;\n }\n rangeController.setCellRange({\n rowStartIndex: 0,\n rowStartPinned: floatingStart,\n rowEndIndex: rowEnd,\n rowEndPinned: floatingEnd,\n columnStart: allDisplayedColumns[0],\n columnEnd: _.last(allDisplayedColumns)\n });\n }\n event.preventDefault();\n };\n GridPanel.prototype.onCtrlAndC = function (event) {\n if (!this.clipboardService || this.gridOptionsWrapper.isEnableCellTextSelection()) {\n return;\n }\n var focusedCell = this.focusedCellController.getFocusedCell();\n this.clipboardService.copyToClipboard();\n event.preventDefault();\n // the copy operation results in loosing focus on the cell,\n // because of the trickery the copy logic uses with a temporary\n // widget. so we set it back again.\n if (focusedCell) {\n this.focusedCellController.setFocusedCell(focusedCell.rowIndex, focusedCell.column, focusedCell.rowPinned, true);\n }\n };\n GridPanel.prototype.onCtrlAndV = function () {\n if (ModuleRegistry.isRegistered(ModuleNames.ClipboardModule)) {\n this.clipboardService.pasteFromClipboard();\n }\n };\n GridPanel.prototype.onCtrlAndD = function (event) {\n if (ModuleRegistry.isRegistered(ModuleNames.ClipboardModule)) {\n this.clipboardService.copyRangeDown();\n event.preventDefault();\n }\n };\n // Valid values for position are bottom, middle and top\n // position should be {'top','middle','bottom', or undefined/null}.\n // if undefined/null, then the grid will to the minimal amount of scrolling,\n // eg if grid needs to scroll up, it scrolls until row is on top,\n // if grid needs to scroll down, it scrolls until row is on bottom,\n // if row is already in view, grid does not scroll\n // fixme - how does this work in the new way\n GridPanel.prototype.ensureIndexVisible = function (index, position) {\n // if for print or auto height, everything is always visible\n if (this.printLayout) {\n return;\n }\n var rowCount = this.paginationProxy.getRowCount();\n if (typeof index !== 'number' || index < 0 || index >= rowCount) {\n console.warn('invalid row index for ensureIndexVisible: ' + index);\n return;\n }\n this.paginationProxy.goToPageWithIndex(index);\n var rowNode = this.paginationProxy.getRow(index);\n var rowGotShiftedDuringOperation;\n do {\n var startingRowTop = rowNode.rowTop;\n var startingRowHeight = rowNode.rowHeight;\n var paginationOffset = this.paginationProxy.getPixelOffset();\n var rowTopPixel = rowNode.rowTop - paginationOffset;\n var rowBottomPixel = rowTopPixel + rowNode.rowHeight;\n var scrollPosition = this.getVScrollPosition();\n var heightOffset = this.heightScaler.getOffset();\n var vScrollTop = scrollPosition.top + heightOffset;\n var vScrollBottom = scrollPosition.bottom + heightOffset;\n var viewportHeight = vScrollBottom - vScrollTop;\n // work out the pixels for top, middle and bottom up front,\n // make the if/else below easier to read\n var pxTop = this.heightScaler.getScrollPositionForPixel(rowTopPixel);\n var pxBottom = this.heightScaler.getScrollPositionForPixel(rowBottomPixel - viewportHeight);\n // make sure if middle, the row is not outside the top of the grid\n var pxMiddle = Math.min((pxTop + pxBottom) / 2, rowTopPixel);\n var rowBelowViewport = vScrollTop > rowTopPixel;\n var rowAboveViewport = vScrollBottom < rowBottomPixel;\n var newScrollPosition = null;\n if (position === 'top') {\n newScrollPosition = pxTop;\n }\n else if (position === 'bottom') {\n newScrollPosition = pxBottom;\n }\n else if (position === 'middle') {\n newScrollPosition = pxMiddle;\n }\n else if (rowBelowViewport) {\n // if row is before, scroll up with row at top\n newScrollPosition = pxTop;\n }\n else if (rowAboveViewport) {\n // if row is below, scroll down with row at bottom\n newScrollPosition = pxBottom;\n }\n if (newScrollPosition !== null) {\n this.eBodyViewport.scrollTop = newScrollPosition;\n this.rowRenderer.redrawAfterScroll();\n }\n // the row can get shifted if during the rendering (during rowRenderer.redrawAfterScroll()),\n // the height of a row changes due to lazy calculation of row heights when using\n // colDef.autoHeight or gridOptions.getRowHeight.\n // if row was shifted, then the position we scrolled to is incorrect.\n rowGotShiftedDuringOperation = (startingRowTop !== rowNode.rowTop)\n || (startingRowHeight !== rowNode.rowHeight);\n } while (rowGotShiftedDuringOperation);\n // so when we return back to user, the cells have rendered\n this.animationFrameService.flushAllFrames();\n };\n // + moveColumnController\n GridPanel.prototype.getCenterWidth = function () {\n return this.eCenterViewport.clientWidth;\n };\n GridPanel.prototype.isVerticalScrollShowing = function () {\n var isAlwaysShowVerticalScroll = this.gridOptionsWrapper.isAlwaysShowVerticalScroll();\n _.addOrRemoveCssClass(this.eBodyViewport, 'ag-force-vertical-scroll', isAlwaysShowVerticalScroll);\n return isAlwaysShowVerticalScroll || _.isVerticalScrollShowing(this.eBodyViewport);\n };\n GridPanel.prototype.isHorizontalScrollShowing = function () {\n return _.isHorizontalScrollShowing(this.eCenterViewport);\n };\n // gets called every time the viewport size changes. we use this to check visibility of scrollbars\n // in the grid panel, and also to check size and position of viewport for row and column virtualisation.\n GridPanel.prototype.checkViewportAndScrolls = function () {\n // results in updating anything that depends on scroll showing\n this.updateScrollVisibleService();\n // fires event if height changes, used by PaginationService, HeightScalerService, RowRenderer\n this.checkBodyHeight();\n // check for virtual columns for ColumnController\n this.onHorizontalViewportChanged();\n this.setPinnedContainerSize();\n // this is to cater for AG-3274, where grid is removed from the dom and then inserted back in again.\n // (which happens with some implementations of tabbing). this can result in horizontal scroll getting\n // reset back to the left, however no scroll event is fired. so we need to get header to also scroll\n // back to the left to be kept in sync.\n // adding and removing the grid from the DOM both resets the scroll position and\n // triggers a resize event, so notify listeners if the scroll position has changed\n if (this.scrollLeft !== this.getCenterViewportScrollLeft()) {\n this.onBodyHorizontalScroll(this.eCenterViewport);\n }\n };\n GridPanel.prototype.updateScrollVisibleService = function () {\n // because of column animation (which takes 200ms), we have to do this twice.\n // eg if user removes cols anywhere except at the RHS, then the cols on the RHS\n // will animate to the left to fill the gap. this animation means just after\n // the cols are removed, the remaining cols are still in the original location\n // at the start of the animation, so pre animation the H scrollbar is still needed,\n // but post animation it is not.\n this.updateScrollVisibleServiceImpl();\n setTimeout(this.updateScrollVisibleServiceImpl.bind(this), 500);\n };\n GridPanel.prototype.updateScrollVisibleServiceImpl = function () {\n var params = {\n horizontalScrollShowing: false,\n verticalScrollShowing: false\n };\n params.verticalScrollShowing = this.isVerticalScrollShowing();\n params.horizontalScrollShowing = this.isHorizontalScrollShowing();\n this.scrollVisibleService.setScrollsVisible(params);\n this.setHorizontalScrollVisible(params.horizontalScrollShowing);\n this.setVerticalScrollPaddingVisible(params.verticalScrollShowing);\n };\n GridPanel.prototype.setHorizontalScrollVisible = function (visible) {\n var isSuppressHorizontalScroll = this.gridOptionsWrapper.isSuppressHorizontalScroll();\n var scrollSize = visible ? (this.gridOptionsWrapper.getScrollbarWidth() || 0) : 0;\n var scrollContainerSize = !isSuppressHorizontalScroll ? scrollSize : 0;\n var addIEPadding = _.isBrowserIE() && visible;\n this.eCenterViewport.style.height = \"calc(100% + \" + scrollSize + \"px)\";\n _.setFixedHeight(this.eHorizontalScrollBody, scrollContainerSize);\n // we have to add an extra pixel to the scroller viewport on IE because\n // if the container has the same size as the scrollbar, the scroll button won't work\n _.setFixedHeight(this.eBodyHorizontalScrollViewport, scrollContainerSize + (addIEPadding ? 1 : 0));\n _.setFixedHeight(this.eBodyHorizontalScrollContainer, scrollContainerSize);\n };\n GridPanel.prototype.setVerticalScrollPaddingVisible = function (show) {\n var scroller = show ? 'scroll' : 'hidden';\n this.eTop.style.overflowY = this.eBottom.style.overflowY = scroller;\n this.setFakeHScrollSpacerWidths();\n };\n GridPanel.prototype.updateRowCount = function () {\n var headerCount = this.headerRootComp.getHeaderRowCount();\n var rowCount = this.paginationProxy.getRowCount();\n var total = (headerCount + rowCount).toString();\n this.getGui().setAttribute('aria-rowcount', total);\n };\n GridPanel.prototype.ensureColumnVisible = function (key) {\n var column = this.columnController.getGridColumn(key);\n if (!column) {\n return;\n }\n if (column.isPinned()) {\n console.warn('calling ensureIndexVisible on a ' + column.getPinned() + ' pinned column doesn\\'t make sense for column ' + column.getColId());\n return;\n }\n if (!this.columnController.isColumnDisplayed(column)) {\n console.warn('column is not currently visible');\n return;\n }\n var colLeftPixel = column.getLeft();\n var colRightPixel = colLeftPixel + column.getActualWidth();\n var viewportWidth = this.eCenterViewport.clientWidth;\n var scrollPosition = this.getCenterViewportScrollLeft();\n var bodyWidth = this.columnController.getBodyContainerWidth();\n var viewportLeftPixel;\n var viewportRightPixel;\n // the logic of working out left and right viewport px is both here and in the ColumnController,\n // need to refactor it out to one place\n if (this.enableRtl) {\n viewportLeftPixel = bodyWidth - scrollPosition - viewportWidth;\n viewportRightPixel = bodyWidth - scrollPosition;\n }\n else {\n viewportLeftPixel = scrollPosition;\n viewportRightPixel = viewportWidth + scrollPosition;\n }\n var viewportScrolledPastCol = viewportLeftPixel > colLeftPixel;\n var viewportScrolledBeforeCol = viewportRightPixel < colRightPixel;\n var colToSmallForViewport = viewportWidth < column.getActualWidth();\n var alignColToLeft = viewportScrolledPastCol || colToSmallForViewport;\n var alignColToRight = viewportScrolledBeforeCol;\n var newScrollPosition = this.getCenterViewportScrollLeft();\n if (alignColToLeft || alignColToRight) {\n if (this.enableRtl) {\n newScrollPosition = alignColToLeft ? (bodyWidth - viewportWidth - colLeftPixel) : (bodyWidth - colRightPixel);\n }\n else {\n newScrollPosition = alignColToLeft ? colLeftPixel : (colRightPixel - viewportWidth);\n }\n this.setCenterViewportScrollLeft(newScrollPosition);\n }\n else {\n // otherwise, col is already in view, so do nothing\n }\n // this will happen anyway, as the move will cause a 'scroll' event on the body, however\n // it is possible that the ensureColumnVisible method is called from within ag-Grid and\n // the caller will need to have the columns rendered to continue, which will be before\n // the event has been worked on (which is the case for cell navigation).\n this.onHorizontalViewportChanged();\n // so when we return back to user, the cells have rendered\n this.animationFrameService.flushAllFrames();\n };\n GridPanel.prototype.showLoadingOverlay = function () {\n if (!this.gridOptionsWrapper.isSuppressLoadingOverlay()) {\n this.overlayWrapper.showLoadingOverlay();\n }\n };\n GridPanel.prototype.showNoRowsOverlay = function () {\n if (!this.gridOptionsWrapper.isSuppressNoRowsOverlay()) {\n this.overlayWrapper.showNoRowsOverlay();\n }\n };\n GridPanel.prototype.hideOverlay = function () {\n this.overlayWrapper.hideOverlay();\n };\n // method will call itself if no available width. this covers if the grid\n // isn't visible, but is just about to be visible.\n GridPanel.prototype.sizeColumnsToFit = function (nextTimeout) {\n var _this = this;\n var availableWidth = this.eBodyViewport.clientWidth;\n if (availableWidth > 0) {\n this.columnController.sizeColumnsToFit(availableWidth, \"sizeColumnsToFit\");\n return;\n }\n if (nextTimeout === undefined) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(100);\n }, 0);\n }\n else if (nextTimeout === 100) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(500);\n }, 100);\n }\n else if (nextTimeout === 500) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(-1);\n }, 500);\n }\n else {\n console.warn('ag-Grid: tried to call sizeColumnsToFit() but the grid is coming back with ' +\n 'zero width, maybe the grid is not visible yet on the screen?');\n }\n };\n // used by autoWidthCalculator and autoHeightCalculator\n GridPanel.prototype.getCenterContainer = function () {\n return this.eCenterContainer;\n };\n GridPanel.prototype.getDropTargetBodyContainers = function () {\n return [this.eCenterViewport, this.eTopViewport, this.eBottomViewport];\n };\n GridPanel.prototype.getDropTargetLeftContainers = function () {\n return [this.eLeftContainer, this.eLeftBottom, this.eLeftTop];\n };\n GridPanel.prototype.getDropTargetRightContainers = function () {\n return [this.eRightContainer, this.eRightBottom, this.eRightTop];\n };\n GridPanel.prototype.buildRowContainerComponents = function () {\n var _this = this;\n this.eAllCellContainers = [\n this.eLeftContainer, this.eRightContainer, this.eCenterContainer,\n this.eTop, this.eBottom, this.eFullWidthContainer\n ];\n this.rowContainerComponents = {\n body: new RowContainerComponent({\n eContainer: this.eCenterContainer,\n eWrapper: this.eCenterColsClipper,\n eViewport: this.eBodyViewport\n }),\n fullWidth: new RowContainerComponent({\n eContainer: this.eFullWidthContainer\n }),\n pinnedLeft: new RowContainerComponent({ eContainer: this.eLeftContainer }),\n pinnedRight: new RowContainerComponent({ eContainer: this.eRightContainer }),\n floatingTop: new RowContainerComponent({ eContainer: this.eTopContainer }),\n floatingTopPinnedLeft: new RowContainerComponent({ eContainer: this.eLeftTop }),\n floatingTopPinnedRight: new RowContainerComponent({ eContainer: this.eRightTop }),\n floatingTopFullWidth: new RowContainerComponent({\n eContainer: this.eTopFullWidthContainer,\n hideWhenNoChildren: true\n }),\n floatingBottom: new RowContainerComponent({ eContainer: this.eBottomContainer }),\n floatingBottomPinnedLeft: new RowContainerComponent({ eContainer: this.eLeftBottom }),\n floatingBottomPinnedRight: new RowContainerComponent({ eContainer: this.eRightBottom }),\n floatingBottomFullWith: new RowContainerComponent({\n eContainer: this.eBottomFullWidthContainer,\n hideWhenNoChildren: true\n }),\n };\n _.iterateObject(this.rowContainerComponents, function (key, container) {\n if (container) {\n _this.getContext().wireBean(container);\n }\n });\n };\n GridPanel.prototype.setupRowAnimationCssClass = function () {\n var _this = this;\n var listener = function () {\n // we don't want to use row animation if scaling, as rows jump strangely as you scroll,\n // when scaling and doing row animation.\n var animateRows = _this.gridOptionsWrapper.isAnimateRows() && !_this.heightScaler.isScaling();\n _.addOrRemoveCssClass(_this.eBodyViewport, 'ag-row-animation', animateRows);\n _.addOrRemoveCssClass(_this.eBodyViewport, 'ag-row-no-animation', !animateRows);\n };\n listener();\n this.addDestroyableEventListener(this.eventService, Events.EVENT_HEIGHT_SCALE_CHANGED, listener);\n };\n // when editing a pinned row, if the cell is half outside the scrollable area, the browser can\n // scroll the column into view. we do not want this, the pinned sections should never scroll.\n // so we listen to scrolls on these containers and reset the scroll if we find one.\n GridPanel.prototype.suppressScrollOnFloatingRow = function () {\n var _this = this;\n var resetTopScroll = function () { return _this.eTopViewport.scrollLeft = 0; };\n var resetBottomScroll = function () { return _this.eTopViewport.scrollLeft = 0; };\n this.addDestroyableEventListener(this.eTopViewport, 'scroll', resetTopScroll);\n this.addDestroyableEventListener(this.eBottomViewport, 'scroll', resetBottomScroll);\n };\n GridPanel.prototype.getRowContainers = function () {\n return this.rowContainerComponents;\n };\n GridPanel.prototype.getFloatingTopBottom = function () {\n return [this.eTop, this.eBottom];\n };\n GridPanel.prototype.onDisplayedColumnsChanged = function () {\n this.setPinnedContainerSize();\n this.setHeaderAndFloatingHeights();\n this.onHorizontalViewportChanged();\n this.updateScrollVisibleService();\n };\n GridPanel.prototype.onDisplayedColumnsWidthChanged = function () {\n this.setWidthsOfContainers();\n this.onHorizontalViewportChanged();\n this.updateScrollVisibleService();\n if (this.enableRtl) {\n // because RTL is all backwards, a change in the width of the row\n // can cause a change in the scroll position, without a scroll event,\n // because the scroll position in RTL is a function that depends on\n // the width. to be convinced of this, take out this line, enable RTL,\n // scroll all the way to the left and then resize a column\n this.horizontallyScrollHeaderCenterAndFloatingCenter();\n }\n };\n GridPanel.prototype.setWidthsOfContainers = function () {\n this.setCenterWidth();\n this.setPinnedContainerSize();\n };\n GridPanel.prototype.setCenterWidth = function () {\n var width = this.columnController.getBodyContainerWidth();\n if (this.printLayout) {\n var pinnedContainerWidths = this.columnController.getPinnedLeftContainerWidth()\n + this.columnController.getPinnedRightContainerWidth();\n width += pinnedContainerWidths;\n }\n this.headerRootComp.setHeaderContainerWidth(width);\n var widthPx = width + \"px\";\n this.eCenterContainer.style.width = widthPx;\n this.eBottomContainer.style.width = widthPx;\n this.eTopContainer.style.width = widthPx;\n if (!this.printLayout) {\n this.eBodyHorizontalScrollContainer.style.width = widthPx;\n }\n };\n GridPanel.prototype.setPinnedLeftWidth = function () {\n var _this = this;\n var oldPinning = this.pinningLeft;\n var widthOfCols = this.columnController.getPinnedLeftContainerWidth();\n var newPinning = this.pinningLeft = !this.printLayout && widthOfCols > 0;\n var containers = [this.eLeftContainer, this.eLeftTop, this.eLeftBottom];\n if (oldPinning !== newPinning) {\n this.headerRootComp.setLeftVisible(newPinning);\n }\n containers.forEach(function (e) { return _.setDisplayed(e, _this.pinningLeft); });\n if (newPinning) {\n containers.forEach(function (ct) { return _.setFixedWidth(ct, widthOfCols); });\n }\n };\n GridPanel.prototype.setPinnedRightWidth = function () {\n var oldPinning = this.pinningRight;\n var widthOfCols = this.columnController.getPinnedRightContainerWidth();\n var newPinning = this.pinningRight = !this.printLayout && widthOfCols > 0;\n var containers = [this.eRightContainer, this.eRightTop, this.eRightBottom];\n if (oldPinning !== newPinning) {\n this.headerRootComp.setRightVisible(newPinning);\n }\n containers.forEach(function (ct) { return _.setDisplayed(ct, newPinning); });\n if (newPinning) {\n containers.forEach(function (ct) { return _.setFixedWidth(ct, widthOfCols); });\n }\n };\n GridPanel.prototype.setPinnedContainerSize = function () {\n this.setPinnedLeftWidth();\n this.setPinnedRightWidth();\n this.setFakeHScrollSpacerWidths();\n };\n GridPanel.prototype.setFakeHScrollSpacerWidths = function () {\n // we pad the right based on a) if cols are pinned to the right and\n // b) if v scroll is showing on the right (normal position of scroll)\n var rightSpacing = this.columnController.getPinnedRightContainerWidth();\n var scrollOnRight = !this.enableRtl && this.isVerticalScrollShowing();\n if (scrollOnRight) {\n rightSpacing += this.scrollWidth;\n }\n _.setFixedWidth(this.eHorizontalRightSpacer, rightSpacing);\n _.addOrRemoveCssClass(this.eHorizontalRightSpacer, 'ag-scroller-corner', rightSpacing <= this.scrollWidth);\n // we pad the left based on a) if cols are pinned to the left and\n // b) if v scroll is showing on the left (happens in LTR layout only)\n var leftSpacing = this.columnController.getPinnedLeftContainerWidth();\n var scrollOnLeft = this.enableRtl && this.isVerticalScrollShowing();\n if (scrollOnLeft) {\n leftSpacing += this.scrollWidth;\n }\n _.setFixedWidth(this.eHorizontalLeftSpacer, leftSpacing);\n _.addOrRemoveCssClass(this.eHorizontalLeftSpacer, 'ag-scroller-corner', leftSpacing <= this.scrollWidth);\n };\n GridPanel.prototype.checkBodyHeight = function () {\n var bodyHeight = this.eBodyViewport.clientHeight;\n if (this.bodyHeight !== bodyHeight) {\n this.bodyHeight = bodyHeight;\n var event_3 = {\n type: Events.EVENT_BODY_HEIGHT_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_3);\n }\n };\n GridPanel.prototype.setHeaderAndFloatingHeights = function () {\n var _a = this, columnController = _a.columnController, gridOptionsWrapper = _a.gridOptionsWrapper, pinnedRowModel = _a.pinnedRowModel, eTop = _a.eTop, eBottom = _a.eBottom;\n var numberOfFloating = 0;\n var headerRowCount = columnController.getHeaderRowCount();\n var totalHeaderHeight;\n var groupHeight;\n var headerHeight;\n if (!columnController.isPivotMode()) {\n if (gridOptionsWrapper.isFloatingFilter()) {\n headerRowCount++;\n }\n numberOfFloating = (gridOptionsWrapper.isFloatingFilter()) ? 1 : 0;\n groupHeight = gridOptionsWrapper.getGroupHeaderHeight();\n headerHeight = gridOptionsWrapper.getHeaderHeight();\n }\n else {\n numberOfFloating = 0;\n groupHeight = gridOptionsWrapper.getPivotGroupHeaderHeight();\n headerHeight = gridOptionsWrapper.getPivotHeaderHeight();\n }\n var numberOfNonGroups = 1 + numberOfFloating;\n var numberOfGroups = headerRowCount - numberOfNonGroups;\n totalHeaderHeight = numberOfFloating * gridOptionsWrapper.getFloatingFiltersHeight();\n totalHeaderHeight += numberOfGroups * groupHeight;\n totalHeaderHeight += headerHeight;\n this.headerRootComp.setHeight(totalHeaderHeight);\n var floatingTopHeight = pinnedRowModel.getPinnedTopTotalHeight();\n if (floatingTopHeight) {\n // adding 1px for cell bottom border\n floatingTopHeight += 1;\n }\n var floatingBottomHeight = pinnedRowModel.getPinnedBottomTotalHeight();\n if (floatingBottomHeight) {\n // adding 1px for cell bottom border\n floatingBottomHeight += 1;\n }\n var floatingTopHeightString = floatingTopHeight + \"px\";\n var floatingBottomHeightString = floatingBottomHeight + \"px\";\n eTop.style.minHeight = floatingTopHeightString;\n eTop.style.height = floatingTopHeightString;\n eTop.style.display = floatingTopHeight ? 'inherit' : 'none';\n eBottom.style.minHeight = floatingBottomHeightString;\n eBottom.style.height = floatingBottomHeightString;\n eBottom.style.display = floatingBottomHeight ? 'inherit' : 'none';\n this.checkBodyHeight();\n };\n GridPanel.prototype.getBodyHeight = function () {\n return this.bodyHeight;\n };\n // called by scrollHorizontally method and alignedGridsService\n GridPanel.prototype.setHorizontalScrollPosition = function (hScrollPosition) {\n this.eCenterViewport.scrollLeft = hScrollPosition;\n // we need to manually do the event handling (rather than wait for the event)\n // for the alignedGridsService, as if we don't, the aligned grid service gets\n // notified async, and then it's 'consuming' flag doesn't get used right, and\n // we can end up with an infinite loop\n this.doHorizontalScroll(hScrollPosition);\n };\n GridPanel.prototype.setVerticalScrollPosition = function (vScrollPosition) {\n this.eBodyViewport.scrollTop = vScrollPosition;\n };\n // called by the headerRootComp and moveColumnController\n GridPanel.prototype.scrollHorizontally = function (pixels) {\n var oldScrollPosition = this.eCenterViewport.scrollLeft;\n this.setHorizontalScrollPosition(oldScrollPosition + pixels);\n return this.eCenterViewport.scrollLeft - oldScrollPosition;\n };\n // called by rowDragFeature\n GridPanel.prototype.scrollVertically = function (pixels) {\n var oldScrollPosition = this.eBodyViewport.scrollTop;\n this.setVerticalScrollPosition(oldScrollPosition + pixels);\n return this.eBodyViewport.scrollTop - oldScrollPosition;\n };\n GridPanel.prototype.addScrollListener = function () {\n this.addDestroyableEventListener(this.eCenterViewport, 'scroll', this.onCenterViewportScroll.bind(this));\n this.addDestroyableEventListener(this.eBodyHorizontalScrollViewport, 'scroll', this.onFakeHorizontalScroll.bind(this));\n this.addDestroyableEventListener(this.eBodyViewport, 'scroll', this.onVerticalScroll.bind(this));\n };\n GridPanel.prototype.onVerticalScroll = function () {\n var scrollTop = this.eBodyViewport.scrollTop;\n this.animationFrameService.setScrollTop(scrollTop);\n this.scrollTop = scrollTop;\n this.redrawRowsAfterScroll();\n };\n GridPanel.prototype.isControllingScroll = function (eDiv) {\n if (!this.lastHorizontalScrollElement) {\n this.lastHorizontalScrollElement = eDiv;\n return true;\n }\n return eDiv === this.lastHorizontalScrollElement;\n };\n GridPanel.prototype.onFakeHorizontalScroll = function () {\n if (!this.isControllingScroll(this.eBodyHorizontalScrollViewport)) {\n return;\n }\n this.onBodyHorizontalScroll(this.eBodyHorizontalScrollViewport);\n };\n GridPanel.prototype.onCenterViewportScroll = function () {\n if (!this.isControllingScroll(this.eCenterViewport)) {\n return;\n }\n this.onBodyHorizontalScroll(this.eCenterViewport);\n };\n GridPanel.prototype.onBodyHorizontalScroll = function (eSource) {\n var _a = this.eCenterViewport, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n // in chrome, fractions can be in the scroll left, eg 250.342234 - which messes up our 'scrollWentPastBounds'\n // formula. so we floor it to allow the formula to work.\n var scrollLeft = Math.floor(_.getScrollLeft(eSource, this.enableRtl));\n // touch devices allow elastic scroll - which temporally scrolls the panel outside of the viewport\n // (eg user uses touch to go to the left of the grid, but drags past the left, the rows will actually\n // scroll past the left until the user releases the mouse). when this happens, we want ignore the scroll,\n // as otherwise it was causing the rows and header to flicker.\n var scrollWentPastBounds = scrollLeft < 0 || (scrollLeft + clientWidth > scrollWidth);\n if (scrollWentPastBounds) {\n return;\n }\n this.doHorizontalScroll(scrollLeft);\n this.resetLastHorizontalScrollElementDebounce();\n };\n GridPanel.prototype.resetLastHorizontalScrollElement = function () {\n this.lastHorizontalScrollElement = null;\n };\n GridPanel.prototype.doHorizontalScroll = function (scrollLeft) {\n this.scrollLeft = scrollLeft;\n var event = {\n type: Events.EVENT_BODY_SCROLL,\n api: this.gridApi,\n columnApi: this.columnApi,\n direction: 'horizontal',\n left: this.scrollLeft,\n top: this.scrollTop\n };\n this.eventService.dispatchEvent(event);\n this.horizontallyScrollHeaderCenterAndFloatingCenter(scrollLeft);\n this.onHorizontalViewportChanged();\n };\n GridPanel.prototype.redrawRowsAfterScroll = function () {\n var event = {\n type: Events.EVENT_BODY_SCROLL,\n direction: 'vertical',\n api: this.gridApi,\n columnApi: this.columnApi,\n left: this.scrollLeft,\n top: this.scrollTop\n };\n this.eventService.dispatchEvent(event);\n };\n // this gets called whenever a change in the viewport, so we can inform column controller it has to work\n // out the virtual columns again. gets called from following locations:\n // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged, API (doLayout)\n GridPanel.prototype.onHorizontalViewportChanged = function () {\n var scrollWidth = this.eCenterViewport.clientWidth;\n var scrollPosition = this.getCenterViewportScrollLeft();\n this.columnController.setVirtualViewportPosition(scrollWidth, scrollPosition);\n };\n GridPanel.prototype.getCenterViewportScrollLeft = function () {\n // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser\n return _.getScrollLeft(this.eCenterViewport, this.enableRtl);\n };\n GridPanel.prototype.setCenterViewportScrollLeft = function (value) {\n // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser\n _.setScrollLeft(this.eCenterViewport, value, this.enableRtl);\n };\n GridPanel.prototype.horizontallyScrollHeaderCenterAndFloatingCenter = function (scrollLeft) {\n if (scrollLeft === undefined) {\n scrollLeft = this.getCenterViewportScrollLeft();\n }\n var offset = this.enableRtl ? scrollLeft : -scrollLeft;\n var _a = this.eCenterViewport, clientWidth = _a.clientWidth, scrollWidth = _a.scrollWidth;\n var scrollWentPastBounds = Math.abs(offset) + clientWidth > scrollWidth;\n if (scrollWentPastBounds ||\n (this.enableRtl && offset < 0) ||\n (!this.enableRtl && offset > 0)) {\n return;\n }\n this.headerRootComp.setHorizontalScroll(offset);\n this.eBottomContainer.style.transform = \"translateX(\" + offset + \"px)\";\n this.eTopContainer.style.transform = \"translateX(\" + offset + \"px)\";\n var partner = this.lastHorizontalScrollElement === this.eCenterViewport ? this.eBodyHorizontalScrollViewport : this.eCenterViewport;\n _.setScrollLeft(partner, scrollLeft, this.enableRtl);\n };\n // + rangeController\n GridPanel.prototype.addScrollEventListener = function (listener) {\n this.eBodyViewport.addEventListener('scroll', listener);\n };\n // + rangeController\n GridPanel.prototype.removeScrollEventListener = function (listener) {\n this.eBodyViewport.removeEventListener('scroll', listener);\n };\n __decorate([\n Autowired('alignedGridsService')\n ], GridPanel.prototype, \"alignedGridsService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], GridPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnController')\n ], GridPanel.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], GridPanel.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], GridPanel.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired('eventService')\n ], GridPanel.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('animationFrameService')\n ], GridPanel.prototype, \"animationFrameService\", void 0);\n __decorate([\n Autowired('navigationService')\n ], GridPanel.prototype, \"navigationService\", void 0);\n __decorate([\n Autowired('autoHeightCalculator')\n ], GridPanel.prototype, \"autoHeightCalculator\", void 0);\n __decorate([\n Autowired('columnAnimationService')\n ], GridPanel.prototype, \"columnAnimationService\", void 0);\n __decorate([\n Autowired('autoWidthCalculator')\n ], GridPanel.prototype, \"autoWidthCalculator\", void 0);\n __decorate([\n Autowired('paginationAutoPageSizeService')\n ], GridPanel.prototype, \"paginationAutoPageSizeService\", void 0);\n __decorate([\n Autowired('beans')\n ], GridPanel.prototype, \"beans\", void 0);\n __decorate([\n Autowired('paginationProxy')\n ], GridPanel.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('columnApi')\n ], GridPanel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], GridPanel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('dragService')\n ], GridPanel.prototype, \"dragService\", void 0);\n __decorate([\n Autowired('mouseEventService')\n ], GridPanel.prototype, \"mouseEventService\", void 0);\n __decorate([\n Autowired('focusedCellController')\n ], GridPanel.prototype, \"focusedCellController\", void 0);\n __decorate([\n Autowired('$scope')\n ], GridPanel.prototype, \"$scope\", void 0);\n __decorate([\n Autowired('scrollVisibleService')\n ], GridPanel.prototype, \"scrollVisibleService\", void 0);\n __decorate([\n Autowired('valueService')\n ], GridPanel.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], GridPanel.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('maxDivHeightScaler')\n ], GridPanel.prototype, \"heightScaler\", void 0);\n __decorate([\n Autowired('resizeObserverService')\n ], GridPanel.prototype, \"resizeObserverService\", void 0);\n __decorate([\n Optional('rangeController')\n ], GridPanel.prototype, \"rangeController\", void 0);\n __decorate([\n Optional('contextMenuFactory')\n ], GridPanel.prototype, \"contextMenuFactory\", void 0);\n __decorate([\n Optional('clipboardService')\n ], GridPanel.prototype, \"clipboardService\", void 0);\n __decorate([\n RefSelector('eBodyViewport')\n ], GridPanel.prototype, \"eBodyViewport\", void 0);\n __decorate([\n RefSelector('eCenterContainer')\n ], GridPanel.prototype, \"eCenterContainer\", void 0);\n __decorate([\n RefSelector('eCenterViewport')\n ], GridPanel.prototype, \"eCenterViewport\", void 0);\n __decorate([\n RefSelector('eLeftContainer')\n ], GridPanel.prototype, \"eLeftContainer\", void 0);\n __decorate([\n RefSelector('eRightContainer')\n ], GridPanel.prototype, \"eRightContainer\", void 0);\n __decorate([\n RefSelector('eCenterColsClipper')\n ], GridPanel.prototype, \"eCenterColsClipper\", void 0);\n __decorate([\n RefSelector('eHorizontalScrollBody')\n ], GridPanel.prototype, \"eHorizontalScrollBody\", void 0);\n __decorate([\n RefSelector('eHorizontalLeftSpacer')\n ], GridPanel.prototype, \"eHorizontalLeftSpacer\", void 0);\n __decorate([\n RefSelector('eHorizontalRightSpacer')\n ], GridPanel.prototype, \"eHorizontalRightSpacer\", void 0);\n __decorate([\n RefSelector('eBodyHorizontalScrollViewport')\n ], GridPanel.prototype, \"eBodyHorizontalScrollViewport\", void 0);\n __decorate([\n RefSelector('eBodyHorizontalScrollContainer')\n ], GridPanel.prototype, \"eBodyHorizontalScrollContainer\", void 0);\n __decorate([\n RefSelector('eFullWidthContainer')\n ], GridPanel.prototype, \"eFullWidthContainer\", void 0);\n __decorate([\n RefSelector('eTop')\n ], GridPanel.prototype, \"eTop\", void 0);\n __decorate([\n RefSelector('eLeftTop')\n ], GridPanel.prototype, \"eLeftTop\", void 0);\n __decorate([\n RefSelector('eRightTop')\n ], GridPanel.prototype, \"eRightTop\", void 0);\n __decorate([\n RefSelector('eTopContainer')\n ], GridPanel.prototype, \"eTopContainer\", void 0);\n __decorate([\n RefSelector('eTopViewport')\n ], GridPanel.prototype, \"eTopViewport\", void 0);\n __decorate([\n RefSelector('eTopFullWidthContainer')\n ], GridPanel.prototype, \"eTopFullWidthContainer\", void 0);\n __decorate([\n RefSelector('eBottom')\n ], GridPanel.prototype, \"eBottom\", void 0);\n __decorate([\n RefSelector('eLeftBottom')\n ], GridPanel.prototype, \"eLeftBottom\", void 0);\n __decorate([\n RefSelector('eRightBottom')\n ], GridPanel.prototype, \"eRightBottom\", void 0);\n __decorate([\n RefSelector('eBottomContainer')\n ], GridPanel.prototype, \"eBottomContainer\", void 0);\n __decorate([\n RefSelector('eBottomViewport')\n ], GridPanel.prototype, \"eBottomViewport\", void 0);\n __decorate([\n RefSelector('eBottomFullWidthContainer')\n ], GridPanel.prototype, \"eBottomFullWidthContainer\", void 0);\n __decorate([\n RefSelector('headerRoot')\n ], GridPanel.prototype, \"headerRootComp\", void 0);\n __decorate([\n RefSelector('overlayWrapper')\n ], GridPanel.prototype, \"overlayWrapper\", void 0);\n __decorate([\n PostConstruct\n ], GridPanel.prototype, \"init\", null);\n return GridPanel;\n}(Component));\nexport { GridPanel };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"./component\";\nimport { Color, _ } from \"../utils\";\nimport { RefSelector } from \"./componentAnnotations\";\nimport { PostConstruct } from \"../context/context\";\nvar AgColorPanel = /** @class */ (function (_super) {\n __extends(AgColorPanel, _super);\n function AgColorPanel(config) {\n var _this = _super.call(this, AgColorPanel.TEMPLATE) || this;\n _this.H = 1; // in the [0, 1] range\n _this.S = 1; // in the [0, 1] range\n _this.B = 1; // in the [0, 1] range\n _this.A = 1; // in the [0, 1] range\n _this.isSpectrumDragging = false;\n _this.isSpectrumHueDragging = false;\n _this.isSpectrumAlphaDragging = false;\n _this.colorChanged = false;\n _this.picker = config.picker;\n return _this;\n }\n AgColorPanel.prototype.postConstruct = function () {\n var eGui = this.getGui();\n this.initRecentColors();\n this.addDestroyableEventListener(this.spectrumVal, 'mousedown', this.onSpectrumDraggerDown.bind(this));\n this.addDestroyableEventListener(eGui, 'mousemove', this.onSpectrumDraggerMove.bind(this));\n this.addDestroyableEventListener(this.spectrumHue, 'mousedown', this.onSpectrumHueDown.bind(this));\n this.addDestroyableEventListener(eGui, 'mousemove', this.onSpectrumHueMove.bind(this));\n this.addDestroyableEventListener(this.spectrumAlpha, 'mousedown', this.onSpectrumAlphaDown.bind(this));\n this.addDestroyableEventListener(eGui, 'mousemove', this.onSpectrumAlphaMove.bind(this));\n // Listening to `mouseup` on the document on purpose. The user might release the mouse button\n // outside the UI control. When the mouse returns back to the control's area, the dragging\n // of the thumb is not expected and seen as a bug.\n this.addDestroyableEventListener(document, 'mouseup', this.onMouseUp.bind(this));\n this.addDestroyableEventListener(this.recentColors, 'click', this.onRecentColorClick.bind(this));\n };\n AgColorPanel.prototype.refreshSpectrumRect = function () {\n return this.spectrumValRect = this.spectrumVal.getBoundingClientRect();\n };\n AgColorPanel.prototype.refreshHueRect = function () {\n return this.spectrumHueRect = this.spectrumHue.getBoundingClientRect();\n };\n AgColorPanel.prototype.refreshAlphaRect = function () {\n return this.spectrumAlphaRect = this.spectrumAlpha.getBoundingClientRect();\n };\n AgColorPanel.prototype.onSpectrumDraggerDown = function (e) {\n this.refreshSpectrumRect();\n this.isSpectrumDragging = true;\n this.moveDragger(e);\n };\n AgColorPanel.prototype.onSpectrumDraggerMove = function (e) {\n if (this.isSpectrumDragging) {\n this.moveDragger(e);\n }\n };\n AgColorPanel.prototype.onSpectrumHueDown = function (e) {\n this.refreshHueRect();\n this.isSpectrumHueDragging = true;\n this.moveHueSlider(e);\n };\n AgColorPanel.prototype.onSpectrumHueMove = function (e) {\n if (this.isSpectrumHueDragging) {\n this.moveHueSlider(e);\n }\n };\n AgColorPanel.prototype.onSpectrumAlphaDown = function (e) {\n this.refreshAlphaRect();\n this.isSpectrumAlphaDragging = true;\n this.moveAlphaSlider(e);\n };\n AgColorPanel.prototype.onSpectrumAlphaMove = function (e) {\n if (this.isSpectrumAlphaDragging) {\n this.moveAlphaSlider(e);\n }\n };\n AgColorPanel.prototype.onMouseUp = function () {\n this.isSpectrumDragging = false;\n this.isSpectrumHueDragging = false;\n this.isSpectrumAlphaDragging = false;\n };\n AgColorPanel.prototype.moveDragger = function (e) {\n var valRect = this.spectrumValRect;\n if (valRect) {\n var x = e.clientX - valRect.left;\n var y = e.clientY - valRect.top;\n x = Math.max(x, 0);\n x = Math.min(x, valRect.width);\n y = Math.max(y, 0);\n y = Math.min(y, valRect.height);\n this.setSpectrumValue(x / valRect.width, 1 - y / valRect.height);\n }\n };\n AgColorPanel.prototype.moveHueSlider = function (e) {\n var hueRect = this.spectrumHueRect;\n if (hueRect) {\n var slider = this.spectrumHueSlider;\n var sliderRect = slider.getBoundingClientRect();\n var x = e.clientX - hueRect.left;\n x = Math.max(x, 0);\n x = Math.min(x, hueRect.width);\n this.H = 1 - x / hueRect.width;\n slider.style.left = (x + sliderRect.width / 2) + 'px';\n this.update();\n }\n };\n AgColorPanel.prototype.moveAlphaSlider = function (e) {\n var alphaRect = this.spectrumAlphaRect;\n if (alphaRect) {\n var slider = this.spectrumAlphaSlider;\n var sliderRect = slider.getBoundingClientRect();\n var x = e.clientX - alphaRect.left;\n x = Math.max(x, 0);\n x = Math.min(x, alphaRect.width);\n this.A = x / alphaRect.width;\n slider.style.left = (x + sliderRect.width / 2) + 'px';\n this.update();\n }\n };\n AgColorPanel.prototype.update = function () {\n var color = Color.fromHSB(this.H * 360, this.S, this.B, this.A);\n var spectrumColor = Color.fromHSB(this.H * 360, 1, 1);\n var rgbaColor = color.toRgbaString();\n // the recent color list needs to know color has actually changed\n var colorPicker = this.picker;\n var existingColor = Color.fromString(colorPicker.getValue());\n if (existingColor.toRgbaString() !== rgbaColor) {\n this.colorChanged = true;\n }\n colorPicker.setValue(rgbaColor);\n this.spectrumColor.style.backgroundColor = spectrumColor.toRgbaString();\n this.spectrumDragger.style.backgroundColor = rgbaColor;\n };\n /**\n * @param saturation In the [0, 1] interval.\n * @param brightness In the [0, 1] interval.\n */\n AgColorPanel.prototype.setSpectrumValue = function (saturation, brightness) {\n var valRect = this.spectrumValRect || this.refreshSpectrumRect();\n if (valRect) {\n var dragger = this.spectrumDragger;\n var draggerRect = dragger.getBoundingClientRect();\n saturation = Math.max(0, saturation);\n saturation = Math.min(1, saturation);\n brightness = Math.max(0, brightness);\n brightness = Math.min(1, brightness);\n this.S = saturation;\n this.B = brightness;\n dragger.style.left = (saturation * valRect.width - draggerRect.width / 2) + 'px';\n dragger.style.top = ((1 - brightness) * valRect.height - draggerRect.height / 2) + 'px';\n this.update();\n }\n };\n AgColorPanel.prototype.initRecentColors = function () {\n var recentColors = AgColorPanel.recentColors;\n var innerHtml = recentColors.map(function (color, index) {\n return \"
\";\n });\n this.recentColors.innerHTML = innerHtml.join('');\n };\n AgColorPanel.prototype.setValue = function (val) {\n var color = Color.fromString(val);\n var _a = color.toHSB(), h = _a[0], s = _a[1], b = _a[2];\n this.H = (isNaN(h) ? 0 : h) / 360;\n this.A = color.a;\n var spectrumHueRect = this.spectrumHueRect || this.refreshHueRect();\n var spectrumAlphaRect = this.spectrumAlphaRect || this.refreshAlphaRect();\n this.spectrumHueSlider.style.left = ((this.H - 1) * -spectrumHueRect.width) + \"px\";\n this.spectrumAlphaSlider.style.left = (this.A * spectrumAlphaRect.width) + \"px\";\n this.setSpectrumValue(s, b);\n };\n AgColorPanel.prototype.onRecentColorClick = function (e) {\n var target = e.target;\n if (!_.exists(target.id)) {\n return;\n }\n var id = parseInt(target.id, 10);\n this.setValue(AgColorPanel.recentColors[id]);\n this.destroy();\n };\n AgColorPanel.prototype.addRecentColor = function () {\n var color = Color.fromHSB(this.H * 360, this.S, this.B, this.A);\n var rgbaColor = color.toRgbaString();\n var recentColors = AgColorPanel.recentColors;\n if (!this.colorChanged || recentColors[0] === rgbaColor) {\n return;\n }\n // remove duplicate color\n recentColors = recentColors.filter(function (color) { return color != rgbaColor; });\n // add color to head\n recentColors = [rgbaColor].concat(recentColors);\n // ensure we don't exceed max number of recent colors\n if (recentColors.length > AgColorPanel.maxRecentColors) {\n recentColors = recentColors.slice(0, AgColorPanel.maxRecentColors);\n }\n AgColorPanel.recentColors = recentColors;\n };\n AgColorPanel.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.addRecentColor();\n };\n AgColorPanel.maxRecentColors = 8;\n AgColorPanel.recentColors = [];\n AgColorPanel.TEMPLATE = \"
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\";\n __decorate([\n RefSelector('spectrumColor')\n ], AgColorPanel.prototype, \"spectrumColor\", void 0);\n __decorate([\n RefSelector('spectrumVal')\n ], AgColorPanel.prototype, \"spectrumVal\", void 0);\n __decorate([\n RefSelector('spectrumDragger')\n ], AgColorPanel.prototype, \"spectrumDragger\", void 0);\n __decorate([\n RefSelector('spectrumHue')\n ], AgColorPanel.prototype, \"spectrumHue\", void 0);\n __decorate([\n RefSelector('spectrumHueSlider')\n ], AgColorPanel.prototype, \"spectrumHueSlider\", void 0);\n __decorate([\n RefSelector('spectrumAlpha')\n ], AgColorPanel.prototype, \"spectrumAlpha\", void 0);\n __decorate([\n RefSelector('spectrumAlphaSlider')\n ], AgColorPanel.prototype, \"spectrumAlphaSlider\", void 0);\n __decorate([\n RefSelector('recentColors')\n ], AgColorPanel.prototype, \"recentColors\", void 0);\n __decorate([\n PostConstruct\n ], AgColorPanel.prototype, \"postConstruct\", null);\n return AgColorPanel;\n}(Component));\nexport { AgColorPanel };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { RefSelector } from \"./componentAnnotations\";\nimport { Autowired } from \"../context/context\";\nimport { AgAbstractField } from \"./agAbstractField\";\nimport { _ } from \"../utils\";\nvar AgPickerField = /** @class */ (function (_super) {\n __extends(AgPickerField, _super);\n function AgPickerField() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.TEMPLATE = \"
\\n \\n
\\n <%displayField% ref=\\\"eDisplayField\\\">\\n \\n
\\n
\";\n _this.displayedPicker = false;\n _this.isDestroyingPicker = false;\n return _this;\n }\n AgPickerField.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n this.addDestroyableEventListener(this.eButton, 'click', function () {\n _this.showPicker();\n });\n if (this.pickerIcon) {\n this.eButton.appendChild(_.createIconNoSpan(this.pickerIcon, this.gridOptionsWrapper, null));\n }\n };\n AgPickerField.prototype.setInputWidth = function (width) {\n _.setElementWidth(this.eWrapper, width);\n return this;\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], AgPickerField.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n RefSelector('eLabel')\n ], AgPickerField.prototype, \"eLabel\", void 0);\n __decorate([\n RefSelector('eWrapper')\n ], AgPickerField.prototype, \"eWrapper\", void 0);\n __decorate([\n RefSelector('eDisplayField')\n ], AgPickerField.prototype, \"eDisplayField\", void 0);\n __decorate([\n RefSelector('eButton')\n ], AgPickerField.prototype, \"eButton\", void 0);\n return AgPickerField;\n}(AgAbstractField));\nexport { AgPickerField };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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})();\nimport { AgColorPanel } from \"./agColorPanel\";\nimport { AgDialog } from \"./agDialog\";\nimport { AgPickerField } from \"./agPickerField\";\nimport { AgAbstractField } from \"./agAbstractField\";\nimport { _ } from \"../utils\";\nvar AgColorPicker = /** @class */ (function (_super) {\n __extends(AgColorPicker, _super);\n function AgColorPicker(config) {\n var _this = _super.call(this) || this;\n _this.displayTag = 'div';\n _this.className = 'ag-color-picker';\n _this.pickerIcon = 'colorPicker';\n _this.setTemplate(_this.TEMPLATE.replace(/%displayField%/g, _this.displayTag));\n if (config && config.color) {\n _this.value = config.color;\n }\n return _this;\n }\n AgColorPicker.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n _.addCssClass(this.getGui(), this.className);\n this.addDestroyableEventListener(this.eDisplayField, 'click', function () { return _this.showPicker(); });\n if (this.value) {\n this.setValue(this.value);\n }\n };\n AgColorPicker.prototype.showPicker = function () {\n var _this = this;\n if (this.displayedPicker) {\n this.displayedPicker = false;\n return;\n }\n var eGuiRect = this.getGui().getBoundingClientRect();\n var colorDialog = new AgDialog({\n closable: false,\n modal: true,\n hideTitleBar: true,\n minWidth: 190,\n width: 190,\n height: 250,\n x: eGuiRect.right - 190,\n y: eGuiRect.top - 250\n });\n this.getContext().wireBean(colorDialog);\n _.addCssClass(colorDialog.getGui(), 'ag-color-dialog');\n var colorPanel = new AgColorPanel({\n picker: this\n });\n this.getContext().wireBean(colorPanel);\n colorPanel.addDestroyFunc(function () {\n if (colorDialog.isAlive()) {\n colorDialog.destroy();\n }\n });\n colorDialog.setParentComponent(this);\n colorDialog.setBodyComponent(colorPanel);\n colorPanel.setValue(this.getValue());\n colorDialog.addDestroyFunc(function () {\n var wasDestroying = _this.isDestroyingPicker;\n _this.displayedPicker = false;\n // here we check if the picker was already being\n // destroyed to avoid a stackoverflow\n if (!wasDestroying) {\n _this.isDestroyingPicker = true;\n if (colorPanel.isAlive()) {\n colorPanel.destroy();\n }\n }\n else {\n _this.isDestroyingPicker = false;\n }\n });\n };\n AgColorPicker.prototype.setValue = function (color) {\n if (this.value === color) {\n return this;\n }\n this.value = color;\n this.eDisplayField.style.backgroundColor = color;\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n return this;\n };\n AgColorPicker.prototype.getValue = function () {\n return this.value;\n };\n return AgColorPicker;\n}(AgPickerField));\nexport { AgColorPicker };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport var DefaultColumnTypes = {\n numericColumn: {\n headerClass: \"ag-numeric-header\",\n cellClass: \"ag-numeric-cell\"\n }\n};\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\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};\nimport { ColumnKeyCreator } from \"./columnKeyCreator\";\nimport { OriginalColumnGroup } from \"../entities/originalColumnGroup\";\nimport { Column } from \"../entities/column\";\nimport { Autowired, Bean, Qualifier } from \"../context/context\";\nimport { DefaultColumnTypes } from \"../entities/defaultColumnTypes\";\nimport { _ } from \"../utils\";\n// takes ColDefs and ColGroupDefs and turns them into Columns and OriginalGroups\nvar ColumnFactory = /** @class */ (function () {\n function ColumnFactory() {\n }\n ColumnFactory.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ColumnFactory');\n };\n ColumnFactory.prototype.createColumnTree = function (defs, primaryColumns, existingColumns) {\n // column key creator dishes out unique column id's in a deterministic way,\n // so if we have two grids (that could be master/slave) with same column definitions,\n // then this ensures the two grids use identical id's.\n var columnKeyCreator = new ColumnKeyCreator();\n if (existingColumns) {\n var existingKeys = existingColumns.map(function (col) { return col.getId(); });\n columnKeyCreator.addExistingKeys(existingKeys);\n }\n // we take a copy of the columns as we are going to be removing from them\n var existingColsCopy = existingColumns ? existingColumns.slice() : null;\n // create am unbalanced tree that maps the provided definitions\n var unbalancedTree = this.recursivelyCreateColumns(defs, 0, primaryColumns, existingColsCopy, columnKeyCreator, null);\n var treeDept = this.findMaxDept(unbalancedTree, 0);\n this.logger.log('Number of levels for grouped columns is ' + treeDept);\n var res = this.balanceColumnTree(unbalancedTree, 0, treeDept, columnKeyCreator);\n var deptFirstCallback = function (child, parent) {\n if (child instanceof OriginalColumnGroup) {\n child.setupExpandable();\n }\n // we set the original parents at the end, rather than when we go along, as balancing the tree\n // adds extra levels into the tree. so we can only set parents when balancing is done.\n child.setOriginalParent(parent);\n };\n this.columnUtils.depthFirstOriginalTreeSearch(null, res, deptFirstCallback);\n return {\n columnTree: res,\n treeDept: treeDept\n };\n };\n ColumnFactory.prototype.createForAutoGroups = function (autoGroupCols, gridBalancedTree) {\n var _this = this;\n var autoColBalancedTree = [];\n autoGroupCols.forEach(function (col) {\n var fakeTreeItem = _this.createAutoGroupTreeItem(gridBalancedTree, col);\n autoColBalancedTree.push(fakeTreeItem);\n });\n return autoColBalancedTree;\n };\n ColumnFactory.prototype.createAutoGroupTreeItem = function (balancedColumnTree, column) {\n var dept = this.findDepth(balancedColumnTree);\n // at the end, this will be the top of the tree item.\n var nextChild = column;\n for (var i = dept - 1; i >= 0; i--) {\n var autoGroup = new OriginalColumnGroup(null, \"FAKE_PATH_\" + column.getId() + \"}_\" + i, true, i);\n this.context.wireBean(autoGroup);\n autoGroup.setChildren([nextChild]);\n nextChild.setOriginalParent(autoGroup);\n nextChild = autoGroup;\n }\n // at this point, the nextChild is the top most item in the tree\n return nextChild;\n };\n ColumnFactory.prototype.findDepth = function (balancedColumnTree) {\n var dept = 0;\n var pointer = balancedColumnTree;\n while (pointer && pointer[0] && pointer[0] instanceof OriginalColumnGroup) {\n dept++;\n pointer = pointer[0].getChildren();\n }\n return dept;\n };\n ColumnFactory.prototype.balanceColumnTree = function (unbalancedTree, currentDept, columnDept, columnKeyCreator) {\n var result = [];\n // go through each child, for groups, recurse a level deeper,\n // for columns we need to pad\n for (var i = 0; i < unbalancedTree.length; i++) {\n var child = unbalancedTree[i];\n if (child instanceof OriginalColumnGroup) {\n // child is a group, all we do is go to the next level of recursion\n var originalGroup = child;\n var newChildren = this.balanceColumnTree(originalGroup.getChildren(), currentDept + 1, columnDept, columnKeyCreator);\n originalGroup.setChildren(newChildren);\n result.push(originalGroup);\n }\n else {\n // child is a column - so here we add in the padded column groups if needed\n var firstPaddedGroup = void 0;\n var currentPaddedGroup = void 0;\n // this for loop will NOT run any loops if no padded column groups are needed\n for (var j = columnDept - 1; j >= currentDept; j--) {\n var newColId = columnKeyCreator.getUniqueKey(null, null);\n var colGroupDefMerged = this.createMergedColGroupDef(null);\n var paddedGroup = new OriginalColumnGroup(colGroupDefMerged, newColId, true, currentDept);\n this.context.wireBean(paddedGroup);\n if (currentPaddedGroup) {\n currentPaddedGroup.setChildren([paddedGroup]);\n }\n currentPaddedGroup = paddedGroup;\n if (!firstPaddedGroup) {\n firstPaddedGroup = currentPaddedGroup;\n }\n }\n // likewise this if statement will not run if no padded groups\n if (firstPaddedGroup) {\n result.push(firstPaddedGroup);\n var hasGroups = unbalancedTree.some(function (child) { return child instanceof OriginalColumnGroup; });\n if (hasGroups) {\n currentPaddedGroup.setChildren([child]);\n continue;\n }\n else {\n currentPaddedGroup.setChildren(unbalancedTree);\n break;\n }\n }\n result.push(child);\n }\n }\n return result;\n };\n ColumnFactory.prototype.findMaxDept = function (treeChildren, dept) {\n var maxDeptThisLevel = dept;\n for (var i = 0; i < treeChildren.length; i++) {\n var abstractColumn = treeChildren[i];\n if (abstractColumn instanceof OriginalColumnGroup) {\n var originalGroup = abstractColumn;\n var newDept = this.findMaxDept(originalGroup.getChildren(), dept + 1);\n if (maxDeptThisLevel < newDept) {\n maxDeptThisLevel = newDept;\n }\n }\n }\n return maxDeptThisLevel;\n };\n ColumnFactory.prototype.recursivelyCreateColumns = function (defs, level, primaryColumns, existingColsCopy, columnKeyCreator, parent) {\n var _this = this;\n var result = [];\n if (!defs) {\n return result;\n }\n defs.forEach(function (def) {\n var newGroupOrColumn;\n if (_this.isColumnGroup(def)) {\n newGroupOrColumn = _this.createColumnGroup(primaryColumns, def, level, existingColsCopy, columnKeyCreator, parent);\n }\n else {\n newGroupOrColumn = _this.createColumn(primaryColumns, def, existingColsCopy, columnKeyCreator, parent);\n }\n result.push(newGroupOrColumn);\n });\n return result;\n };\n ColumnFactory.prototype.createColumnGroup = function (primaryColumns, colGroupDef, level, existingColumns, columnKeyCreator, parent) {\n var colGroupDefMerged = this.createMergedColGroupDef(colGroupDef);\n var groupId = columnKeyCreator.getUniqueKey(colGroupDefMerged.groupId, null);\n var originalGroup = new OriginalColumnGroup(colGroupDefMerged, groupId, false, level);\n this.context.wireBean(originalGroup);\n var children = this.recursivelyCreateColumns(colGroupDefMerged.children, level + 1, primaryColumns, existingColumns, columnKeyCreator, originalGroup);\n originalGroup.setChildren(children);\n return originalGroup;\n };\n ColumnFactory.prototype.createMergedColGroupDef = function (colGroupDef) {\n var colGroupDefMerged = {};\n _.assign(colGroupDefMerged, this.gridOptionsWrapper.getDefaultColGroupDef());\n _.assign(colGroupDefMerged, colGroupDef);\n this.checkForDeprecatedItems(colGroupDefMerged);\n return colGroupDefMerged;\n };\n ColumnFactory.prototype.createColumn = function (primaryColumns, colDef, existingColsCopy, columnKeyCreator, parent) {\n var colDefMerged = this.mergeColDefs(colDef);\n this.checkForDeprecatedItems(colDefMerged);\n // see if column already exists\n var column = this.findExistingColumn(colDef, existingColsCopy);\n if (!column) {\n // no existing column, need to create one\n var colId = columnKeyCreator.getUniqueKey(colDefMerged.colId, colDefMerged.field);\n column = new Column(colDefMerged, colDef, colId, primaryColumns);\n this.context.wireBean(column);\n }\n else {\n column.setColDef(colDefMerged, colDef);\n }\n return column;\n };\n ColumnFactory.prototype.findExistingColumn = function (colDef, existingColsCopy) {\n var res = _.find(existingColsCopy, function (col) {\n var oldColDef = col.getUserProvidedColDef();\n if (!oldColDef) {\n return false;\n }\n // first check object references\n if (oldColDef === colDef) {\n return true;\n }\n // second check id's\n var oldColHadId = oldColDef.colId !== null && oldColDef.colId !== undefined;\n if (oldColHadId) {\n return oldColDef.colId === colDef.colId;\n }\n else {\n return false;\n }\n });\n // make sure we remove, so if user provided duplicate id, then we don't have more than\n // one column instance for colDef with common id\n if (res) {\n _.removeFromArray(existingColsCopy, res);\n }\n return res;\n };\n ColumnFactory.prototype.mergeColDefs = function (colDef) {\n // start with empty merged definition\n var colDefMerged = {};\n // merge properties from default column definitions\n _.assign(colDefMerged, this.gridOptionsWrapper.getDefaultColDef());\n // merge properties from column type properties\n if (colDef.type) {\n this.assignColumnTypes(colDef, colDefMerged);\n }\n // merge properties from column definitions\n _.assign(colDefMerged, colDef);\n return colDefMerged;\n };\n ColumnFactory.prototype.assignColumnTypes = function (colDef, colDefMerged) {\n var typeKeys;\n if (colDef.type instanceof Array) {\n var invalidArray = colDef.type.some(function (a) { return typeof a !== 'string'; });\n if (invalidArray) {\n console.warn(\"ag-grid: if colDef.type is supplied an array it should be of type 'string[]'\");\n }\n else {\n typeKeys = colDef.type;\n }\n }\n else if (typeof colDef.type === 'string') {\n typeKeys = colDef.type.split(',');\n }\n else {\n console.warn(\"ag-grid: colDef.type should be of type 'string' | 'string[]'\");\n return;\n }\n // merge user defined with default column types\n var allColumnTypes = _.assign({}, this.gridOptionsWrapper.getColumnTypes(), DefaultColumnTypes);\n typeKeys.forEach(function (t) {\n var typeColDef = allColumnTypes[t.trim()];\n if (typeColDef) {\n _.assign(colDefMerged, typeColDef);\n }\n else {\n console.warn(\"ag-grid: colDef.type '\" + t + \"' does not correspond to defined gridOptions.columnTypes\");\n }\n });\n };\n ColumnFactory.prototype.checkForDeprecatedItems = function (colDef) {\n if (colDef) {\n var colDefNoType = colDef; // take out the type, so we can access attributes not defined in the type\n if (colDefNoType.group !== undefined) {\n console.warn('ag-grid: colDef.group is invalid, please check documentation on how to do grouping as it changed in version 3');\n }\n if (colDefNoType.headerGroup !== undefined) {\n console.warn('ag-grid: colDef.headerGroup is invalid, please check documentation on how to do grouping as it changed in version 3');\n }\n if (colDefNoType.headerGroupShow !== undefined) {\n console.warn('ag-grid: colDef.headerGroupShow is invalid, should be columnGroupShow, please check documentation on how to do grouping as it changed in version 3');\n }\n if (colDefNoType.suppressRowGroup !== undefined) {\n console.warn('ag-grid: colDef.suppressRowGroup is deprecated, please use colDef.type instead');\n }\n if (colDefNoType.suppressAggregation !== undefined) {\n console.warn('ag-grid: colDef.suppressAggregation is deprecated, please use colDef.type instead');\n }\n if (colDefNoType.suppressRowGroup || colDefNoType.suppressAggregation) {\n console.warn('ag-grid: colDef.suppressAggregation and colDef.suppressRowGroup are deprecated, use allowRowGroup, allowPivot and allowValue instead');\n }\n if (colDefNoType.displayName) {\n console.warn(\"ag-grid: Found displayName \" + colDefNoType.displayName + \", please use headerName instead, displayName is deprecated.\");\n colDefNoType.headerName = colDefNoType.displayName;\n }\n }\n };\n // if object has children, we assume it's a group\n ColumnFactory.prototype.isColumnGroup = function (abstractColDef) {\n return abstractColDef.children !== undefined;\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ColumnFactory.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnUtils')\n ], ColumnFactory.prototype, \"columnUtils\", void 0);\n __decorate([\n Autowired('context')\n ], ColumnFactory.prototype, \"context\", void 0);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], ColumnFactory.prototype, \"setBeans\", null);\n ColumnFactory = __decorate([\n Bean('columnFactory')\n ], ColumnFactory);\n return ColumnFactory;\n}());\nexport { ColumnFactory };\n","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@material-ui/utils/macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe iff we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n\n /* eslint-disable prefer-template */\n var url = 'https://material-ui.com/production-error/?code=' + code;\n\n for (var i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n\n return 'Minified Material-UI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport function isPlainObject(item) {\n return item && _typeof(item) === 'object' && item.constructor === Object;\n}\nexport default function deepmerge(target, source) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n clone: true\n };\n var output = options.clone ? _extends({}, target) : target;\n\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(function (key) {\n // Avoid prototype pollution\n if (key === '__proto__') {\n return;\n }\n\n if (isPlainObject(source[key]) && key in target) {\n output[key] = deepmerge(target[key], source[key], options);\n } else {\n output[key] = source[key];\n }\n });\n }\n\n return output;\n}","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nvar zIndex = {\n mobileStepper: 1000,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-dom-server.browser.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom-server.browser.development.js');\n}\n","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport nodejsCustomInspectSymbol from './nodejsCustomInspectSymbol';\nvar MAX_ARRAY_LENGTH = 10;\nvar MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nexport default function inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (_typeof(value)) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? \"[function \".concat(value.name, \"]\") : '[function]';\n\n case 'object':\n if (value === null) {\n return 'null';\n }\n\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (previouslySeenValues.indexOf(value) !== -1) {\n return '[Circular]';\n }\n\n var seenValues = [].concat(previouslySeenValues, [value]);\n var customInspectFn = getCustomFn(value);\n\n if (customInspectFn !== undefined) {\n // $FlowFixMe(>=0.90.0)\n var customValue = customInspectFn.call(value); // check for infinite recursion\n\n if (customValue !== value) {\n return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction formatObject(object, seenValues) {\n var keys = Object.keys(object);\n\n if (keys.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n var properties = keys.map(function (key) {\n var value = formatValue(object[key], seenValues);\n return key + ': ' + value;\n });\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n var len = Math.min(MAX_ARRAY_LENGTH, array.length);\n var remaining = array.length - len;\n var items = [];\n\n for (var i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(\"... \".concat(remaining, \" more items\"));\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getCustomFn(object) {\n var customInspectFn = object[String(nodejsCustomInspectSymbol)];\n\n if (typeof customInspectFn === 'function') {\n return customInspectFn;\n }\n\n if (typeof object.inspect === 'function') {\n return object.inspect;\n }\n}\n\nfunction getObjectTag(object) {\n var tag = Object.prototype.toString.call(object).replace(/^\\[object /, '').replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n var name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n","/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n */\nexport function dedentBlockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n var commonIndent = getBlockStringIndentation(lines);\n\n if (commonIndent !== 0) {\n for (var i = 1; i < lines.length; i++) {\n lines[i] = lines[i].slice(commonIndent);\n }\n } // Remove leading and trailing blank lines.\n\n\n while (lines.length > 0 && isBlank(lines[0])) {\n lines.shift();\n }\n\n while (lines.length > 0 && isBlank(lines[lines.length - 1])) {\n lines.pop();\n } // Return a string of the lines joined with U+000A.\n\n\n return lines.join('\\n');\n} // @internal\n\nexport function getBlockStringIndentation(lines) {\n var commonIndent = null;\n\n for (var i = 1; i < lines.length; i++) {\n var line = lines[i];\n var indent = leadingWhitespace(line);\n\n if (indent === line.length) {\n continue; // skip empty lines\n }\n\n if (commonIndent === null || indent < commonIndent) {\n commonIndent = indent;\n\n if (commonIndent === 0) {\n break;\n }\n }\n }\n\n return commonIndent === null ? 0 : commonIndent;\n}\n\nfunction leadingWhitespace(str) {\n var i = 0;\n\n while (i < str.length && (str[i] === ' ' || str[i] === '\\t')) {\n i++;\n }\n\n return i;\n}\n\nfunction isBlank(str) {\n return leadingWhitespace(str) === str.length;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n */\n\n\nexport function printBlockString(value) {\n var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isSingleLine = value.indexOf('\\n') === -1;\n var hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n var hasTrailingQuote = value[value.length - 1] === '\"';\n var printAsMultipleLines = !isSingleLine || hasTrailingQuote || preferMultipleLines;\n var result = ''; // Format a multi-line block quote to account for leading space.\n\n if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n result += '\\n' + indentation;\n }\n\n result += indentation ? value.replace(/\\n/g, '\\n' + indentation) : value;\n\n if (printAsMultipleLines) {\n result += '\\n';\n }\n\n return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}\n","import React from 'react';\nvar ThemeContext = React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'ThemeContext';\n}\n\nexport default ThemeContext;","var hasSymbol = typeof Symbol === 'function' && Symbol.for;\nexport default hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__';","// A change of the browser zoom change the scrollbar size.\n// Credit https://github.com/twbs/bootstrap/blob/3ffe3a5d82f6f561b82ff78d82b32a7d14aed558/js/src/modal.js#L512-L519\nexport default function getScrollbarSize() {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.width = '99px';\n scrollDiv.style.height = '99px';\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarSize;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"\n}), 'Menu');\n\nexports.default = _default;","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar SideBarDefParser = /** @class */ (function () {\n function SideBarDefParser() {\n }\n SideBarDefParser.parse = function (toParse) {\n if (!toParse) {\n return null;\n }\n if (toParse === true) {\n return {\n toolPanels: [\n SideBarDefParser.DEFAULT_COLUMN_COMP,\n SideBarDefParser.DEFAULT_FILTER_COMP,\n ],\n defaultToolPanel: 'columns'\n };\n }\n if (typeof toParse === 'string') {\n return SideBarDefParser.parse([toParse]);\n }\n if (Array.isArray(toParse)) {\n var comps_1 = [];\n toParse.forEach(function (key) {\n var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[key];\n if (!lookupResult) {\n console.warn(\"ag-grid: the key \" + key + \" is not a valid key for specifying a tool panel, valid keys are: \" + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));\n return;\n }\n comps_1.push(lookupResult);\n });\n if (comps_1.length === 0) {\n return null;\n }\n return {\n toolPanels: comps_1,\n defaultToolPanel: comps_1[0].id\n };\n }\n var result = {\n toolPanels: SideBarDefParser.parseComponents(toParse.toolPanels),\n defaultToolPanel: toParse.defaultToolPanel,\n hiddenByDefault: toParse.hiddenByDefault,\n position: toParse.position\n };\n return result;\n };\n SideBarDefParser.parseComponents = function (from) {\n var result = [];\n from.forEach(function (it) {\n var toAdd = null;\n if (typeof it === 'string') {\n var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[it];\n if (!lookupResult) {\n console.warn(\"ag-grid: the key \" + it + \" is not a valid key for specifying a tool panel, valid keys are: \" + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));\n return;\n }\n toAdd = lookupResult;\n }\n else {\n toAdd = it;\n }\n result.push(toAdd);\n });\n return result;\n };\n SideBarDefParser.DEFAULT_COLUMN_COMP = {\n id: 'columns',\n labelDefault: 'Columns',\n labelKey: 'columns',\n iconKey: 'columns',\n toolPanel: 'agColumnsToolPanel',\n };\n SideBarDefParser.DEFAULT_FILTER_COMP = {\n id: 'filters',\n labelDefault: 'Filters',\n labelKey: 'filters',\n iconKey: 'filter',\n toolPanel: 'agFiltersToolPanel',\n };\n SideBarDefParser.DEFAULT_BY_KEY = {\n columns: SideBarDefParser.DEFAULT_COLUMN_COMP,\n filters: SideBarDefParser.DEFAULT_FILTER_COMP\n };\n return SideBarDefParser;\n}());\nexport { SideBarDefParser };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/* Common logic for options, used by both filters and floating filters. */\nvar OptionsFactory = /** @class */ (function () {\n function OptionsFactory() {\n this.customFilterOptions = {};\n }\n OptionsFactory.prototype.init = function (params, defaultOptions) {\n this.filterOptions = params.filterOptions ? params.filterOptions : defaultOptions;\n this.mapCustomOptions();\n this.selectDefaultItem(params);\n };\n OptionsFactory.prototype.getFilterOptions = function () {\n return this.filterOptions;\n };\n OptionsFactory.prototype.mapCustomOptions = function () {\n var _this = this;\n if (!this.filterOptions) {\n return;\n }\n this.filterOptions.forEach(function (filterOption) {\n if (typeof filterOption === 'string') {\n return;\n }\n if (!filterOption.displayKey) {\n console.warn(\"ag-Grid: ignoring FilterOptionDef as it doesn't contain a 'displayKey'\");\n return;\n }\n if (!filterOption.displayName) {\n console.warn(\"ag-Grid: ignoring FilterOptionDef as it doesn't contain a 'displayName'\");\n return;\n }\n if (!filterOption.test) {\n console.warn(\"ag-Grid: ignoring FilterOptionDef as it doesn't contain a 'test'\");\n return;\n }\n _this.customFilterOptions[filterOption.displayKey] = filterOption;\n });\n };\n OptionsFactory.prototype.selectDefaultItem = function (params) {\n if (params.defaultOption) {\n this.defaultOption = params.defaultOption;\n }\n else if (this.filterOptions.length >= 1) {\n var firstFilterOption = this.filterOptions[0];\n if (typeof firstFilterOption === 'string') {\n this.defaultOption = firstFilterOption;\n }\n else if (firstFilterOption.displayKey) {\n this.defaultOption = firstFilterOption.displayKey;\n }\n else {\n console.warn(\"ag-Grid: invalid FilterOptionDef supplied as it doesn't contain a 'displayKey'\");\n }\n }\n else {\n console.warn('ag-Grid: no filter options for filter');\n }\n };\n OptionsFactory.prototype.getDefaultOption = function () {\n return this.defaultOption;\n };\n OptionsFactory.prototype.getCustomOption = function (name) {\n return this.customFilterOptions[name];\n };\n return OptionsFactory;\n}());\nexport { OptionsFactory };\n","import * as React from 'react';\nimport { createSvgIcon } from '@material-ui/core/utils';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nexport default function formatDistance(token, count, options) {\n options = options || {};\n var result;\n\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n}","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nexport default function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n}","import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js';\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] // Note: in English, the names of days of the week and months are capitalized.\n // If you are making a new locale based on this one, check if the same is true for the language you're working on.\n // Generally, formatted dates should look like they are in the middle of a sentence,\n // e.g. in Spanish language the weekdays and months should be in the lowercase.\n\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nfunction ordinalNumber(dirtyNumber, _dirtyOptions) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return Number(quarter) - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js';\nimport buildMatchFn from '../../../_lib/buildMatchFn/index.js';\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import toInteger from '../_lib/toInteger/index.js';\nimport addMilliseconds from '../addMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/);\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","import toDate from '../../toDate/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nvar RadioGroupContext = /*#__PURE__*/React.createContext();\n\nif (process.env.NODE_ENV !== 'production') {\n RadioGroupContext.displayName = 'RadioGroupContext';\n}\n\nexport default RadioGroupContext;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nvar TableContext = /*#__PURE__*/React.createContext();\n\nif (process.env.NODE_ENV !== 'production') {\n TableContext.displayName = 'TableContext';\n}\n\nexport default TableContext;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z\"\n}), 'Sync');\n\nexports.default = _default;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * var result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\n\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\"\n}), 'Warning');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M14.59 8L12 10.59 9.41 8 8 9.41 10.59 12 8 14.59 9.41 16 12 13.41 14.59 16 16 14.59 13.41 12 16 9.41 14.59 8zM12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"\n}), 'HighlightOff');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'ErrorOutline');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M16.59 7.58L10 14.17l-3.59-3.58L5 12l5 5 8-8zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'CheckCircleOutline');\n\nexports.default = _default;","import toInteger from '../_lib/toInteger/index.js';\nimport addDays from '../addDays/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * var result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\n\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toDate from '../toDate/index.js';\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js'; // Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\n\nfunction compareLocalAsc(dateLeft, dateRight) {\n var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days according to the local timezone\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * var result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 51 days, even in\n * // time zones where DST starts and the\n * // period has only 51*24-1 hours.\n * var result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n//=> 51\n */\n\n\nexport default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareLocalAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n dateLeft.setDate(dateLeft.getDate() - sign * difference); // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastDayNotFull = compareLocalAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - isLastDayNotFull); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from '../utils/debounce';\nimport useForkRef from '../utils/useForkRef';\n\nfunction getStyleValue(computedStyle, property) {\n return parseInt(computedStyle[property], 10) || 0;\n}\n\nvar useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar styles = {\n /* Styles applied to the shadow textarea element. */\n shadow: {\n // Visibility needed to hide the extra text area on iPads\n visibility: 'hidden',\n // Remove from the content flow\n position: 'absolute',\n // Ignore the scrollbar width\n overflow: 'hidden',\n height: 0,\n top: 0,\n left: 0,\n // Create a new layer, increase the isolation of the computed values\n transform: 'translateZ(0)'\n }\n};\nvar TextareaAutosize = /*#__PURE__*/React.forwardRef(function TextareaAutosize(props, ref) {\n var onChange = props.onChange,\n rows = props.rows,\n rowsMax = props.rowsMax,\n _props$rowsMin = props.rowsMin,\n rowsMinProp = _props$rowsMin === void 0 ? 1 : _props$rowsMin,\n style = props.style,\n value = props.value,\n other = _objectWithoutProperties(props, [\"onChange\", \"rows\", \"rowsMax\", \"rowsMin\", \"style\", \"value\"]);\n\n var rowsMin = rows || rowsMinProp;\n\n var _React$useRef = React.useRef(value != null),\n isControlled = _React$useRef.current;\n\n var inputRef = React.useRef(null);\n var handleRef = useForkRef(ref, inputRef);\n var shadowRef = React.useRef(null);\n var renders = React.useRef(0);\n\n var _React$useState = React.useState({}),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var syncHeight = React.useCallback(function () {\n var input = inputRef.current;\n var computedStyle = window.getComputedStyle(input);\n var inputShallow = shadowRef.current;\n inputShallow.style.width = computedStyle.width;\n inputShallow.value = input.value || props.placeholder || 'x';\n\n if (inputShallow.value.slice(-1) === '\\n') {\n // Certain fonts which overflow the line height will cause the textarea\n // to report a different scrollHeight depending on whether the last line\n // is empty. Make it non-empty to avoid this issue.\n inputShallow.value += ' ';\n }\n\n var boxSizing = computedStyle['box-sizing'];\n var padding = getStyleValue(computedStyle, 'padding-bottom') + getStyleValue(computedStyle, 'padding-top');\n var border = getStyleValue(computedStyle, 'border-bottom-width') + getStyleValue(computedStyle, 'border-top-width'); // The height of the inner content\n\n var innerHeight = inputShallow.scrollHeight - padding; // Measure height of a textarea with a single row\n\n inputShallow.value = 'x';\n var singleRowHeight = inputShallow.scrollHeight - padding; // The height of the outer content\n\n var outerHeight = innerHeight;\n\n if (rowsMin) {\n outerHeight = Math.max(Number(rowsMin) * singleRowHeight, outerHeight);\n }\n\n if (rowsMax) {\n outerHeight = Math.min(Number(rowsMax) * singleRowHeight, outerHeight);\n }\n\n outerHeight = Math.max(outerHeight, singleRowHeight); // Take the box sizing into account for applying this value as a style.\n\n var outerHeightStyle = outerHeight + (boxSizing === 'border-box' ? padding + border : 0);\n var overflow = Math.abs(outerHeight - innerHeight) <= 1;\n setState(function (prevState) {\n // Need a large enough difference to update the height.\n // This prevents infinite rendering loop.\n if (renders.current < 20 && (outerHeightStyle > 0 && Math.abs((prevState.outerHeightStyle || 0) - outerHeightStyle) > 1 || prevState.overflow !== overflow)) {\n renders.current += 1;\n return {\n overflow: overflow,\n outerHeightStyle: outerHeightStyle\n };\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (renders.current === 20) {\n console.error(['Material-UI: Too many re-renders. The layout is unstable.', 'TextareaAutosize limits the number of renders to prevent an infinite loop.'].join('\\n'));\n }\n }\n\n return prevState;\n });\n }, [rowsMax, rowsMin, props.placeholder]);\n React.useEffect(function () {\n var handleResize = debounce(function () {\n renders.current = 0;\n syncHeight();\n });\n window.addEventListener('resize', handleResize);\n return function () {\n handleResize.clear();\n window.removeEventListener('resize', handleResize);\n };\n }, [syncHeight]);\n useEnhancedEffect(function () {\n syncHeight();\n });\n React.useEffect(function () {\n renders.current = 0;\n }, [value]);\n\n var handleChange = function handleChange(event) {\n renders.current = 0;\n\n if (!isControlled) {\n syncHeight();\n }\n\n if (onChange) {\n onChange(event);\n }\n };\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"textarea\", _extends({\n value: value,\n onChange: handleChange,\n ref: handleRef // Apply the rows prop to get a \"correct\" first SSR paint\n ,\n rows: rowsMin,\n style: _extends({\n height: state.outerHeightStyle,\n // Need a large enough difference to allow scrolling.\n // This prevents infinite rendering loop.\n overflow: state.overflow ? 'hidden' : null\n }, style)\n }, other)), /*#__PURE__*/React.createElement(\"textarea\", {\n \"aria-hidden\": true,\n className: props.className,\n readOnly: true,\n ref: shadowRef,\n tabIndex: -1,\n style: _extends({}, styles.shadow, style)\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TextareaAutosize.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * @ignore\n */\n onChange: PropTypes.func,\n\n /**\n * @ignore\n */\n placeholder: PropTypes.string,\n\n /**\n * Use `rowsMin` instead. The prop will be removed in v5.\n *\n * @deprecated\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Maximum number of rows to display.\n */\n rowsMax: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Minimum number of rows to display.\n */\n rowsMin: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * @ignore\n */\n value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.number, PropTypes.string])\n} : void 0;\nexport default TextareaAutosize;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\n\n/* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport formControlState from '../FormControl/formControlState';\nimport FormControlContext, { useFormControl } from '../FormControl/FormControlContext';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nimport useForkRef from '../utils/useForkRef';\nimport TextareaAutosize from '../TextareaAutosize';\nimport { isFilled } from './utils';\nexport var styles = function styles(theme) {\n var light = theme.palette.type === 'light';\n var placeholder = {\n color: 'currentColor',\n opacity: light ? 0.42 : 0.5,\n transition: theme.transitions.create('opacity', {\n duration: theme.transitions.duration.shorter\n })\n };\n var placeholderHidden = {\n opacity: '0 !important'\n };\n var placeholderVisible = {\n opacity: light ? 0.42 : 0.5\n };\n return {\n '@global': {\n '@keyframes mui-auto-fill': {},\n '@keyframes mui-auto-fill-cancel': {}\n },\n\n /* Styles applied to the root element. */\n root: _extends({}, theme.typography.body1, {\n color: theme.palette.text.primary,\n lineHeight: '1.1876em',\n // Reset (19px), match the native input line-height\n boxSizing: 'border-box',\n // Prevent padding issue with fullWidth.\n position: 'relative',\n cursor: 'text',\n display: 'inline-flex',\n alignItems: 'center',\n '&$disabled': {\n color: theme.palette.text.disabled,\n cursor: 'default'\n }\n }),\n\n /* Styles applied to the root element if the component is a descendant of `FormControl`. */\n formControl: {},\n\n /* Styles applied to the root element if the component is focused. */\n focused: {},\n\n /* Styles applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the root element if `startAdornment` is provided. */\n adornedStart: {},\n\n /* Styles applied to the root element if `endAdornment` is provided. */\n adornedEnd: {},\n\n /* Pseudo-class applied to the root element if `error={true}`. */\n error: {},\n\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n marginDense: {},\n\n /* Styles applied to the root element if `multiline={true}`. */\n multiline: {\n padding: \"\".concat(8 - 2, \"px 0 \").concat(8 - 1, \"px\"),\n '&$marginDense': {\n paddingTop: 4 - 1\n }\n },\n\n /* Styles applied to the root element if the color is secondary. */\n colorSecondary: {},\n\n /* Styles applied to the root element if `fullWidth={true}`. */\n fullWidth: {\n width: '100%'\n },\n\n /* Styles applied to the `input` element. */\n input: {\n font: 'inherit',\n letterSpacing: 'inherit',\n color: 'currentColor',\n padding: \"\".concat(8 - 2, \"px 0 \").concat(8 - 1, \"px\"),\n border: 0,\n boxSizing: 'content-box',\n background: 'none',\n height: '1.1876em',\n // Reset (19px), match the native input line-height\n margin: 0,\n // Reset for Safari\n WebkitTapHighlightColor: 'transparent',\n display: 'block',\n // Make the flex item shrink with Firefox\n minWidth: 0,\n width: '100%',\n // Fix IE 11 width issue\n animationName: 'mui-auto-fill-cancel',\n animationDuration: '10ms',\n '&::-webkit-input-placeholder': placeholder,\n '&::-moz-placeholder': placeholder,\n // Firefox 19+\n '&:-ms-input-placeholder': placeholder,\n // IE 11\n '&::-ms-input-placeholder': placeholder,\n // Edge\n '&:focus': {\n outline: 0\n },\n // Reset Firefox invalid required input style\n '&:invalid': {\n boxShadow: 'none'\n },\n '&::-webkit-search-decoration': {\n // Remove the padding when type=search.\n '-webkit-appearance': 'none'\n },\n // Show and hide the placeholder logic\n 'label[data-shrink=false] + $formControl &': {\n '&::-webkit-input-placeholder': placeholderHidden,\n '&::-moz-placeholder': placeholderHidden,\n // Firefox 19+\n '&:-ms-input-placeholder': placeholderHidden,\n // IE 11\n '&::-ms-input-placeholder': placeholderHidden,\n // Edge\n '&:focus::-webkit-input-placeholder': placeholderVisible,\n '&:focus::-moz-placeholder': placeholderVisible,\n // Firefox 19+\n '&:focus:-ms-input-placeholder': placeholderVisible,\n // IE 11\n '&:focus::-ms-input-placeholder': placeholderVisible // Edge\n\n },\n '&$disabled': {\n opacity: 1 // Reset iOS opacity\n\n },\n '&:-webkit-autofill': {\n animationDuration: '5000s',\n animationName: 'mui-auto-fill'\n }\n },\n\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n inputMarginDense: {\n paddingTop: 4 - 1\n },\n\n /* Styles applied to the `input` element if `multiline={true}`. */\n inputMultiline: {\n height: 'auto',\n resize: 'none',\n padding: 0\n },\n\n /* Styles applied to the `input` element if `type=\"search\"`. */\n inputTypeSearch: {\n // Improve type search style.\n '-moz-appearance': 'textfield',\n '-webkit-appearance': 'textfield'\n },\n\n /* Styles applied to the `input` element if `startAdornment` is provided. */\n inputAdornedStart: {},\n\n /* Styles applied to the `input` element if `endAdornment` is provided. */\n inputAdornedEnd: {},\n\n /* Styles applied to the `input` element if `hiddenLabel={true}`. */\n inputHiddenLabel: {}\n };\n};\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n/**\n * `InputBase` contains as few styles as possible.\n * It aims to be a simple building block for creating an input.\n * It contains a load of style reset and some state logic.\n */\n\nvar InputBase = /*#__PURE__*/React.forwardRef(function InputBase(props, ref) {\n var ariaDescribedby = props['aria-describedby'],\n autoComplete = props.autoComplete,\n autoFocus = props.autoFocus,\n classes = props.classes,\n className = props.className,\n color = props.color,\n defaultValue = props.defaultValue,\n disabled = props.disabled,\n endAdornment = props.endAdornment,\n error = props.error,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n id = props.id,\n _props$inputComponent = props.inputComponent,\n inputComponent = _props$inputComponent === void 0 ? 'input' : _props$inputComponent,\n _props$inputProps = props.inputProps,\n inputPropsProp = _props$inputProps === void 0 ? {} : _props$inputProps,\n inputRefProp = props.inputRef,\n margin = props.margin,\n _props$multiline = props.multiline,\n multiline = _props$multiline === void 0 ? false : _props$multiline,\n name = props.name,\n onBlur = props.onBlur,\n onChange = props.onChange,\n onClick = props.onClick,\n onFocus = props.onFocus,\n onKeyDown = props.onKeyDown,\n onKeyUp = props.onKeyUp,\n placeholder = props.placeholder,\n readOnly = props.readOnly,\n renderSuffix = props.renderSuffix,\n rows = props.rows,\n rowsMax = props.rowsMax,\n rowsMin = props.rowsMin,\n startAdornment = props.startAdornment,\n _props$type = props.type,\n type = _props$type === void 0 ? 'text' : _props$type,\n valueProp = props.value,\n other = _objectWithoutProperties(props, [\"aria-describedby\", \"autoComplete\", \"autoFocus\", \"classes\", \"className\", \"color\", \"defaultValue\", \"disabled\", \"endAdornment\", \"error\", \"fullWidth\", \"id\", \"inputComponent\", \"inputProps\", \"inputRef\", \"margin\", \"multiline\", \"name\", \"onBlur\", \"onChange\", \"onClick\", \"onFocus\", \"onKeyDown\", \"onKeyUp\", \"placeholder\", \"readOnly\", \"renderSuffix\", \"rows\", \"rowsMax\", \"rowsMin\", \"startAdornment\", \"type\", \"value\"]);\n\n var value = inputPropsProp.value != null ? inputPropsProp.value : valueProp;\n\n var _React$useRef = React.useRef(value != null),\n isControlled = _React$useRef.current;\n\n var inputRef = React.useRef();\n var handleInputRefWarning = React.useCallback(function (instance) {\n if (process.env.NODE_ENV !== 'production') {\n if (instance && instance.nodeName !== 'INPUT' && !instance.focus) {\n console.error(['Material-UI: You have provided a `inputComponent` to the input component', 'that does not correctly handle the `inputRef` prop.', 'Make sure the `inputRef` prop is called with a HTMLInputElement.'].join('\\n'));\n }\n }\n }, []);\n var handleInputPropsRefProp = useForkRef(inputPropsProp.ref, handleInputRefWarning);\n var handleInputRefProp = useForkRef(inputRefProp, handleInputPropsRefProp);\n var handleInputRef = useForkRef(inputRef, handleInputRefProp);\n\n var _React$useState = React.useState(false),\n focused = _React$useState[0],\n setFocused = _React$useState[1];\n\n var muiFormControl = useFormControl();\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(function () {\n if (muiFormControl) {\n return muiFormControl.registerEffect();\n }\n\n return undefined;\n }, [muiFormControl]);\n }\n\n var fcs = formControlState({\n props: props,\n muiFormControl: muiFormControl,\n states: ['color', 'disabled', 'error', 'hiddenLabel', 'margin', 'required', 'filled']\n });\n fcs.focused = muiFormControl ? muiFormControl.focused : focused; // The blur won't fire when the disabled state is set on a focused input.\n // We need to book keep the focused state manually.\n\n React.useEffect(function () {\n if (!muiFormControl && disabled && focused) {\n setFocused(false);\n\n if (onBlur) {\n onBlur();\n }\n }\n }, [muiFormControl, disabled, focused, onBlur]);\n var onFilled = muiFormControl && muiFormControl.onFilled;\n var onEmpty = muiFormControl && muiFormControl.onEmpty;\n var checkDirty = React.useCallback(function (obj) {\n if (isFilled(obj)) {\n if (onFilled) {\n onFilled();\n }\n } else if (onEmpty) {\n onEmpty();\n }\n }, [onFilled, onEmpty]);\n useEnhancedEffect(function () {\n if (isControlled) {\n checkDirty({\n value: value\n });\n }\n }, [value, checkDirty, isControlled]);\n\n var handleFocus = function handleFocus(event) {\n // Fix a bug with IE 11 where the focus/blur events are triggered\n // while the input is disabled.\n if (fcs.disabled) {\n event.stopPropagation();\n return;\n }\n\n if (onFocus) {\n onFocus(event);\n }\n\n if (inputPropsProp.onFocus) {\n inputPropsProp.onFocus(event);\n }\n\n if (muiFormControl && muiFormControl.onFocus) {\n muiFormControl.onFocus(event);\n } else {\n setFocused(true);\n }\n };\n\n var handleBlur = function handleBlur(event) {\n if (onBlur) {\n onBlur(event);\n }\n\n if (inputPropsProp.onBlur) {\n inputPropsProp.onBlur(event);\n }\n\n if (muiFormControl && muiFormControl.onBlur) {\n muiFormControl.onBlur(event);\n } else {\n setFocused(false);\n }\n };\n\n var handleChange = function handleChange(event) {\n if (!isControlled) {\n var element = event.target || inputRef.current;\n\n if (element == null) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: Expected valid input target. Did you use a custom `inputComponent` and forget to forward refs? See https://material-ui.com/r/input-component-ref-interface for more info.\" : _formatMuiErrorMessage(1));\n }\n\n checkDirty({\n value: element.value\n });\n }\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (inputPropsProp.onChange) {\n inputPropsProp.onChange.apply(inputPropsProp, [event].concat(args));\n } // Perform in the willUpdate\n\n\n if (onChange) {\n onChange.apply(void 0, [event].concat(args));\n }\n }; // Check the input state on mount, in case it was filled by the user\n // or auto filled by the browser before the hydration (for SSR).\n\n\n React.useEffect(function () {\n checkDirty(inputRef.current);\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n var handleClick = function handleClick(event) {\n if (inputRef.current && event.currentTarget === event.target) {\n inputRef.current.focus();\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n var InputComponent = inputComponent;\n\n var inputProps = _extends({}, inputPropsProp, {\n ref: handleInputRef\n });\n\n if (typeof InputComponent !== 'string') {\n inputProps = _extends({\n // Rename ref to inputRef as we don't know the\n // provided `inputComponent` structure.\n inputRef: handleInputRef,\n type: type\n }, inputProps, {\n ref: null\n });\n } else if (multiline) {\n if (rows && !rowsMax && !rowsMin) {\n InputComponent = 'textarea';\n } else {\n inputProps = _extends({\n rows: rows,\n rowsMax: rowsMax\n }, inputProps);\n InputComponent = TextareaAutosize;\n }\n } else {\n inputProps = _extends({\n type: type\n }, inputProps);\n }\n\n var handleAutoFill = function handleAutoFill(event) {\n // Provide a fake value as Chrome might not let you access it for security reasons.\n checkDirty(event.animationName === 'mui-auto-fill-cancel' ? inputRef.current : {\n value: 'x'\n });\n };\n\n React.useEffect(function () {\n if (muiFormControl) {\n muiFormControl.setAdornedStart(Boolean(startAdornment));\n }\n }, [muiFormControl, startAdornment]);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, classes[\"color\".concat(capitalize(fcs.color || 'primary'))], className, fcs.disabled && classes.disabled, fcs.error && classes.error, fullWidth && classes.fullWidth, fcs.focused && classes.focused, muiFormControl && classes.formControl, multiline && classes.multiline, startAdornment && classes.adornedStart, endAdornment && classes.adornedEnd, fcs.margin === 'dense' && classes.marginDense),\n onClick: handleClick,\n ref: ref\n }, other), startAdornment, /*#__PURE__*/React.createElement(FormControlContext.Provider, {\n value: null\n }, /*#__PURE__*/React.createElement(InputComponent, _extends({\n \"aria-invalid\": fcs.error,\n \"aria-describedby\": ariaDescribedby,\n autoComplete: autoComplete,\n autoFocus: autoFocus,\n defaultValue: defaultValue,\n disabled: fcs.disabled,\n id: id,\n onAnimationStart: handleAutoFill,\n name: name,\n placeholder: placeholder,\n readOnly: readOnly,\n required: fcs.required,\n rows: rows,\n value: value,\n onKeyDown: onKeyDown,\n onKeyUp: onKeyUp\n }, inputProps, {\n className: clsx(classes.input, inputPropsProp.className, fcs.disabled && classes.disabled, multiline && classes.inputMultiline, fcs.hiddenLabel && classes.inputHiddenLabel, startAdornment && classes.inputAdornedStart, endAdornment && classes.inputAdornedEnd, type === 'search' && classes.inputTypeSearch, fcs.margin === 'dense' && classes.inputMarginDense),\n onBlur: handleBlur,\n onChange: handleChange,\n onFocus: handleFocus\n }))), endAdornment, renderSuffix ? renderSuffix(_extends({}, fcs, {\n startAdornment: startAdornment\n })) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? InputBase.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * @ignore\n */\n 'aria-describedby': PropTypes.string,\n\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n\n /**\n * If `true`, the `input` element will be focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['primary', 'secondary']),\n\n /**\n * The default `input` element value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n\n /**\n * If `true`, the `input` element will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n\n /**\n * If `true`, the input will indicate an error. This is normally obtained via context from\n * FormControl.\n */\n error: PropTypes.bool,\n\n /**\n * If `true`, the input will take up the full width of its container.\n */\n fullWidth: PropTypes.bool,\n\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n */\n inputComponent: PropTypes.elementType,\n\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n\n /**\n * If `true`, a textarea element will be rendered.\n */\n multiline: PropTypes.bool,\n\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n\n /**\n * Callback fired when the input is blurred.\n *\n * Notice that the first argument (event) might be undefined.\n */\n onBlur: PropTypes.func,\n\n /**\n * Callback fired when the value is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n\n /**\n * @ignore\n */\n onKeyUp: PropTypes.func,\n\n /**\n * The short hint displayed in the input before the user enters a value.\n */\n placeholder: PropTypes.string,\n\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n\n /**\n * @ignore\n */\n renderSuffix: PropTypes.func,\n\n /**\n * If `true`, the `input` element will be required.\n */\n required: PropTypes.bool,\n\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n rowsMax: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Minimum number of rows to display when multiline option is set to true.\n */\n rowsMin: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n */\n type: PropTypes.string,\n\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiInputBase'\n})(InputBase);","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { AgCheckbox } from \"../../widgets/agCheckbox\";\nimport { BeanStub } from \"../../context/beanStub\";\nimport { PostConstruct, Autowired } from \"../../context/context\";\nimport { Events } from \"../../events\";\nimport { Constants } from \"../../constants\";\nvar SelectAllFeature = /** @class */ (function (_super) {\n __extends(SelectAllFeature, _super);\n function SelectAllFeature(cbSelectAll, column) {\n var _this = _super.call(this) || this;\n _this.cbSelectAllVisible = false;\n _this.processingEventFromCheckbox = false;\n _this.cbSelectAll = cbSelectAll;\n _this.column = column;\n var colDef = column.getColDef();\n _this.filteredOnly = colDef ? !!colDef.headerCheckboxSelectionFilteredOnly : false;\n return _this;\n }\n SelectAllFeature.prototype.postConstruct = function () {\n this.showOrHideSelectAll();\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.showOrHideSelectAll.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_SELECTION_CHANGED, this.onSelectionChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onModelChanged.bind(this));\n this.addDestroyableEventListener(this.cbSelectAll, AgCheckbox.EVENT_CHANGED, this.onCbSelectAll.bind(this));\n };\n SelectAllFeature.prototype.showOrHideSelectAll = function () {\n this.cbSelectAllVisible = this.isCheckboxSelection();\n this.cbSelectAll.setDisplayed(this.cbSelectAllVisible);\n if (this.cbSelectAllVisible) {\n // in case user is trying this feature with the wrong model type\n this.checkRightRowModelType();\n // make sure checkbox is showing the right state\n this.updateStateOfCheckbox();\n }\n };\n SelectAllFeature.prototype.onModelChanged = function () {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n };\n SelectAllFeature.prototype.onSelectionChanged = function () {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n };\n SelectAllFeature.prototype.getNextCheckboxState = function (selectionCount) {\n if (selectionCount.selected === 0 && selectionCount.notSelected === 0) {\n // if no rows, always have it unselected\n return false;\n }\n else if (selectionCount.selected > 0 && selectionCount.notSelected > 0) {\n // if mix of selected and unselected, this is the tri-state\n return null;\n }\n else if (selectionCount.selected > 0) {\n // only selected\n return true;\n }\n else {\n // nothing selected\n return false;\n }\n };\n SelectAllFeature.prototype.updateStateOfCheckbox = function () {\n if (this.processingEventFromCheckbox) {\n return;\n }\n this.processingEventFromCheckbox = true;\n var selectionCount = this.getSelectionCount();\n var allSelected = this.getNextCheckboxState(selectionCount);\n this.cbSelectAll.setValue(allSelected);\n this.processingEventFromCheckbox = false;\n };\n SelectAllFeature.prototype.getSelectionCount = function () {\n var _this = this;\n var selectedCount = 0;\n var notSelectedCount = 0;\n var callback = function (node) {\n if (_this.gridOptionsWrapper.isGroupSelectsChildren() && node.group) {\n return;\n }\n if (node.isSelected()) {\n selectedCount++;\n }\n else if (!node.selectable) {\n // don't count non-selectable nodes!\n }\n else {\n notSelectedCount++;\n }\n };\n if (this.filteredOnly) {\n this.gridApi.forEachNodeAfterFilter(callback);\n }\n else {\n this.gridApi.forEachNode(callback);\n }\n return {\n notSelected: notSelectedCount,\n selected: selectedCount\n };\n };\n SelectAllFeature.prototype.checkRightRowModelType = function () {\n var rowModelType = this.rowModel.getType();\n var rowModelMatches = rowModelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n if (!rowModelMatches) {\n console.warn(\"ag-Grid: selectAllCheckbox is only available if using normal row model, you are using \" + rowModelType);\n }\n };\n SelectAllFeature.prototype.onCbSelectAll = function () {\n if (this.processingEventFromCheckbox) {\n return;\n }\n if (!this.cbSelectAllVisible) {\n return;\n }\n var value = this.cbSelectAll.getValue();\n if (value) {\n this.selectionController.selectAllRowNodes(this.filteredOnly);\n }\n else {\n this.selectionController.deselectAllRowNodes(this.filteredOnly);\n }\n };\n SelectAllFeature.prototype.isCheckboxSelection = function () {\n var result = this.column.getColDef().headerCheckboxSelection;\n if (typeof result === 'function') {\n var func = result;\n result = func({\n column: this.column,\n colDef: this.column.getColDef(),\n columnApi: this.columnApi,\n api: this.gridApi\n });\n }\n if (result) {\n if (this.gridOptionsWrapper.isRowModelServerSide()) {\n console.warn('headerCheckboxSelection is not supported for Server Side Row Model');\n return false;\n }\n if (this.gridOptionsWrapper.isRowModelInfinite()) {\n console.warn('headerCheckboxSelection is not supported for Infinite Row Model');\n return false;\n }\n if (this.gridOptionsWrapper.isRowModelViewport()) {\n console.warn('headerCheckboxSelection is not supported for Viewport Row Model');\n return false;\n }\n // otherwise the row model is compatible, so return true\n return true;\n }\n else {\n return false;\n }\n };\n __decorate([\n Autowired('gridApi')\n ], SelectAllFeature.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], SelectAllFeature.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('eventService')\n ], SelectAllFeature.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('rowModel')\n ], SelectAllFeature.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('selectionController')\n ], SelectAllFeature.prototype, \"selectionController\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], SelectAllFeature.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], SelectAllFeature.prototype, \"postConstruct\", null);\n return SelectAllFeature;\n}(BeanStub));\nexport { SelectAllFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v22.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\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};\nimport { Component } from \"../../widgets/component\";\nimport { Autowired, PostConstruct } from \"../../context/context\";\nimport { Column } from \"../../entities/column\";\nimport { DragSourceType } from \"../../dragAndDrop/dragAndDropService\";\nimport { CssClassApplier } from \"../cssClassApplier\";\nimport { SetLeftFeature } from \"../../rendering/features/setLeftFeature\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { SelectAllFeature } from \"./selectAllFeature\";\nimport { Events } from \"../../events\";\nimport { HoverFeature } from \"../hoverFeature\";\nimport { TouchListener } from \"../../widgets/touchListener\";\nimport { _ } from \"../../utils\";\nimport { Constants } from \"../../constants\";\nvar HeaderWrapperComp = /** @class */ (function (_super) {\n __extends(HeaderWrapperComp, _super);\n function HeaderWrapperComp(column, dragSourceDropTarget, pinned) {\n var _this = _super.call(this, HeaderWrapperComp.TEMPLATE) || this;\n _this.column = column;\n _this.dragSourceDropTarget = dragSourceDropTarget;\n _this.pinned = pinned;\n return _this;\n }\n HeaderWrapperComp.prototype.getColumn = function () {\n return this.column;\n };\n HeaderWrapperComp.prototype.getComponentHolder = function () {\n return this.column.getColDef();\n };\n HeaderWrapperComp.prototype.init = function () {\n var colDef = this.getComponentHolder();\n var displayName = this.columnController.getDisplayNameForColumn(this.column, 'header', true);\n var enableSorting = colDef.sortable;\n var enableMenu = this.menuFactory.isMenuEnabled(this.column) && !colDef.suppressMenu;\n this.appendHeaderComp(displayName, enableSorting, enableMenu);\n this.setupWidth();\n this.setupMovingCss();\n this.setupTooltip();\n this.setupResize();\n this.setupMenuClass();\n this.setupSortableClass(enableSorting);\n this.addColumnHoverListener();\n this.addFeature(new HoverFeature([this.column], this.getGui()));\n this.addDestroyableEventListener(this.column, Column.EVENT_FILTER_ACTIVE_CHANGED, this.onFilterChanged.bind(this));\n this.onFilterChanged();\n this.addFeature(new SelectAllFeature(this.cbSelectAll, this.column));\n var setLeftFeature = new SetLeftFeature(this.column, this.getGui(), this.beans);\n setLeftFeature.init();\n this.addDestroyFunc(setLeftFeature.destroy.bind(setLeftFeature));\n this.addAttributes();\n CssClassApplier.addHeaderClassesFromColDef(colDef, this.getGui(), this.gridOptionsWrapper, this.column, null);\n };\n HeaderWrapperComp.prototype.addColumnHoverListener = function () {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, this.onColumnHover.bind(this));\n this.onColumnHover();\n };\n HeaderWrapperComp.prototype.onColumnHover = function () {\n var isHovered = this.columnHoverService.isHovered(this.column);\n _.addOrRemoveCssClass(this.getGui(), 'ag-column-hover', isHovered);\n };\n HeaderWrapperComp.prototype.setupSortableClass = function (enableSorting) {\n if (enableSorting) {\n var element = this.getGui();\n _.addCssClass(element, 'ag-header-cell-sortable');\n }\n };\n HeaderWrapperComp.prototype.onFilterChanged = function () {\n var filterPresent = this.column.isFilterActive();\n _.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-filtered', filterPresent);\n };\n HeaderWrapperComp.prototype.appendHeaderComp = function (displayName, enableSorting, enableMenu) {\n var _this = this;\n var params = {\n column: this.column,\n displayName: displayName,\n enableSorting: enableSorting,\n enableMenu: enableMenu,\n showColumnMenu: function (source) {\n _this.gridApi.showColumnMenuAfterButtonClick(_this.column, source);\n },\n progressSort: function (multiSort) {\n _this.sortController.progressSort(_this.column, !!multiSort, \"uiColumnSorted\");\n },\n setSort: function (sort, multiSort) {\n _this.sortController.setSortForColumn(_this.column, sort, !!multiSort, \"uiColumnSorted\");\n },\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsWrapper.getContext()\n };\n var callback = this.afterHeaderCompCreated.bind(this, displayName);\n this.userComponentFactory.newHeaderComponent(params).then(callback);\n };\n HeaderWrapperComp.prototype.afterHeaderCompCreated = function (displayName, headerComp) {\n this.appendChild(headerComp);\n this.setupMove(headerComp.getGui(), displayName);\n };\n HeaderWrapperComp.prototype.onColumnMovingChanged = function () {\n // this function adds or removes the moving css, based on if the col is moving.\n // this is what makes the header go dark when it is been moved (gives impression to\n // user that the column was picked up).\n if (this.column.isMoving()) {\n _.addCssClass(this.getGui(), 'ag-header-cell-moving');\n }\n else {\n _.removeCssClass(this.getGui(), 'ag-header-cell-moving');\n }\n };\n HeaderWrapperComp.prototype.setupMove = function (eHeaderCellLabel, displayName) {\n var _this = this;\n var suppressMove = this.gridOptionsWrapper.isSuppressMovableColumns()\n || this.getComponentHolder().suppressMovable\n || this.column.getColDef().lockPosition;\n if (suppressMove) {\n return;\n }\n if (eHeaderCellLabel) {\n var dragSource_1 = {\n type: DragSourceType.HeaderCell,\n eElement: eHeaderCellLabel,\n dragItemCallback: function () { return _this.createDragItem(); },\n dragItemName: displayName,\n dragSourceDropTarget: this.dragSourceDropTarget,\n dragStarted: function () { return _this.column.setMoving(true, \"uiColumnMoved\"); },\n dragStopped: function () { return _this.column.setMoving(false, \"uiColumnMoved\"); }\n };\n this.dragAndDropService.addDragSource(dragSource_1, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource_1); });\n }\n };\n HeaderWrapperComp.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 HeaderWrapperComp.prototype.setupResize = function () {\n var _this = this;\n var colDef = this.getComponentHolder();\n // if no eResize in template, do nothing\n if (!this.eResize) {\n return;\n }\n if (!this.column.isResizable()) {\n _.removeFromParent(this.eResize);\n return;\n }\n var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({\n eResizeBar: this.eResize,\n onResizeStart: this.onResizeStart.bind(this),\n onResizing: this.onResizing.bind(this, false),\n onResizeEnd: this.onResizing.bind(this, true)\n });\n this.addDestroyFunc(finishedWithResizeFunc);\n var weWantAutoSize = !this.gridOptionsWrapper.isSuppressAutoSize() && !colDef.suppressAutoSize;\n if (weWantAutoSize) {\n this.addDestroyableEventListener(this.eResize, 'dblclick', function () {\n _this.columnController.autoSizeColumn(_this.column, \"uiColumnResized\");\n });\n var touchListener = new TouchListener(this.eResize);\n this.addDestroyableEventListener(touchListener, TouchListener.EVENT_DOUBLE_TAP, function () {\n _this.columnController.autoSizeColumn(_this.column, \"uiColumnResized\");\n });\n this.addDestroyFunc(touchListener.destroy.bind(touchListener));\n }\n };\n HeaderWrapperComp.prototype.onResizing = function (finished, resizeAmount) {\n var resizeAmountNormalised = this.normaliseResizeAmount(resizeAmount);\n var newWidth = this.resizeStartWidth + resizeAmountNormalised;\n this.columnController.setColumnWidth(this.column, newWidth, this.resizeWithShiftKey, finished, \"uiColumnDragged\");\n if (finished) {\n _.removeCssClass(this.getGui(), 'ag-column-resizing');\n }\n };\n HeaderWrapperComp.prototype.onResizeStart = function (shiftKey) {\n this.resizeStartWidth = this.column.getActualWidth();\n this.resizeWithShiftKey = shiftKey;\n _.addCssClass(this.getGui(), 'ag-column-resizing');\n };\n HeaderWrapperComp.prototype.getTooltipText = function () {\n var colDef = this.getComponentHolder();\n return colDef.headerTooltip;\n };\n HeaderWrapperComp.prototype.setupTooltip = function () {\n var tooltipText = this.getTooltipText();\n // add tooltip if exists\n if (tooltipText == null) {\n return;\n }\n if (this.gridOptionsWrapper.isEnableBrowserTooltips()) {\n this.getGui().setAttribute('title', tooltipText);\n }\n else {\n this.beans.tooltipManager.registerTooltip(this);\n }\n };\n HeaderWrapperComp.prototype.setupMovingCss = function () {\n this.addDestroyableEventListener(this.column, Column.EVENT_MOVING_CHANGED, this.onColumnMovingChanged.bind(this));\n this.onColumnMovingChanged();\n };\n HeaderWrapperComp.prototype.addAttributes = function () {\n this.getGui().setAttribute(\"col-id\", this.column.getColId());\n };\n HeaderWrapperComp.prototype.setupWidth = function () {\n this.addDestroyableEventListener(this.column, Column.EVENT_WIDTH_CHANGED, this.onColumnWidthChanged.bind(this));\n this.onColumnWidthChanged();\n };\n HeaderWrapperComp.prototype.setupMenuClass = function () {\n this.addDestroyableEventListener(this.column, Column.EVENT_MENU_VISIBLE_CHANGED, this.onMenuVisible.bind(this));\n this.onColumnWidthChanged();\n };\n HeaderWrapperComp.prototype.onMenuVisible = function () {\n this.addOrRemoveCssClass('ag-column-menu-visible', this.column.isMenuVisible());\n };\n HeaderWrapperComp.prototype.onColumnWidthChanged = function () {\n this.getGui().style.width = this.column.getActualWidth() + 'px';\n };\n // optionally inverts the drag, depending on pinned and RTL\n // note - this method is duplicated in RenderedHeaderGroupCell - should refactor out?\n HeaderWrapperComp.prototype.normaliseResizeAmount = function (dragChange) {\n var result = dragChange;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, dragging left makes the col bigger, except when pinning left\n if (this.pinned !== Constants.PINNED_LEFT) {\n result *= -1;\n }\n }\n else {\n // for LTR (ie normal), dragging left makes the col smaller, except when pinning right\n if (this.pinned === Constants.PINNED_RIGHT) {\n result *= -1;\n }\n }\n return result;\n };\n HeaderWrapperComp.TEMPLATE = '
' +\n '
' +\n '' +\n // \n '
';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], HeaderWrapperComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], HeaderWrapperComp.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('columnController')\n ], HeaderWrapperComp.prototype, \"columnController\", void 0);\n __decorate([\n Autowired('horizontalResizeService')\n ], HeaderWrapperComp.prototype, \"horizontalResizeService\", void 0);\n __decorate([\n Autowired('menuFactory')\n ], HeaderWrapperComp.prototype, \"menuFactory\", void 0);\n __decorate([\n Autowired('gridApi')\n ], HeaderWrapperComp.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], HeaderWrapperComp.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('sortController')\n ], HeaderWrapperComp.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('eventService')\n ], HeaderWrapperComp.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], HeaderWrapperComp.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('columnHoverService')\n ], HeaderWrapperComp.prototype, \"columnHoverService\", void 0);\n __decorate([\n Autowired('beans')\n ], HeaderWrapperComp.prototype, \"beans\", void 0);\n __decorate([\n RefSelector('eResize')\n ], HeaderWrapperComp.prototype, \"eResize\", void 0);\n __decorate([\n RefSelector('cbSelectAll')\n ], HeaderWrapperComp.prototype, \"cbSelectAll\", void 0);\n __decorate([\n PostConstruct\n ], HeaderWrapperComp.prototype, \"init\", null);\n return HeaderWrapperComp;\n}(Component));\nexport { HeaderWrapperComp };\n","import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js';\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","import formatDistance from './_lib/formatDistance/index.js';\nimport formatLong from './_lib/formatLong/index.js';\nimport formatRelative from './_lib/formatRelative/index.js';\nimport localize from './_lib/localize/index.js';\nimport match from './_lib/match/index.js';\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\n\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import toInteger from '../toInteger/index.js';\nimport getUTCWeekYear from '../getUTCWeekYear/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport startOfUTCWeekYear from '../startOfUTCWeekYear/index.js';\nimport requiredArgs from '../requiredArgs/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from '../getUTCISOWeekYear/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport startOfUTCISOWeekYear from '../startOfUTCISOWeekYear/index.js';\nimport requiredArgs from '../requiredArgs/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","var isBuffer = require('is-buffer')\n\nvar flat = module.exports = flatten\nflatten.flatten = flatten\nflatten.unflatten = unflatten\n\nfunction flatten(target, opts) {\n opts = opts || {}\n\n var delimiter = opts.delimiter || '.'\n var maxDepth = opts.maxDepth\n var output = {}\n\n function step(object, prev, currentDepth) {\n currentDepth = currentDepth ? currentDepth : 1\n Object.keys(object).forEach(function(key) {\n var value = object[key]\n var isarray = opts.safe && Array.isArray(value)\n var type = Object.prototype.toString.call(value)\n var isbuffer = isBuffer(value)\n var isobject = (\n type === \"[object Object]\" ||\n type === \"[object Array]\"\n )\n\n var newKey = prev\n ? prev + delimiter + key\n : key\n\n if (!isarray && !isbuffer && isobject && Object.keys(value).length &&\n (!opts.maxDepth || currentDepth < maxDepth)) {\n return step(value, newKey, currentDepth + 1)\n }\n\n output[newKey] = value\n })\n }\n\n step(target)\n\n return output\n}\n\nfunction unflatten(target, opts) {\n opts = opts || {}\n\n var delimiter = opts.delimiter || '.'\n var overwrite = opts.overwrite || false\n var result = {}\n\n var isbuffer = isBuffer(target)\n if (isbuffer || Object.prototype.toString.call(target) !== '[object Object]') {\n return target\n }\n\n // safely ensure that the key is\n // an integer.\n function getkey(key) {\n var parsedKey = Number(key)\n\n return (\n isNaN(parsedKey) ||\n key.indexOf('.') !== -1\n ) ? key\n : parsedKey\n }\n\n Object.keys(target).forEach(function(key) {\n var split = key.split(delimiter)\n var key1 = getkey(split.shift())\n var key2 = getkey(split[0])\n var recipient = result\n\n while (key2 !== undefined) {\n var type = Object.prototype.toString.call(recipient[key1])\n var isobject = (\n type === \"[object Object]\" ||\n type === \"[object Array]\"\n )\n\n // do not write over falsey, non-undefined values if overwrite is false\n if (!overwrite && !isobject && typeof recipient[key1] !== 'undefined') {\n return\n }\n\n if ((overwrite && !isobject) || (!overwrite && recipient[key1] == null)) {\n recipient[key1] = (\n typeof key2 === 'number' &&\n !opts.object ? [] : {}\n )\n }\n\n recipient = recipient[key1]\n if (split.length > 0) {\n key1 = getkey(split.shift())\n key2 = getkey(split[0])\n }\n }\n\n // unflatten again for 'messy objects'\n recipient[key1] = unflatten(target[key], opts)\n })\n\n return result\n}\n","import React from 'react';\nimport ThemeContext from './ThemeContext';\nexport default function useTheme() {\n var theme = React.useContext(ThemeContext);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n\n return theme;\n}","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport useEventCallback from '../utils/useEventCallback';\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n/**\n * @ignore - internal component.\n */\n\nfunction Ripple(props) {\n var classes = props.classes,\n _props$pulsate = props.pulsate,\n pulsate = _props$pulsate === void 0 ? false : _props$pulsate,\n rippleX = props.rippleX,\n rippleY = props.rippleY,\n rippleSize = props.rippleSize,\n inProp = props.in,\n _props$onExited = props.onExited,\n onExited = _props$onExited === void 0 ? function () {} : _props$onExited,\n timeout = props.timeout;\n\n var _React$useState = React.useState(false),\n leaving = _React$useState[0],\n setLeaving = _React$useState[1];\n\n var rippleClassName = clsx(classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n var rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n var childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n var handleExited = useEventCallback(onExited); // Ripple is used for user feedback (e.g. click or press) so we want to apply styles with the highest priority\n\n useEnhancedEffect(function () {\n if (!inProp) {\n // react-transition-group#onExit\n setLeaving(true); // react-transition-group#onExited\n\n var timeoutId = setTimeout(handleExited, timeout);\n return function () {\n clearTimeout(timeoutId);\n };\n }\n\n return undefined;\n }, [handleExited, inProp, timeout]);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: rippleClassName,\n style: rippleStyles\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: childClassName\n }));\n}\n\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore - injected from TransitionGroup\n */\n in: PropTypes.bool,\n\n /**\n * @ignore - injected from TransitionGroup\n */\n onExited: PropTypes.func,\n\n /**\n * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n */\n pulsate: PropTypes.bool,\n\n /**\n * Diameter of the ripple.\n */\n rippleSize: PropTypes.number,\n\n /**\n * Horizontal position of the ripple center.\n */\n rippleX: PropTypes.number,\n\n /**\n * Vertical position of the ripple center.\n */\n rippleY: PropTypes.number,\n\n /**\n * exit delay\n */\n timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Ripple from './Ripple';\nvar DURATION = 550;\nexport var DELAY_RIPPLE = 80;\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n },\n\n /* Styles applied to the internal `Ripple` components `ripple` class. */\n ripple: {\n opacity: 0,\n position: 'absolute'\n },\n\n /* Styles applied to the internal `Ripple` components `rippleVisible` class. */\n rippleVisible: {\n opacity: 0.3,\n transform: 'scale(1)',\n animation: \"$enter \".concat(DURATION, \"ms \").concat(theme.transitions.easing.easeInOut)\n },\n\n /* Styles applied to the internal `Ripple` components `ripplePulsate` class. */\n ripplePulsate: {\n animationDuration: \"\".concat(theme.transitions.duration.shorter, \"ms\")\n },\n\n /* Styles applied to the internal `Ripple` components `child` class. */\n child: {\n opacity: 1,\n display: 'block',\n width: '100%',\n height: '100%',\n borderRadius: '50%',\n backgroundColor: 'currentColor'\n },\n\n /* Styles applied to the internal `Ripple` components `childLeaving` class. */\n childLeaving: {\n opacity: 0,\n animation: \"$exit \".concat(DURATION, \"ms \").concat(theme.transitions.easing.easeInOut)\n },\n\n /* Styles applied to the internal `Ripple` components `childPulsate` class. */\n childPulsate: {\n position: 'absolute',\n left: 0,\n top: 0,\n animation: \"$pulsate 2500ms \".concat(theme.transitions.easing.easeInOut, \" 200ms infinite\")\n },\n '@keyframes enter': {\n '0%': {\n transform: 'scale(0)',\n opacity: 0.1\n },\n '100%': {\n transform: 'scale(1)',\n opacity: 0.3\n }\n },\n '@keyframes exit': {\n '0%': {\n opacity: 1\n },\n '100%': {\n opacity: 0\n }\n },\n '@keyframes pulsate': {\n '0%': {\n transform: 'scale(1)'\n },\n '50%': {\n transform: 'scale(0.92)'\n },\n '100%': {\n transform: 'scale(1)'\n }\n }\n };\n};\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\n\nvar TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(props, ref) {\n var _props$center = props.center,\n centerProp = _props$center === void 0 ? false : _props$center,\n classes = props.classes,\n className = props.className,\n other = _objectWithoutProperties(props, [\"center\", \"classes\", \"className\"]);\n\n var _React$useState = React.useState([]),\n ripples = _React$useState[0],\n setRipples = _React$useState[1];\n\n var nextKey = React.useRef(0);\n var rippleCallback = React.useRef(null);\n React.useEffect(function () {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]); // Used to filter out mouse emulated events on mobile.\n\n var ignoringMouseDown = React.useRef(false); // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n\n var startTimer = React.useRef(null); // This is the hook called once the previous timeout is ready.\n\n var startTimerCommit = React.useRef(null);\n var container = React.useRef(null);\n React.useEffect(function () {\n return function () {\n clearTimeout(startTimer.current);\n };\n }, []);\n var startCommit = React.useCallback(function (params) {\n var pulsate = params.pulsate,\n rippleX = params.rippleX,\n rippleY = params.rippleY,\n rippleSize = params.rippleSize,\n cb = params.cb;\n setRipples(function (oldRipples) {\n return [].concat(_toConsumableArray(oldRipples), [/*#__PURE__*/React.createElement(Ripple, {\n key: nextKey.current,\n classes: classes,\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n })]);\n });\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n var start = React.useCallback(function () {\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var cb = arguments.length > 2 ? arguments[2] : undefined;\n var _options$pulsate = options.pulsate,\n pulsate = _options$pulsate === void 0 ? false : _options$pulsate,\n _options$center = options.center,\n center = _options$center === void 0 ? centerProp || options.pulsate : _options$center,\n _options$fakeElement = options.fakeElement,\n fakeElement = _options$fakeElement === void 0 ? false : _options$fakeElement;\n\n if (event.type === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n\n if (event.type === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n\n var element = fakeElement ? null : container.current;\n var rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n }; // Get the size of the ripple\n\n var rippleX;\n var rippleY;\n var rippleSize;\n\n if (center || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n var _ref = event.touches ? event.touches[0] : event,\n clientX = _ref.clientX,\n clientY = _ref.clientY;\n\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n\n if (center) {\n rippleSize = Math.sqrt((2 * Math.pow(rect.width, 2) + Math.pow(rect.height, 2)) / 3); // For some reason the animation is broken on Mobile Chrome if the size if even.\n\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n var sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n var sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(Math.pow(sizeX, 2) + Math.pow(sizeY, 2));\n } // Touche devices\n\n\n if (event.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = function () {\n startCommit({\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize,\n cb: cb\n });\n }; // Delay the execution of the ripple effect.\n\n\n startTimer.current = setTimeout(function () {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n }, DELAY_RIPPLE); // We have to make a tradeoff with this value.\n }\n } else {\n startCommit({\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize,\n cb: cb\n });\n }\n }, [centerProp, startCommit]);\n var pulsate = React.useCallback(function () {\n start({}, {\n pulsate: true\n });\n }, [start]);\n var stop = React.useCallback(function (event, cb) {\n clearTimeout(startTimer.current); // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n\n if (event.type === 'touchend' && startTimerCommit.current) {\n event.persist();\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.current = setTimeout(function () {\n stop(event, cb);\n });\n return;\n }\n\n startTimerCommit.current = null;\n setRipples(function (oldRipples) {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, []);\n React.useImperativeHandle(ref, function () {\n return {\n pulsate: pulsate,\n start: start,\n stop: stop\n };\n }, [pulsate, start, stop]);\n return /*#__PURE__*/React.createElement(\"span\", _extends({\n className: clsx(classes.root, className),\n ref: container\n }, other), /*#__PURE__*/React.createElement(TransitionGroup, {\n component: null,\n exit: true\n }, ripples));\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes = {\n /**\n * If `true`, the ripple starts at the center of the component\n * rather than at the point of interaction.\n */\n center: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default withStyles(styles, {\n flip: false,\n name: 'MuiTouchRipple'\n})( /*#__PURE__*/React.memo(TouchRipple));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport * as ReactDOM from 'react-dom';\nimport clsx from 'clsx';\nimport { elementTypeAcceptingRef, refType } from '@material-ui/utils';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport withStyles from '../styles/withStyles';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n '-moz-appearance': 'none',\n // Reset\n '-webkit-appearance': 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n\n },\n '&$disabled': {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n },\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Pseudo-class applied to the root element if keyboard focused. */\n focusVisible: {}\n};\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\n\nvar ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(props, ref) {\n var action = props.action,\n buttonRefProp = props.buttonRef,\n _props$centerRipple = props.centerRipple,\n centerRipple = _props$centerRipple === void 0 ? false : _props$centerRipple,\n children = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n component = _props$component === void 0 ? 'button' : _props$component,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disableRipple = props.disableRipple,\n disableRipple = _props$disableRipple === void 0 ? false : _props$disableRipple,\n _props$disableTouchRi = props.disableTouchRipple,\n disableTouchRipple = _props$disableTouchRi === void 0 ? false : _props$disableTouchRi,\n _props$focusRipple = props.focusRipple,\n focusRipple = _props$focusRipple === void 0 ? false : _props$focusRipple,\n focusVisibleClassName = props.focusVisibleClassName,\n onBlur = props.onBlur,\n onClick = props.onClick,\n onFocus = props.onFocus,\n onFocusVisible = props.onFocusVisible,\n onKeyDown = props.onKeyDown,\n onKeyUp = props.onKeyUp,\n onMouseDown = props.onMouseDown,\n onMouseLeave = props.onMouseLeave,\n onMouseUp = props.onMouseUp,\n onTouchEnd = props.onTouchEnd,\n onTouchMove = props.onTouchMove,\n onTouchStart = props.onTouchStart,\n onDragLeave = props.onDragLeave,\n _props$tabIndex = props.tabIndex,\n tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,\n TouchRippleProps = props.TouchRippleProps,\n _props$type = props.type,\n type = _props$type === void 0 ? 'button' : _props$type,\n other = _objectWithoutProperties(props, [\"action\", \"buttonRef\", \"centerRipple\", \"children\", \"classes\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"onBlur\", \"onClick\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"onDragLeave\", \"tabIndex\", \"TouchRippleProps\", \"type\"]);\n\n var buttonRef = React.useRef(null);\n\n function getButtonNode() {\n // #StrictMode ready\n return ReactDOM.findDOMNode(buttonRef.current);\n }\n\n var rippleRef = React.useRef(null);\n\n var _React$useState = React.useState(false),\n focusVisible = _React$useState[0],\n setFocusVisible = _React$useState[1];\n\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n\n var _useIsFocusVisible = useIsFocusVisible(),\n isFocusVisible = _useIsFocusVisible.isFocusVisible,\n onBlurVisible = _useIsFocusVisible.onBlurVisible,\n focusVisibleRef = _useIsFocusVisible.ref;\n\n React.useImperativeHandle(action, function () {\n return {\n focusVisible: function focusVisible() {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n };\n }, []);\n React.useEffect(function () {\n if (focusVisible && focusRipple && !disableRipple) {\n rippleRef.current.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible]);\n\n function useRippleHandler(rippleAction, eventCallback) {\n var skipRippleAction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : disableTouchRipple;\n return useEventCallback(function (event) {\n if (eventCallback) {\n eventCallback(event);\n }\n\n var ignore = skipRippleAction;\n\n if (!ignore && rippleRef.current) {\n rippleRef.current[rippleAction](event);\n }\n\n return true;\n });\n }\n\n var handleMouseDown = useRippleHandler('start', onMouseDown);\n var handleDragLeave = useRippleHandler('stop', onDragLeave);\n var handleMouseUp = useRippleHandler('stop', onMouseUp);\n var handleMouseLeave = useRippleHandler('stop', function (event) {\n if (focusVisible) {\n event.preventDefault();\n }\n\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n });\n var handleTouchStart = useRippleHandler('start', onTouchStart);\n var handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n var handleTouchMove = useRippleHandler('stop', onTouchMove);\n var handleBlur = useRippleHandler('stop', function (event) {\n if (focusVisible) {\n onBlurVisible(event);\n setFocusVisible(false);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n var handleFocus = useEventCallback(function (event) {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n\n if (isFocusVisible(event)) {\n setFocusVisible(true);\n\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n\n if (onFocus) {\n onFocus(event);\n }\n });\n\n var isNonNativeButton = function isNonNativeButton() {\n var button = getButtonNode();\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n /**\n * IE 11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */\n\n\n var keydownRef = React.useRef(false);\n var handleKeyDown = useEventCallback(function (event) {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n keydownRef.current = true;\n event.persist();\n rippleRef.current.stop(event, function () {\n rippleRef.current.start(event);\n });\n }\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n } // Keyboard accessibility for non interactive elements\n\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n\n if (onClick) {\n onClick(event);\n }\n }\n });\n var handleKeyUp = useEventCallback(function (event) {\n // calling preventDefault in keyUp on a