{"version":3,"file":"6444.b208037f6b1954dc031d.js","mappings":"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","sources":["webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/MQLQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/QueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/SLO/Service.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/SLO/SLO.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/SLO/Selector.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/SLO/SLOQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Project.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Metrics.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/GroupBy.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Alignment.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/LabelFilter.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/AnnotationsHelp.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/AlignmentFunction.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/AlignmentPeriod.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/AlignmentPeriodLabel.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/AliasBy.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Aggregation.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Fields.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/VisualMetricQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Preprocessor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/constants.ts","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/functions.ts","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/types.ts","webpack://grafana/../../opt/drone/yarncache/@grafana-google-sdk-npm-0.0.3-c91663433f-9eb5e043e0.zip/node_modules/@grafana/google-sdk/dist/index.production.js","webpack://grafana/../../opt/drone/yarncache/@grafana-google-sdk-npm-0.0.3-c91663433f-9eb5e043e0.zip/node_modules/@grafana/google-sdk/index.js"],"sourcesContent":["import React from 'react';\n\nimport { TextArea } from '@grafana/ui';\n\nexport interface Props {\n onChange: (query: string) => void;\n onRunQuery: () => void;\n query: string;\n}\n\nexport function MQLQueryEditor({ query, onChange, onRunQuery }: React.PropsWithChildren) {\n const onKeyDown = (event: any) => {\n if (event.key === 'Enter' && (event.shiftKey || event.ctrlKey)) {\n event.preventDefault();\n onRunQuery();\n }\n };\n\n return (\n <>\n onChange(e.currentTarget.value)}\n onKeyDown={onKeyDown}\n />\n \n );\n}\n","import React, { useCallback, useEffect, useState } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\n\nimport CloudMonitoringDatasource from '../datasource';\nimport { getAlignmentPickerData } from '../functions';\nimport {\n AlignmentTypes,\n CustomMetaData,\n EditorMode,\n MetricDescriptor,\n MetricKind,\n MetricQuery,\n PreprocessorType,\n SLOQuery,\n ValueTypes,\n} from '../types';\n\nimport { MQLQueryEditor } from './MQLQueryEditor';\n\nimport { AliasBy, Project, VisualMetricQueryEditor } from '.';\n\nexport interface Props {\n refId: string;\n customMetaData: CustomMetaData;\n variableOptionGroup: SelectableValue;\n onChange: (query: MetricQuery) => void;\n onRunQuery: () => void;\n query: MetricQuery;\n datasource: CloudMonitoringDatasource;\n}\n\ninterface State {\n labels: any;\n [key: string]: any;\n}\n\nexport const defaultState: State = {\n labels: {},\n};\n\nexport const defaultQuery: (dataSource: CloudMonitoringDatasource) => MetricQuery = (dataSource) => ({\n editorMode: EditorMode.Visual,\n projectName: dataSource.getDefaultProject(),\n metricType: '',\n metricKind: MetricKind.GAUGE,\n valueType: '',\n crossSeriesReducer: 'REDUCE_MEAN',\n alignmentPeriod: 'cloud-monitoring-auto',\n perSeriesAligner: AlignmentTypes.ALIGN_MEAN,\n groupBys: [],\n filters: [],\n aliasBy: '',\n query: '',\n preprocessor: PreprocessorType.None,\n});\n\nfunction Editor({\n refId,\n query,\n datasource,\n onChange: onQueryChange,\n onRunQuery,\n customMetaData,\n variableOptionGroup,\n}: React.PropsWithChildren) {\n const [state, setState] = useState(defaultState);\n const { projectName, metricType, groupBys, editorMode, crossSeriesReducer } = query;\n\n useEffect(() => {\n if (projectName && metricType) {\n datasource\n .getLabels(metricType, refId, projectName)\n .then((labels) => setState((prevState) => ({ ...prevState, labels })));\n }\n }, [datasource, groupBys, metricType, projectName, refId, crossSeriesReducer]);\n\n const onChange = useCallback(\n (metricQuery: MetricQuery | SLOQuery) => {\n onQueryChange({ ...query, ...metricQuery });\n onRunQuery();\n },\n [onQueryChange, onRunQuery, query]\n );\n\n const onMetricTypeChange = useCallback(\n ({ valueType, metricKind, type }: MetricDescriptor) => {\n const preprocessor =\n metricKind === MetricKind.GAUGE || valueType === ValueTypes.DISTRIBUTION\n ? PreprocessorType.None\n : PreprocessorType.Rate;\n const { perSeriesAligner } = getAlignmentPickerData(valueType, metricKind, state.perSeriesAligner, preprocessor);\n onChange({\n ...query,\n perSeriesAligner,\n metricType: type,\n valueType,\n metricKind,\n preprocessor,\n });\n },\n [onChange, query, state]\n );\n\n return (\n <>\n {\n onChange({ ...query, projectName });\n }}\n />\n\n {editorMode === EditorMode.Visual && (\n \n )}\n\n {editorMode === EditorMode.MQL && (\n onQueryChange({ ...query, query: q })}\n onRunQuery={onRunQuery}\n query={query.query}\n >\n )}\n\n {\n onChange({ ...query, aliasBy });\n }}\n />\n \n );\n}\n\nexport const MetricQueryEditor = React.memo(Editor);\n","import { css } from '@emotion/css';\nimport React, { PureComponent } from 'react';\n\nimport { QueryEditorProps, toOption } from '@grafana/data';\nimport { Button, Select } from '@grafana/ui';\n\nimport { QUERY_TYPES, SELECT_WIDTH } from '../constants';\nimport CloudMonitoringDatasource from '../datasource';\nimport { CloudMonitoringQuery, EditorMode, MetricQuery, QueryType, SLOQuery, CloudMonitoringOptions } from '../types';\n\nimport { defaultQuery } from './MetricQueryEditor';\nimport { defaultQuery as defaultSLOQuery } from './SLO/SLOQueryEditor';\n\nimport { MetricQueryEditor, QueryEditorRow, SLOQueryEditor } from './';\n\nexport type Props = QueryEditorProps;\n\nexport class QueryEditor extends PureComponent {\n async UNSAFE_componentWillMount() {\n const { datasource, query } = this.props;\n\n // Unfortunately, migrations like this need to go UNSAFE_componentWillMount. As soon as there's\n // migration hook for this module.ts, we can do the migrations there instead.\n if (!this.props.query.hasOwnProperty('metricQuery')) {\n const { hide, refId, datasource, key, queryType, maxLines, metric, ...metricQuery } = this.props.query as any;\n this.props.query.metricQuery = metricQuery;\n }\n\n if (!this.props.query.hasOwnProperty('queryType')) {\n this.props.query.queryType = QueryType.METRICS;\n }\n\n await datasource.ensureGCEDefaultProject();\n if (!query.metricQuery.projectName) {\n this.props.query.metricQuery.projectName = datasource.getDefaultProject();\n }\n }\n\n onQueryChange(prop: string, value: MetricQuery | SLOQuery) {\n this.props.onChange({ ...this.props.query, [prop]: value });\n this.props.onRunQuery();\n }\n\n render() {\n const { datasource, query, onRunQuery, onChange } = this.props;\n const metricQuery = { ...defaultQuery(datasource), ...query.metricQuery };\n const sloQuery = { ...defaultSLOQuery(datasource), ...query.sloQuery };\n const queryType = query.queryType || QueryType.METRICS;\n const meta = this.props.data?.series.length ? this.props.data?.series[0].meta : {};\n const customMetaData = meta?.custom ?? {};\n const variableOptionGroup = {\n label: 'Template Variables',\n expanded: false,\n options: datasource.getVariables().map(toOption),\n };\n\n return (\n <>\n \n this.onQueryChange('metricQuery', {\n ...metricQuery,\n editorMode: metricQuery.editorMode === EditorMode.MQL ? EditorMode.Visual : EditorMode.MQL,\n })\n }\n >\n {metricQuery.editorMode === EditorMode.MQL ? 'Switch to builder' : 'Edit MQL'}\n \n )\n }\n htmlFor={`${query.refId}-query-type`}\n >\n {\n onChange({ ...query, sloQuery, queryType: value! });\n onRunQuery();\n }}\n inputId={`${query.refId}-query-type`}\n />\n \n\n {queryType === QueryType.METRICS && (\n {\n this.props.onChange({ ...this.props.query, metricQuery });\n }}\n onRunQuery={onRunQuery}\n datasource={datasource}\n query={metricQuery}\n >\n )}\n\n {queryType === QueryType.SLO && (\n this.onQueryChange('sloQuery', query)}\n onRunQuery={onRunQuery}\n datasource={datasource}\n query={sloQuery}\n >\n )}\n \n );\n }\n}\n","import React, { useEffect, useState } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { QueryEditorRow } from '..';\nimport { SELECT_WIDTH } from '../../constants';\nimport CloudMonitoringDatasource from '../../datasource';\nimport { SLOQuery } from '../../types';\n\nexport interface Props {\n refId: string;\n onChange: (query: SLOQuery) => void;\n query: SLOQuery;\n templateVariableOptions: Array>;\n datasource: CloudMonitoringDatasource;\n}\n\nexport const Service: React.FC = ({ refId, query, templateVariableOptions, onChange, datasource }) => {\n const [services, setServices] = useState>>([]);\n const { projectName } = query;\n\n useEffect(() => {\n if (!projectName) {\n return;\n }\n\n datasource.getSLOServices(projectName).then((services: Array>) => {\n setServices([\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n ...services,\n ]);\n });\n }, [datasource, projectName, templateVariableOptions]);\n\n return (\n \n \n onChange({ ...query, serviceId, serviceName, sloId: '' })\n }\n />\n \n );\n};\n","import React, { useEffect, useState } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { QueryEditorRow } from '..';\nimport { SELECT_WIDTH } from '../../constants';\nimport CloudMonitoringDatasource from '../../datasource';\nimport { SLOQuery } from '../../types';\n\nexport interface Props {\n refId: string;\n onChange: (query: SLOQuery) => void;\n query: SLOQuery;\n templateVariableOptions: Array>;\n datasource: CloudMonitoringDatasource;\n}\n\nexport const SLO: React.FC = ({ refId, query, templateVariableOptions, onChange, datasource }) => {\n const [slos, setSLOs] = useState>>([]);\n const { projectName, serviceId } = query;\n\n useEffect(() => {\n if (!projectName || !serviceId) {\n return;\n }\n\n datasource.getServiceLevelObjectives(projectName, serviceId).then((sloIds: Array>) => {\n setSLOs([\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n ...sloIds,\n ]);\n });\n }, [datasource, projectName, serviceId, templateVariableOptions]);\n\n return (\n \n {\n const slos = await datasource.getServiceLevelObjectives(projectName, serviceId);\n const slo = slos.find(({ value }) => value === datasource.templateSrv.replace(sloId));\n onChange({ ...query, sloId, sloName, goal: slo?.goal });\n }}\n />\n \n );\n};\n","import React from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { QueryEditorRow } from '..';\nimport { SELECT_WIDTH, SELECTORS } from '../../constants';\nimport CloudMonitoringDatasource from '../../datasource';\nimport { SLOQuery } from '../../types';\n\nexport interface Props {\n refId: string;\n onChange: (query: SLOQuery) => void;\n query: SLOQuery;\n templateVariableOptions: Array>;\n datasource: CloudMonitoringDatasource;\n}\n\nexport const Selector: React.FC = ({ refId, query, templateVariableOptions, onChange, datasource }) => {\n return (\n \n s.value === query?.selectorName ?? '')}\n options={[\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n ...SELECTORS,\n ]}\n onChange={({ value: selectorName }) => onChange({ ...query, selectorName: selectorName ?? '' })}\n />\n \n );\n};\n","import React from 'react';\n\nimport { SelectableValue } from '@grafana/data';\n\nimport { AliasBy, AlignmentPeriod, AlignmentPeriodLabel, Project, QueryEditorRow } from '..';\nimport { SELECT_WIDTH } from '../../constants';\nimport CloudMonitoringDatasource from '../../datasource';\nimport { AlignmentTypes, CustomMetaData, SLOQuery } from '../../types';\n\nimport { Selector, Service, SLO } from '.';\n\nexport interface Props {\n refId: string;\n customMetaData: CustomMetaData;\n variableOptionGroup: SelectableValue;\n onChange: (query: SLOQuery) => void;\n onRunQuery: () => void;\n query: SLOQuery;\n datasource: CloudMonitoringDatasource;\n}\n\nexport const defaultQuery: (dataSource: CloudMonitoringDatasource) => SLOQuery = (dataSource) => ({\n projectName: dataSource.getDefaultProject(),\n alignmentPeriod: 'cloud-monitoring-auto',\n perSeriesAligner: AlignmentTypes.ALIGN_MEAN,\n aliasBy: '',\n selectorName: 'select_slo_health',\n serviceId: '',\n serviceName: '',\n sloId: '',\n sloName: '',\n});\n\nexport function SLOQueryEditor({\n refId,\n query,\n datasource,\n onChange,\n variableOptionGroup,\n customMetaData,\n}: React.PropsWithChildren) {\n return (\n <>\n onChange({ ...query, projectName })}\n />\n \n \n \n\n \n \n \n \n\n onChange({ ...query, aliasBy })} />\n \n );\n}\n","import React, { useEffect, useMemo, useState } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { SELECT_WIDTH } from '../constants';\nimport CloudMonitoringDatasource from '../datasource';\n\nimport { QueryEditorRow } from '.';\n\nexport interface Props {\n refId: string;\n datasource: CloudMonitoringDatasource;\n onChange: (projectName: string) => void;\n templateVariableOptions: Array>;\n projectName: string;\n}\n\nexport function Project({ refId, projectName, datasource, onChange, templateVariableOptions }: Props) {\n const [projects, setProjects] = useState>>([]);\n useEffect(() => {\n datasource.getProjects().then((projects) => setProjects(projects));\n }, [datasource]);\n\n const projectsWithTemplateVariables = useMemo(\n () => [\n projects,\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n ...projects,\n ],\n [projects, templateVariableOptions]\n );\n\n return (\n \n `Use project: ${v}`}\n onChange={({ value }) => onChange(value!)}\n options={projectsWithTemplateVariables}\n value={{ value: projectName, label: projectName }}\n placeholder=\"Select Project\"\n inputId={`${refId}-project`}\n />\n \n );\n}\n","import { css } from '@emotion/css';\nimport { startCase, uniqBy } from 'lodash';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { TemplateSrv } from '@grafana/runtime';\nimport { getSelectStyles, Select, useStyles2, useTheme2 } from '@grafana/ui';\n\nimport { INNER_LABEL_WIDTH, LABEL_WIDTH, SELECT_WIDTH } from '../constants';\nimport CloudMonitoringDatasource from '../datasource';\nimport { MetricDescriptor } from '../types';\n\nimport { QueryEditorField, QueryEditorRow } from '.';\n\nexport interface Props {\n refId: string;\n onChange: (metricDescriptor: MetricDescriptor) => void;\n templateSrv: TemplateSrv;\n templateVariableOptions: Array>;\n datasource: CloudMonitoringDatasource;\n projectName: string;\n metricType: string;\n children: (metricDescriptor?: MetricDescriptor) => JSX.Element;\n}\n\ninterface State {\n metricDescriptors: MetricDescriptor[];\n metrics: any[];\n services: any[];\n service: string;\n metric: string;\n metricDescriptor?: MetricDescriptor;\n projectName: string | null;\n}\n\nexport function Metrics(props: Props) {\n const [state, setState] = useState({\n metricDescriptors: [],\n metrics: [],\n services: [],\n service: '',\n metric: '',\n projectName: null,\n });\n\n const theme = useTheme2();\n const selectStyles = getSelectStyles(theme);\n\n const customStyle = useStyles2(getStyles);\n\n const { services, service, metrics, metricDescriptors } = state;\n const { metricType, templateVariableOptions, projectName, templateSrv, datasource, onChange, children } = props;\n\n const getSelectedMetricDescriptor = useCallback(\n (metricDescriptors: MetricDescriptor[], metricType: string) => {\n return metricDescriptors.find((md) => md.type === templateSrv.replace(metricType))!;\n },\n [templateSrv]\n );\n\n useEffect(() => {\n const getMetricsList = (metricDescriptors: MetricDescriptor[]) => {\n const selectedMetricDescriptor = getSelectedMetricDescriptor(metricDescriptors, metricType);\n if (!selectedMetricDescriptor) {\n return [];\n }\n\n const metricsByService = metricDescriptors\n .filter((m) => m.service === selectedMetricDescriptor.service)\n .map((m) => ({\n service: m.service,\n value: m.type,\n label: m.displayName,\n component: function optionComponent() {\n return (\n
\n
{m.type}
\n
{m.description}
\n
\n );\n },\n }));\n return metricsByService;\n };\n\n const loadMetricDescriptors = async () => {\n if (projectName) {\n const metricDescriptors = await datasource.getMetricTypes(projectName);\n const services = getServicesList(metricDescriptors);\n const metrics = getMetricsList(metricDescriptors);\n const service = metrics.length > 0 ? metrics[0].service : '';\n const metricDescriptor = getSelectedMetricDescriptor(metricDescriptors, metricType);\n setState((prevState) => ({\n ...prevState,\n metricDescriptors,\n services,\n metrics,\n service: service,\n metricDescriptor,\n }));\n }\n };\n loadMetricDescriptors();\n }, [datasource, getSelectedMetricDescriptor, metricType, projectName, customStyle, selectStyles.optionDescription]);\n\n const onServiceChange = ({ value: service }: any) => {\n const metrics = metricDescriptors\n .filter((m: MetricDescriptor) => m.service === templateSrv.replace(service))\n .map((m: MetricDescriptor) => ({\n service: m.service,\n value: m.type,\n label: m.displayName,\n description: m.description,\n }));\n\n if (metrics.length > 0 && !metrics.some((m) => m.value === templateSrv.replace(metricType))) {\n onMetricTypeChange(metrics[0], { service, metrics });\n } else {\n setState({ ...state, service, metrics });\n }\n };\n\n const onMetricTypeChange = ({ value }: SelectableValue, extra: any = {}) => {\n const metricDescriptor = getSelectedMetricDescriptor(state.metricDescriptors, value!);\n setState({ ...state, metricDescriptor, ...extra });\n onChange({ ...metricDescriptor, type: value! });\n };\n\n const getServicesList = (metricDescriptors: MetricDescriptor[]) => {\n const services = metricDescriptors.map((m) => ({\n value: m.service,\n label: startCase(m.serviceShortName),\n }));\n\n return services.length > 0 ? uniqBy(services, (s) => s.value) : [];\n };\n\n return (\n <>\n \n \n s.value === service)}\n options={[\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n ...services,\n ]}\n placeholder=\"Select Services\"\n inputId={`${props.refId}-service`}\n >\n \n \n s.value === metricType)}\n options={[\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n ...metrics,\n ]}\n placeholder=\"Select Metric\"\n inputId={`${props.refId}-select-metric`}\n >\n \n \n\n {children(state.metricDescriptor)}\n \n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => css`\n label: grafana-select-option-description;\n font-weight: normal;\n font-style: italic;\n color: ${theme.colors.text.secondary};\n`;\n","import React, { FunctionComponent, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { MultiSelect } from '@grafana/ui';\n\nimport { INPUT_WIDTH, SYSTEM_LABELS } from '../constants';\nimport { labelsToGroupedOptions } from '../functions';\nimport { MetricDescriptor, MetricQuery } from '../types';\n\nimport { Aggregation, QueryEditorRow } from '.';\n\nexport interface Props {\n refId: string;\n variableOptionGroup: SelectableValue;\n labels: string[];\n metricDescriptor?: MetricDescriptor;\n onChange: (query: MetricQuery) => void;\n query: MetricQuery;\n}\n\nexport const GroupBy: FunctionComponent = ({\n refId,\n labels: groupBys = [],\n query,\n onChange,\n variableOptionGroup,\n metricDescriptor,\n}) => {\n const options = useMemo(\n () => [variableOptionGroup, ...labelsToGroupedOptions([...groupBys, ...SYSTEM_LABELS])],\n [groupBys, variableOptionGroup]\n );\n\n return (\n \n {\n onChange({ ...query, groupBys: options.map((o) => o.value!) });\n }}\n >\n onChange({ ...query, crossSeriesReducer })}\n refId={refId}\n >\n \n );\n};\n","import React, { FC } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\n\nimport { SELECT_WIDTH } from '../constants';\nimport CloudMonitoringDatasource from '../datasource';\nimport { CustomMetaData, MetricQuery, SLOQuery } from '../types';\n\nimport { AlignmentFunction, AlignmentPeriod, AlignmentPeriodLabel, QueryEditorField, QueryEditorRow } from '.';\n\nexport interface Props {\n refId: string;\n onChange: (query: MetricQuery | SLOQuery) => void;\n query: MetricQuery;\n templateVariableOptions: Array>;\n customMetaData: CustomMetaData;\n datasource: CloudMonitoringDatasource;\n}\n\nexport const Alignment: FC = ({\n refId,\n templateVariableOptions,\n onChange,\n query,\n customMetaData,\n datasource,\n}) => {\n return (\n }\n htmlFor={`${refId}-alignment-function`}\n >\n \n \n \n \n \n );\n};\n","import { flatten } from 'lodash';\nimport React, { FunctionComponent, useCallback, useMemo } from 'react';\n\nimport { SelectableValue, toOption } from '@grafana/data';\nimport { Button, HorizontalGroup, Select, VerticalGroup } from '@grafana/ui';\nimport { CustomControlProps } from '@grafana/ui/src/components/Select/types';\n\nimport { SELECT_WIDTH } from '../constants';\nimport { labelsToGroupedOptions, stringArrayToFilters } from '../functions';\nimport { Filter } from '../types';\n\nimport { QueryEditorRow } from '.';\n\nexport interface Props {\n labels: { [key: string]: string[] };\n filters: string[];\n onChange: (filters: string[]) => void;\n variableOptionGroup: SelectableValue;\n}\n\nconst operators = ['=', '!=', '=~', '!=~'];\n\nconst FilterButton = React.forwardRef>(\n ({ value, isOpen, invalid, ...rest }, ref) => {\n return ;\n }\n);\nFilterButton.displayName = 'FilterButton';\n\nconst OperatorButton = React.forwardRef>(({ value, ...rest }, ref) => {\n return (\n \n );\n});\nOperatorButton.displayName = 'OperatorButton';\n\nexport const LabelFilter: FunctionComponent = ({\n labels = {},\n filters: filterArray,\n onChange,\n variableOptionGroup,\n}) => {\n const filters = useMemo(() => stringArrayToFilters(filterArray), [filterArray]);\n const options = useMemo(\n () => [variableOptionGroup, ...labelsToGroupedOptions(Object.keys(labels))],\n [labels, variableOptionGroup]\n );\n\n const filtersToStringArray = useCallback((filters: Filter[]) => {\n const strArr = flatten(filters.map(({ key, operator, value, condition }) => [key, operator, value, condition!]));\n return strArr.slice(0, strArr.length - 1);\n }, []);\n\n const AddFilter = () => {\n return (\n \n onChange(filtersToStringArray([...filters, { key, operator: '=', condition: 'AND', value: '' }]))\n }\n menuPlacement=\"bottom\"\n renderControl={FilterButton}\n />\n );\n };\n\n return (\n 1}\n >\n \n {filters.map(({ key, operator, value, condition }, index) => {\n // Add the current key and value as options if they are manually entered\n const keyPresent = options.some((op) => {\n if (op.options) {\n return options.some((opp) => opp.label === key);\n }\n return op.label === key;\n });\n if (!keyPresent) {\n options.push({ label: key, value: key });\n }\n\n const valueOptions = labels.hasOwnProperty(key)\n ? [variableOptionGroup, ...labels[key].map(toOption)]\n : [variableOptionGroup];\n const valuePresent = valueOptions.some((op) => {\n return op.label === value;\n });\n if (!valuePresent) {\n valueOptions.push({ label: value, value });\n }\n\n return (\n \n `Use label key: ${v}`}\n value={key}\n options={options}\n onChange={({ value: key = '' }) => {\n onChange(\n filtersToStringArray(\n filters.map((f, i) => (i === index ? { key, operator, condition, value: '' } : f))\n )\n );\n }}\n />\n \n onChange(filtersToStringArray(filters.map((f, i) => (i === index ? { ...f, operator } : f))))\n }\n menuPlacement=\"bottom\"\n renderControl={OperatorButton}\n />\n `Use label value: ${v}`}\n allowCustomValue\n value={value}\n placeholder=\"add filter value\"\n options={valueOptions}\n onChange={({ value = '' }) =>\n onChange(filtersToStringArray(filters.map((f, i) => (i === index ? { ...f, value } : f))))\n }\n />\n onChange(filtersToStringArray(filters.filter((_, i) => i !== index)))}\n >\n {index + 1 === filters.length && Object.values(filters).every(({ value }) => value) && }\n \n );\n })}\n {!filters.length && }\n \n \n );\n};\n","import React, { FC } from 'react';\n\nexport const AnnotationsHelp: FC = () => {\n return (\n
\n
\n
Annotation Query Format
\n

\n An annotation is an event that is overlaid on top of graphs. Annotation rendering is expensive so it is\n important to limit the number of rows returned.{' '}\n

\n

\n The Title and Text fields support templating and can use data returned from the query. For example, the Title\n field could have the following text:\n

\n \n {`${'{{metric.type}}'}`} has value: {`${'{{metric.value}}'}`}\n \n

\n Example Result: monitoring.googleapis.com/uptime_check/http_status has this value: 502\n

\n \n

\n {`${'{{metric.value}}'}`} = value of the metric/point\n

\n

\n {`${'{{metric.type}}'}`} = metric type e.g. compute.googleapis.com/instance/cpu/usage_time\n

\n

\n {`${'{{metric.name}}'}`} = name part of metric e.g. instance/cpu/usage_time\n

\n

\n {`${'{{metric.service}}'}`} = service part of metric e.g. compute\n

\n

\n {`${'{{metric.label.label_name}}'}`} = Metric label metadata e.g. metric.label.instance_name\n

\n

\n {`${'{{resource.label.label_name}}'}`} = Resource label metadata e.g. resource.label.zone\n

\n
\n
\n );\n};\n","import React, { FC, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { SELECT_WIDTH } from '../constants';\nimport { getAlignmentPickerData } from '../functions';\nimport { MetricQuery } from '../types';\n\nexport interface Props {\n inputId: string;\n onChange: (query: MetricQuery) => void;\n query: MetricQuery;\n templateVariableOptions: Array>;\n}\n\nexport const AlignmentFunction: FC = ({ inputId, query, templateVariableOptions, onChange }) => {\n const { valueType, metricKind, perSeriesAligner: psa, preprocessor } = query;\n const { perSeriesAligner, alignOptions } = useMemo(\n () => getAlignmentPickerData(valueType, metricKind, psa, preprocessor),\n [valueType, metricKind, psa, preprocessor]\n );\n\n return (\n onChange({ ...query, perSeriesAligner: value! })}\n value={[...alignOptions, ...templateVariableOptions].find((s) => s.value === perSeriesAligner)}\n options={[\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n {\n label: 'Alignment options',\n expanded: true,\n options: alignOptions,\n },\n ]}\n placeholder=\"Select Alignment\"\n inputId={inputId}\n >\n );\n};\n","import React, { useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { ALIGNMENT_PERIODS } from '../constants';\nimport { MetricQuery, SLOQuery } from '../types';\n\nexport interface Props {\n inputId: string;\n onChange(query: TQuery): void;\n query: TQuery;\n templateVariableOptions: Array>;\n selectWidth?: number;\n}\n\nexport function AlignmentPeriod({\n inputId,\n templateVariableOptions,\n onChange,\n query,\n selectWidth,\n}: Props) {\n const options = useMemo(\n () =>\n ALIGNMENT_PERIODS.map((ap) => ({\n ...ap,\n label: ap.text,\n })),\n []\n );\n const visibleOptions = useMemo(() => options.filter((ap) => !ap.hidden), [options]);\n\n return (\n onChange({ ...query, alignmentPeriod: value! })}\n value={[...options, ...templateVariableOptions].find((s) => s.value === query.alignmentPeriod)}\n options={[\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n {\n label: 'Aggregations',\n expanded: true,\n options: visibleOptions,\n },\n ]}\n placeholder=\"Select Alignment\"\n inputId={inputId}\n >\n );\n}\n","import React, { FC, useMemo } from 'react';\n\nimport { rangeUtil } from '@grafana/data';\n\nimport { ALIGNMENTS } from '../constants';\nimport CloudMonitoringDatasource from '../datasource';\nimport { CustomMetaData } from '../types';\n\nexport interface Props {\n customMetaData: CustomMetaData;\n datasource: CloudMonitoringDatasource;\n}\n\nexport const AlignmentPeriodLabel: FC = ({ customMetaData, datasource }) => {\n const { perSeriesAligner, alignmentPeriod } = customMetaData;\n const formatAlignmentText = useMemo(() => {\n if (!alignmentPeriod || !perSeriesAligner) {\n return '';\n }\n\n const alignment = ALIGNMENTS.find((ap) => ap.value === datasource.templateSrv.replace(perSeriesAligner));\n const seconds = parseInt(alignmentPeriod ?? ''.replace(/[^0-9]/g, ''), 10);\n const hms = rangeUtil.secondsToHms(seconds);\n return `${hms} interval (${alignment?.text ?? ''})`;\n }, [datasource, perSeriesAligner, alignmentPeriod]);\n\n return ;\n};\n","import { debounce } from 'lodash';\nimport React, { FunctionComponent, useState } from 'react';\n\nimport { Input } from '@grafana/ui';\n\nimport { INPUT_WIDTH } from '../constants';\n\nimport { QueryEditorRow } from '.';\n\nexport interface Props {\n refId: string;\n onChange: (alias: any) => void;\n value?: string;\n}\n\nexport const AliasBy: FunctionComponent = ({ refId, value = '', onChange }) => {\n const [alias, setAlias] = useState(value ?? '');\n\n const propagateOnChange = debounce(onChange, 1000);\n\n onChange = (e: any) => {\n setAlias(e.target.value);\n propagateOnChange(e.target.value);\n };\n\n return (\n \n \n \n );\n};\n","import React, { FC, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { getAggregationOptionsByMetric } from '../functions';\nimport { MetricDescriptor, MetricKind, ValueTypes } from '../types';\n\nimport { QueryEditorField } from '.';\n\nexport interface Props {\n refId: string;\n onChange: (metricDescriptor: string) => void;\n metricDescriptor?: MetricDescriptor;\n crossSeriesReducer: string;\n groupBys: string[];\n templateVariableOptions: Array>;\n}\n\nexport const Aggregation: FC = (props) => {\n const aggOptions = useAggregationOptionsByMetric(props);\n const selected = useSelectedFromOptions(aggOptions, props);\n\n return (\n \n props.onChange(value!)}\n value={selected}\n options={[\n {\n label: 'Template Variables',\n options: props.templateVariableOptions,\n },\n {\n label: 'Aggregations',\n expanded: true,\n options: aggOptions,\n },\n ]}\n placeholder=\"Select Reducer\"\n inputId={`${props.refId}-group-by-function`}\n />\n \n );\n};\n\nconst useAggregationOptionsByMetric = ({ metricDescriptor }: Props): Array> => {\n const valueType = metricDescriptor?.valueType;\n const metricKind = metricDescriptor?.metricKind;\n\n return useMemo(() => {\n if (!valueType || !metricKind) {\n return [];\n }\n\n return getAggregationOptionsByMetric(valueType as ValueTypes, metricKind as MetricKind).map((a) => ({\n ...a,\n label: a.text,\n }));\n }, [valueType, metricKind]);\n};\n\nconst useSelectedFromOptions = (aggOptions: Array>, props: Props) => {\n return useMemo(() => {\n const allOptions = [...aggOptions, ...props.templateVariableOptions];\n return allOptions.find((s) => s.value === props.crossSeriesReducer);\n }, [aggOptions, props.crossSeriesReducer, props.templateVariableOptions]);\n};\n","import { css } from '@emotion/css';\nimport React, { FC } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { HorizontalGroup, InlineField, InlineLabel, PopoverContent, Select } from '@grafana/ui';\n\nimport { INNER_LABEL_WIDTH, LABEL_WIDTH } from '../constants';\n\ninterface VariableQueryFieldProps {\n onChange: (value: string) => void;\n options: SelectableValue[];\n value: string;\n label: string;\n allowCustomValue?: boolean;\n}\n\nexport const VariableQueryField: FC = ({\n label,\n onChange,\n value,\n options,\n allowCustomValue = false,\n}) => {\n return (\n \n onChange(value!)}\n options={options}\n />\n \n );\n};\n\nexport interface Props {\n children: React.ReactNode;\n tooltip?: PopoverContent;\n label?: React.ReactNode;\n className?: string;\n noFillEnd?: boolean;\n labelWidth?: number;\n fillComponent?: React.ReactNode;\n htmlFor?: string;\n}\n\nexport const QueryEditorRow: FC = ({\n children,\n label,\n tooltip,\n fillComponent,\n noFillEnd = false,\n labelWidth = LABEL_WIDTH,\n htmlFor,\n ...rest\n}) => {\n return (\n
\n {label && (\n \n {label}\n \n )}\n \n \n {children}\n \n
\n
\n {noFillEnd ||
{fillComponent}
}\n
\n \n );\n};\n\nexport const QueryEditorField: FC = ({ children, label, tooltip, labelWidth = INNER_LABEL_WIDTH, ...rest }) => {\n return (\n <>\n {label && (\n \n {label}\n \n )}\n {children}\n \n );\n};\n","import React from 'react';\n\nimport { SelectableValue } from '@grafana/data';\n\nimport CloudMonitoringDatasource from '../datasource';\nimport { CustomMetaData, MetricDescriptor, MetricQuery, SLOQuery } from '../types';\n\nimport { Alignment, GroupBy, LabelFilter, Metrics, Preprocessor } from '.';\n\nexport interface Props {\n refId: string;\n customMetaData: CustomMetaData;\n variableOptionGroup: SelectableValue;\n onMetricTypeChange: (query: MetricDescriptor) => void;\n onChange: (query: MetricQuery | SLOQuery) => void;\n query: MetricQuery;\n datasource: CloudMonitoringDatasource;\n labels: any;\n}\n\nfunction Editor({\n refId,\n query,\n labels,\n datasource,\n onChange,\n onMetricTypeChange,\n customMetaData,\n variableOptionGroup,\n}: React.PropsWithChildren) {\n return (\n \n {(metric) => (\n <>\n onChange({ ...query, filters })}\n variableOptionGroup={variableOptionGroup}\n />\n \n \n \n \n )}\n \n );\n}\n\nexport const VisualMetricQueryEditor = React.memo(Editor);\n","import React, { FunctionComponent, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { RadioButtonGroup } from '@grafana/ui';\n\nimport { getAlignmentPickerData } from '../functions';\nimport { MetricDescriptor, MetricKind, MetricQuery, PreprocessorType, ValueTypes } from '../types';\n\nimport { QueryEditorRow } from '.';\n\nconst NONE_OPTION = { label: 'None', value: PreprocessorType.None };\n\nexport interface Props {\n metricDescriptor?: MetricDescriptor;\n onChange: (query: MetricQuery) => void;\n query: MetricQuery;\n}\n\nexport const Preprocessor: FunctionComponent = ({ query, metricDescriptor, onChange }) => {\n const options = useOptions(metricDescriptor);\n return (\n \n {\n const { valueType, metricKind, perSeriesAligner: psa } = query;\n const { perSeriesAligner } = getAlignmentPickerData(valueType, metricKind, psa, value);\n onChange({ ...query, preprocessor: value, perSeriesAligner });\n }}\n value={query.preprocessor ?? PreprocessorType.None}\n options={options}\n >\n \n );\n};\n\nconst useOptions = (metricDescriptor?: MetricDescriptor): Array> => {\n const metricKind = metricDescriptor?.metricKind;\n const valueType = metricDescriptor?.valueType;\n\n return useMemo(() => {\n if (!metricKind || metricKind === MetricKind.GAUGE || valueType === ValueTypes.DISTRIBUTION) {\n return [NONE_OPTION];\n }\n\n const options = [\n NONE_OPTION,\n {\n label: 'Rate',\n value: PreprocessorType.Rate,\n description: 'Data points are aligned and converted to a rate per time series',\n },\n ];\n\n return metricKind === MetricKind.CUMULATIVE\n ? [\n ...options,\n {\n label: 'Delta',\n value: PreprocessorType.Delta,\n description: 'Data points are aligned by their delta (difference) per time series',\n },\n ]\n : options;\n }, [metricKind, valueType]);\n};\n","import { GoogleAuthType } from '@grafana/google-sdk';\n\nimport { MetricKind, QueryType, ValueTypes } from './types';\n\n// not super excited about using uneven numbers, but this makes it align perfectly with rows that has two fields\nexport const INPUT_WIDTH = 71;\nexport const LABEL_WIDTH = 19;\nexport const INNER_LABEL_WIDTH = 14;\nexport const SELECT_WIDTH = 28;\nexport const AUTH_TYPES = [\n { value: 'Google JWT File', key: GoogleAuthType.JWT },\n { value: 'GCE Default Service Account', key: GoogleAuthType.GCE },\n];\n\nexport const ALIGNMENTS = [\n {\n text: 'delta',\n value: 'ALIGN_DELTA',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.CUMULATIVE, MetricKind.DELTA],\n },\n {\n text: 'rate',\n value: 'ALIGN_RATE',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.CUMULATIVE, MetricKind.DELTA],\n },\n {\n text: 'interpolate',\n value: 'ALIGN_INTERPOLATE',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE],\n },\n {\n text: 'next older',\n value: 'ALIGN_NEXT_OLDER',\n valueTypes: [\n ValueTypes.INT64,\n ValueTypes.DOUBLE,\n ValueTypes.MONEY,\n ValueTypes.DISTRIBUTION,\n ValueTypes.STRING,\n ValueTypes.VALUE_TYPE_UNSPECIFIED,\n ValueTypes.BOOL,\n ],\n metricKinds: [MetricKind.GAUGE],\n },\n {\n text: 'min',\n value: 'ALIGN_MIN',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'max',\n value: 'ALIGN_MAX',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'mean',\n value: 'ALIGN_MEAN',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'count',\n value: 'ALIGN_COUNT',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.BOOL],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'sum',\n value: 'ALIGN_SUM',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'stddev',\n value: 'ALIGN_STDDEV',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'count true',\n value: 'ALIGN_COUNT_TRUE',\n valueTypes: [ValueTypes.BOOL],\n metricKinds: [MetricKind.GAUGE],\n },\n {\n text: 'count false',\n value: 'ALIGN_COUNT_FALSE',\n valueTypes: [ValueTypes.BOOL],\n metricKinds: [MetricKind.GAUGE],\n },\n {\n text: 'fraction true',\n value: 'ALIGN_FRACTION_TRUE',\n valueTypes: [ValueTypes.BOOL],\n metricKinds: [MetricKind.GAUGE],\n },\n {\n text: 'percentile 99',\n value: 'ALIGN_PERCENTILE_99',\n valueTypes: [ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'percentile 95',\n value: 'ALIGN_PERCENTILE_95',\n valueTypes: [ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'percentile 50',\n value: 'ALIGN_PERCENTILE_50',\n valueTypes: [ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'percentile 05',\n value: 'ALIGN_PERCENTILE_05',\n valueTypes: [ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'percent change',\n value: 'ALIGN_PERCENT_CHANGE',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n];\n\nexport const AGGREGATIONS = [\n {\n text: 'none',\n value: 'REDUCE_NONE',\n valueTypes: [\n ValueTypes.INT64,\n ValueTypes.DOUBLE,\n ValueTypes.MONEY,\n ValueTypes.DISTRIBUTION,\n ValueTypes.BOOL,\n ValueTypes.STRING,\n ],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE, MetricKind.METRIC_KIND_UNSPECIFIED],\n },\n {\n text: 'mean',\n value: 'REDUCE_MEAN',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE],\n },\n {\n text: 'min',\n value: 'REDUCE_MIN',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE, MetricKind.METRIC_KIND_UNSPECIFIED],\n },\n {\n text: 'max',\n value: 'REDUCE_MAX',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE, MetricKind.METRIC_KIND_UNSPECIFIED],\n },\n {\n text: 'sum',\n value: 'REDUCE_SUM',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE, MetricKind.METRIC_KIND_UNSPECIFIED],\n },\n {\n text: 'std. dev.',\n value: 'REDUCE_STDDEV',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE, MetricKind.METRIC_KIND_UNSPECIFIED],\n },\n {\n text: 'count',\n value: 'REDUCE_COUNT',\n valueTypes: [\n ValueTypes.INT64,\n ValueTypes.DOUBLE,\n ValueTypes.MONEY,\n ValueTypes.DISTRIBUTION,\n ValueTypes.BOOL,\n ValueTypes.STRING,\n ],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE],\n },\n {\n text: 'count true',\n value: 'REDUCE_COUNT_TRUE',\n valueTypes: [ValueTypes.BOOL],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'count false',\n value: 'REDUCE_COUNT_FALSE',\n valueTypes: [ValueTypes.BOOL],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: '99th percentile',\n value: 'REDUCE_PERCENTILE_99',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE],\n },\n {\n text: '95th percentile',\n value: 'REDUCE_PERCENTILE_95',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE],\n },\n {\n text: '50th percentile',\n value: 'REDUCE_PERCENTILE_50',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE],\n },\n {\n text: '5th percentile',\n value: 'REDUCE_PERCENTILE_05',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE],\n },\n];\n\nexport const ALIGNMENT_PERIODS = [\n { text: 'grafana auto', value: 'grafana-auto' },\n { text: 'stackdriver auto', value: 'stackdriver-auto', hidden: true },\n { text: 'cloud monitoring auto', value: 'cloud-monitoring-auto' },\n { text: '1m', value: '+60s' },\n { text: '2m', value: '+120s' },\n { text: '5m', value: '+300s' },\n { text: '10m', value: '+600s' },\n { text: '30m', value: '+1800s' },\n { text: '1h', value: '+3600s' },\n { text: '3h', value: '+7200s' },\n { text: '6h', value: '+21600s' },\n { text: '1d', value: '+86400s' },\n { text: '3d', value: '+259200s' },\n { text: '1w', value: '+604800s' },\n];\n\nexport const SYSTEM_LABELS = [\n 'metadata.system_labels.cloud_account',\n 'metadata.system_labels.name',\n 'metadata.system_labels.region',\n 'metadata.system_labels.state',\n 'metadata.system_labels.instance_group',\n 'metadata.system_labels.node_name',\n 'metadata.system_labels.service_name',\n 'metadata.system_labels.top_level_controller_type',\n 'metadata.system_labels.top_level_controller_name',\n 'metadata.system_labels.container_image',\n];\n\nexport const SELECTORS = [\n { label: 'SLI Value', value: 'select_slo_health' },\n { label: 'SLO Compliance', value: 'select_slo_compliance' },\n { label: 'SLO Error Budget Remaining', value: 'select_slo_budget_fraction' },\n];\n\nexport const QUERY_TYPES = [\n { label: 'Metrics', value: QueryType.METRICS },\n { label: 'Service Level Objectives (SLO)', value: QueryType.SLO },\n];\n","import { chunk, initial, startCase, uniqBy } from 'lodash';\n\nimport { getTemplateSrv, TemplateSrv } from '@grafana/runtime';\n\nimport { AGGREGATIONS, ALIGNMENTS, SYSTEM_LABELS } from './constants';\nimport CloudMonitoringDatasource from './datasource';\nimport { AlignmentTypes, MetricDescriptor, MetricKind, PreprocessorType, ValueTypes } from './types';\n\nconst templateSrv: TemplateSrv = getTemplateSrv();\n\nexport const extractServicesFromMetricDescriptors = (metricDescriptors: MetricDescriptor[]) =>\n uniqBy(metricDescriptors, 'service');\n\nexport const getMetricTypesByService = (metricDescriptors: MetricDescriptor[], service: string) =>\n metricDescriptors.filter((m: MetricDescriptor) => m.service === service);\n\nexport const getMetricTypes = (\n metricDescriptors: MetricDescriptor[],\n metricType: string,\n interpolatedMetricType: string,\n selectedService: string\n) => {\n const metricTypes = getMetricTypesByService(metricDescriptors, selectedService).map((m) => ({\n value: m.type,\n name: m.displayName,\n }));\n const metricTypeExistInArray = metricTypes.some(\n (m: { value: string; name: string }) => m.value === interpolatedMetricType\n );\n const metricTypeByService = metricTypes.length ? metricTypes[0].value : '';\n const selectedMetricType = metricTypeExistInArray ? metricType : metricTypeByService;\n return {\n metricTypes,\n selectedMetricType,\n };\n};\n\nexport const getAlignmentOptionsByMetric = (\n metricValueType: string,\n metricKind: string,\n preprocessor?: PreprocessorType\n) => {\n if (preprocessor && preprocessor === PreprocessorType.Rate) {\n metricKind = MetricKind.GAUGE;\n }\n\n return !metricValueType\n ? []\n : ALIGNMENTS.filter((i) => {\n return (\n i.valueTypes.indexOf(metricValueType as ValueTypes) !== -1 &&\n i.metricKinds.indexOf(metricKind as MetricKind) !== -1\n );\n });\n};\n\nexport const getAggregationOptionsByMetric = (valueType: ValueTypes, metricKind: MetricKind) => {\n return !metricKind\n ? []\n : AGGREGATIONS.filter((i) => {\n return i.valueTypes.indexOf(valueType) !== -1 && i.metricKinds.indexOf(metricKind) !== -1;\n });\n};\n\nexport const getLabelKeys = async (\n datasource: CloudMonitoringDatasource,\n selectedMetricType: string,\n projectName: string\n) => {\n const refId = 'handleLabelKeysQuery';\n const labels = await datasource.getLabels(selectedMetricType, refId, projectName);\n return [...Object.keys(labels), ...SYSTEM_LABELS];\n};\n\nexport const getAlignmentPickerData = (\n valueType: string | undefined = ValueTypes.DOUBLE,\n metricKind: string | undefined = MetricKind.GAUGE,\n perSeriesAligner: string | undefined = AlignmentTypes.ALIGN_MEAN,\n preprocessor?: PreprocessorType\n) => {\n const alignOptions = getAlignmentOptionsByMetric(valueType!, metricKind!, preprocessor!).map((option) => ({\n ...option,\n label: option.text,\n }));\n if (!alignOptions.some((o: { value: string }) => o.value === templateSrv.replace(perSeriesAligner))) {\n perSeriesAligner = alignOptions.length > 0 ? alignOptions[0].value : AlignmentTypes.ALIGN_MEAN;\n }\n return { alignOptions, perSeriesAligner };\n};\n\nexport const labelsToGroupedOptions = (groupBys: string[]) => {\n const groups = groupBys.reduce((acc: any, curr: string) => {\n const arr = curr.split('.').map(startCase);\n const group = (arr.length === 2 ? arr : initial(arr)).join(' ');\n const option = {\n value: curr,\n label: curr,\n };\n if (acc[group]) {\n acc[group] = [...acc[group], option];\n } else {\n acc[group] = [option];\n }\n return acc;\n }, {});\n return Object.entries(groups).map(([label, options]) => ({ label, options, expanded: true }), []);\n};\n\nexport const stringArrayToFilters = (filterArray: string[]) =>\n chunk(filterArray, 4).map(([key, operator, value, condition = 'AND']) => ({\n key,\n operator,\n value,\n condition,\n }));\n","import { DataQuery, DataSourceJsonData, SelectableValue } from '@grafana/data';\nimport { GoogleAuthType } from '@grafana/google-sdk';\n\nexport const authTypes: Array> = [\n { label: 'Google JWT File', value: GoogleAuthType.JWT },\n { label: 'GCE Default Service Account', value: GoogleAuthType.GCE },\n];\n\nexport enum MetricFindQueryTypes {\n Projects = 'projects',\n Services = 'services',\n DefaultProject = 'defaultProject',\n MetricTypes = 'metricTypes',\n LabelKeys = 'labelKeys',\n LabelValues = 'labelValues',\n ResourceTypes = 'resourceTypes',\n Aggregations = 'aggregations',\n Aligners = 'aligners',\n AlignmentPeriods = 'alignmentPeriods',\n Selectors = 'selectors',\n SLOServices = 'sloServices',\n SLO = 'slo',\n}\n\nexport interface CloudMonitoringVariableQuery extends DataQuery {\n selectedQueryType: string;\n selectedService: string;\n selectedMetricType: string;\n selectedSLOService: string;\n labelKey: string;\n projects: SelectableValue[];\n sloServices: SelectableValue[];\n projectName: string;\n}\n\nexport interface VariableQueryData {\n selectedQueryType: string;\n metricDescriptors: MetricDescriptor[];\n selectedService: string;\n selectedMetricType: string;\n selectedSLOService: string;\n labels: string[];\n labelKey: string;\n metricTypes: Array<{ value: string; name: string }>;\n services: SelectableValue[];\n projects: SelectableValue[];\n sloServices: SelectableValue[];\n projectName: string;\n loading: boolean;\n}\n\nexport interface Aggregation {\n crossSeriesReducer?: string;\n groupBys?: string[];\n}\n\nexport enum QueryType {\n METRICS = 'metrics',\n SLO = 'slo',\n}\n\nexport enum EditorMode {\n Visual = 'visual',\n MQL = 'mql',\n}\n\nexport enum PreprocessorType {\n None = 'none',\n Rate = 'rate',\n Delta = 'delta',\n}\n\nexport enum MetricKind {\n METRIC_KIND_UNSPECIFIED = 'METRIC_KIND_UNSPECIFIED',\n GAUGE = 'GAUGE',\n DELTA = 'DELTA',\n CUMULATIVE = 'CUMULATIVE',\n}\n\nexport enum ValueTypes {\n VALUE_TYPE_UNSPECIFIED = 'VALUE_TYPE_UNSPECIFIED',\n BOOL = 'BOOL',\n INT64 = 'INT64',\n DOUBLE = 'DOUBLE',\n STRING = 'STRING',\n DISTRIBUTION = 'DISTRIBUTION',\n MONEY = 'MONEY',\n}\n\nexport enum AlignmentTypes {\n ALIGN_DELTA = 'ALIGN_DELTA',\n ALIGN_RATE = 'ALIGN_RATE',\n ALIGN_INTERPOLATE = 'ALIGN_INTERPOLATE',\n ALIGN_NEXT_OLDER = 'ALIGN_NEXT_OLDER',\n ALIGN_MIN = 'ALIGN_MIN',\n ALIGN_MAX = 'ALIGN_MAX',\n ALIGN_MEAN = 'ALIGN_MEAN',\n ALIGN_COUNT = 'ALIGN_COUNT',\n ALIGN_SUM = 'ALIGN_SUM',\n ALIGN_STDDEV = 'ALIGN_STDDEV',\n ALIGN_COUNT_TRUE = 'ALIGN_COUNT_TRUE',\n ALIGN_COUNT_FALSE = 'ALIGN_COUNT_FALSE',\n ALIGN_FRACTION_TRUE = 'ALIGN_FRACTION_TRUE',\n ALIGN_PERCENTILE_99 = 'ALIGN_PERCENTILE_99',\n ALIGN_PERCENTILE_95 = 'ALIGN_PERCENTILE_95',\n ALIGN_PERCENTILE_50 = 'ALIGN_PERCENTILE_50',\n ALIGN_PERCENTILE_05 = 'ALIGN_PERCENTILE_05',\n ALIGN_PERCENT_CHANGE = 'ALIGN_PERCENT_CHANGE',\n}\n\nexport interface BaseQuery {\n projectName: string;\n perSeriesAligner?: string;\n alignmentPeriod?: string;\n aliasBy?: string;\n}\n\nexport interface MetricQuery extends BaseQuery {\n editorMode: EditorMode;\n metricType: string;\n crossSeriesReducer: string;\n groupBys?: string[];\n filters?: string[];\n metricKind?: MetricKind;\n valueType?: string;\n view?: string;\n query: string;\n preprocessor?: PreprocessorType;\n}\n\nexport interface SLOQuery extends BaseQuery {\n selectorName: string;\n serviceId: string;\n serviceName: string;\n sloId: string;\n sloName: string;\n goal?: number;\n}\n\nexport interface CloudMonitoringQuery extends DataQuery {\n datasourceId?: number; // Should not be necessary anymore\n queryType: QueryType;\n metricQuery: MetricQuery;\n sloQuery?: SLOQuery;\n intervalMs: number;\n type: string;\n}\n\nexport interface CloudMonitoringOptions extends DataSourceJsonData {\n defaultProject?: string;\n gceDefaultProject?: string;\n authenticationType: GoogleAuthType;\n clientEmail?: string;\n tokenUri?: string;\n}\n\nexport interface CloudMonitoringSecureJsonData {\n privateKey?: string;\n}\n\nexport interface AnnotationTarget {\n projectName: string;\n metricType: string;\n refId: string;\n filters: string[];\n metricKind: MetricKind;\n valueType: string;\n title: string;\n text: string;\n}\n\nexport interface QueryMeta {\n alignmentPeriod: string;\n rawQuery: string;\n rawQueryString: string;\n metricLabels: { [key: string]: string[] };\n resourceLabels: { [key: string]: string[] };\n resourceTypes: string[];\n}\n\nexport interface MetricDescriptor {\n valueType: string;\n metricKind: MetricKind;\n type: string;\n unit: string;\n service: string;\n serviceShortName: string;\n displayName: string;\n description: string;\n}\n\nexport interface Segment {\n type: string;\n value: string;\n}\n\nexport interface Filter {\n key: string;\n operator: string;\n value: string;\n condition?: string;\n}\n\nexport interface CustomMetaData {\n perSeriesAligner?: string;\n alignmentPeriod?: string;\n}\n\nexport interface PostResponse {\n results: Record;\n}\n","Object.defineProperty(exports,\"__esModule\",{value:!0});var e=require(\"@grafana/data\"),t=require(\"@grafana/ui\"),a=require(\"react\"),n=require(\"lodash\");function l(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var o=l(a),r=function(){return r=Object.assign||function(e){for(var t,a=1,n=arguments.length;a0)&&!(n=o.next()).done;)r.push(n.value)}catch(e){l={error:e}}finally{try{n&&!n.done&&(a=o.return)&&a.call(o)}finally{if(l)throw l.error}}return r}var u,c=\"Configuration help box\",d=\"Configuration drop zone\",f=\"Configuration text area\",s=\"Paste JWT button\",p=\"Reset JWT button\",m=\"JWT form\",y=\"JWT button\",h=\"GCE button\",v=[\"private_key\",\"token_uri\",\"client_email\",\"project_id\"],g=function(e){var n=e.onChange,l=i(a.useState(),2),r=l[0],u=l[1],c=i(a.useState(null),2),p=c[0],m=c[1],y=t.useTheme2(),h=a.useCallback((function(e){u(null),m(!0)}),[m]),v=a.useCallback((function(e){m(null),u(null)}),[m]),g=a.useCallback((function(e){if(\"\"!==e.trim()){var t=void 0;try{t=JSON.parse(e)}catch(e){u(\"Invalid JWT token\")}var a=E(t);a.isValid?n({privateKey:t.private_key,tokenUri:t.token_uri,clientEmail:t.client_email,projectId:t.project_id}):u(a.error)}}),[u,n]);return o.default.createElement(o.default.Fragment,null,o.default.createElement(t.Field,{label:\"JWT token\",invalid:Boolean(r),description:p?\"Paste JWT token below\":\"Upload or paste Google JWT token\",error:r},o.default.createElement(o.default.Fragment,null,!0!==p&&o.default.createElement(\"div\",{\"data-testid\":d},o.default.createElement(t.FileDropzone,{options:{multiple:!1,accept:\"application/json\"},readAs:\"readAsText\",onLoad:function(e){g(e),m(!1)}},o.default.createElement(\"p\",{style:{margin:0,fontSize:\"\"+y.typography.h4.fontSize,textAlign:\"center\"}},\"Drop the Google JWT file here\",o.default.createElement(\"br\",null),o.default.createElement(\"br\",null),o.default.createElement(t.LinkButton,{fill:\"outline\"},\"Click to browse files\")))),p&&o.default.createElement(t.TextArea,{\"data-testid\":f,autoFocus:!0,invalid:Boolean(r),placeholder:\"Paste Google JWT token here\",onBlur:function(e){return g(e.currentTarget.value)},rows:12}))),!p&&o.default.createElement(t.Field,null,o.default.createElement(t.Button,{\"data-testid\":s,type:\"button\",fill:\"outline\",style:{color:\"\"+y.colors.primary.text},onClick:h},\"Paste JWT Token\")),p&&r&&o.default.createElement(t.Field,null,o.default.createElement(t.Button,{type:\"button\",fill:\"outline\",style:{color:\"\"+y.colors.primary.text},onClick:v},\"Upload JWT Token\")))},E=function(e){if(!n.isObject(e))return{isValid:!1,error:\"Invalid JWT token\"};var t=v.filter((function(t){return!e[t]}));return t.length>0?{isValid:!1,error:\"Missing keys: \"+t.join(\", \")}:{isValid:!0}},T=function(e){var a=e.options,n=e.onReset,l=e.onChange;return o.default.createElement(\"div\",{\"data-testid\":m},o.default.createElement(t.Field,{label:\"Project ID\"},o.default.createElement(t.Input,{id:\"defaultProject\",width:60,value:a.defaultProject||\"\",onChange:l(\"defaultProject\")})),o.default.createElement(t.Field,{label:\"Client email\"},o.default.createElement(t.Input,{width:60,id:\"clientEmail\",value:a.clientEmail||\"\",onChange:l(\"clientEmail\")})),o.default.createElement(t.Field,{label:\"Token URI\"},o.default.createElement(t.Input,{width:60,id:\"tokenUri\",value:a.tokenUri||\"\",onChange:l(\"tokenUri\")})),o.default.createElement(t.Field,{label:\"Private key\",disabled:!0},o.default.createElement(t.Input,{width:60,id:\"privateKey\",readOnly:!0,placeholder:\"Private key configured\",addonAfter:o.default.createElement(t.Tooltip,{content:\"Click to clear the uploaded JWT token and upload a new one\"},o.default.createElement(t.Button,{\"data-testid\":p,icon:\"sync\",size:\"xs\",onClick:function(){return n(null)},fill:\"outline\"},\"Reset token\"))})))};exports.GoogleAuthType=void 0,(u=exports.GoogleAuthType||(exports.GoogleAuthType={})).JWT=\"jwt\",u.GCE=\"gce\";var k=[{label:\"Google JWT File\",value:exports.GoogleAuthType.JWT,ariaLabel:y},{label:\"GCE Default Service Account\",value:exports.GoogleAuthType.GCE,ariaLabel:h}];exports.ConnectionConfig=function(a){var n=a.options,l=a.onOptionsChange,i=n.jsonData,u=n.secureJsonFields,d=n.secureJsonData;i.authenticationType||(i.authenticationType=exports.GoogleAuthType.JWT);var f=i.authenticationType===exports.GoogleAuthType.JWT||void 0===i.authenticationType,s=Boolean(u&&u.privateKey&&i.clientEmail&&i.defaultProject&&i.tokenUri);return o.default.createElement(o.default.Fragment,null,o.default.createElement(t.FieldSet,{label:\"Authentication\"},o.default.createElement(t.Field,{label:\"Authentication type\"},o.default.createElement(t.RadioButtonGroup,{options:k,value:i.authenticationType||exports.GoogleAuthType.JWT,onChange:function(e){l(r(r({},n),{jsonData:r(r({},n.jsonData),{authenticationType:e})}))}}))),f&&o.default.createElement(t.FieldSet,{label:\"JWT Key Details\"},s?o.default.createElement(T,{options:n.jsonData,onReset:function(e){var t=r({},d),a=e?r(r({},n.jsonData),e):r({},n.jsonData);delete a.clientEmail,delete a.defaultProject,delete a.tokenUri,delete t.privateKey,l(r(r({},n),{secureJsonData:t,jsonData:a}))},onChange:function(t){return e.onUpdateDatasourceJsonDataOption(a,t)}}):o.default.createElement(g,{onChange:function(e){l(r(r({},n),{secureJsonFields:r(r({},u),{privateKey:!0}),secureJsonData:r(r({},d),{privateKey:e.privateKey}),jsonData:r(r({},i),{clientEmail:e.clientEmail,defaultProject:e.projectId,tokenUri:e.tokenUri})}))}}),\" \"),o.default.createElement(\"div\",{className:\"grafana-info-box\",style:{marginTop:\"16px\"},\"data-testid\":c},o.default.createElement(\"p\",null,\"Don’t know how to get a service account key file or create a service account? Read more\",\" \",o.default.createElement(\"a\",{className:\"external-link\",target:\"_blank\",rel:\"noopener noreferrer\",href:\"https://grafana.com/docs/grafana/latest/datasources/google-cloud-monitoring/google-authentication/\"},\"in the documentation.\"))),!f&&o.default.createElement(t.Alert,{title:\"\",severity:\"info\"},\"Verify GCE default service account by clicking Save & Test\"))};\n//# sourceMappingURL=index.production.js.map\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./dist/index.production.js');\n} else {\n module.exports = require('./dist/index.development.js');\n}\n"],"names":["MQLQueryEditor","query","onChange","onRunQuery","TextArea","name","className","value","rows","placeholder","onBlur","e","currentTarget","onKeyDown","event","key","shiftKey","ctrlKey","preventDefault","defaultState","labels","defaultQuery","dataSource","editorMode","EditorMode","projectName","getDefaultProject","metricType","metricKind","MetricKind","valueType","crossSeriesReducer","alignmentPeriod","perSeriesAligner","AlignmentTypes","groupBys","filters","aliasBy","preprocessor","PreprocessorType","Editor","refId","datasource","onQueryChange","customMetaData","variableOptionGroup","state","setState","useState","useEffect","getLabels","then","prevState","useCallback","metricQuery","onMetricTypeChange","type","ValueTypes","getAlignmentPickerData","templateVariableOptions","options","q","MetricQueryEditor","React","QueryEditor","PureComponent","this","props","hasOwnProperty","queryType","QueryType","ensureGCEDefaultProject","prop","render","sloQuery","defaultSLOQuery","meta","data","series","length","custom","label","expanded","getVariables","map","toOption","fillComponent","Button","variant","css","icon","onClick","htmlFor","Select","menuShouldPortal","width","SELECT_WIDTH","QUERY_TYPES","inputId","Service","services","setServices","getSLOServices","allowCustomValue","serviceId","serviceName","sloId","SLO","slos","setSLOs","getServiceLevelObjectives","sloIds","sloName","async","slo","find","templateSrv","replace","goal","Selector","SELECTORS","s","selectorName","SLOQueryEditor","selectWidth","Project","projects","setProjects","getProjects","projectsWithTemplateVariables","useMemo","QueryEditorRow","formatCreateLabel","v","Metrics","metricDescriptors","metrics","service","metric","theme","useTheme2","selectStyles","getSelectStyles","customStyle","useStyles2","getStyles","children","getSelectedMetricDescriptor","md","getMetricTypes","getServicesList","selectedMetricDescriptor","filter","m","displayName","component","optionDescription","description","getMetricsList","metricDescriptor","loadMetricDescriptors","extra","startCase","serviceShortName","uniqBy","QueryEditorField","labelWidth","LABEL_WIDTH","some","INNER_LABEL_WIDTH","colors","text","secondary","GroupBy","labelsToGroupedOptions","SYSTEM_LABELS","tooltip","MultiSelect","INPUT_WIDTH","o","Aggregation","Alignment","AlignmentPeriodLabel","AlignmentFunction","AlignmentPeriod","operators","FilterButton","ref","rest","OperatorButton","LabelFilter","filterArray","stringArrayToFilters","Object","keys","filtersToStringArray","strArr","flatten","operator","condition","slice","AddFilter","menuPlacement","renderControl","noFillEnd","VerticalGroup","spacing","index","op","opp","push","valueOptions","HorizontalGroup","f","i","size","_","values","every","AnnotationsHelp","psa","alignOptions","ALIGNMENT_PERIODS","ap","visibleOptions","hidden","formatAlignmentText","alignment","ALIGNMENTS","seconds","parseInt","rangeUtil","AliasBy","alias","setAlias","propagateOnChange","debounce","target","Input","id","aggOptions","useAggregationOptionsByMetric","selected","useSelectedFromOptions","getAggregationOptionsByMetric","a","VariableQueryField","InlineField","InlineLabel","Preprocessor","VisualMetricQueryEditor","NONE_OPTION","useOptions","RadioButtonGroup","GoogleAuthType","valueTypes","metricKinds","AGGREGATIONS","getTemplateSrv","extractServicesFromMetricDescriptors","getMetricTypesByService","interpolatedMetricType","selectedService","metricTypes","metricTypeExistInArray","metricTypeByService","selectedMetricType","getAlignmentOptionsByMetric","metricValueType","indexOf","getLabelKeys","option","groups","reduce","acc","curr","arr","split","group","initial","join","entries","chunk","MetricFindQueryTypes","t","n","default","l","r","assign","arguments","prototype","call","apply","Symbol","iterator","next","done","error","return","u","g","c","p","y","h","trim","JSON","parse","E","isValid","privateKey","private_key","tokenUri","token_uri","clientEmail","client_email","projectId","project_id","createElement","Fragment","Field","invalid","Boolean","FileDropzone","multiple","accept","readAs","onLoad","style","margin","fontSize","typography","h4","textAlign","LinkButton","fill","autoFocus","color","primary","isObject","T","onReset","defaultProject","disabled","readOnly","addonAfter","Tooltip","content","exports","JWT","GCE","k","ariaLabel","ConnectionConfig","onOptionsChange","jsonData","secureJsonFields","d","secureJsonData","authenticationType","FieldSet","onUpdateDatasourceJsonDataOption","marginTop","rel","href","Alert","title","severity","module"],"sourceRoot":""}