{"version":3,"file":"6499.9f52e0855fd4782a8b45.js","mappings":"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","sources":["webpack://grafana/./node_modules/@grafana/experimental/dist/esm/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js","webpack://grafana/./node_modules/@grafana/experimental/dist/esm/QueryEditor/EditorHeader.js","webpack://grafana/./node_modules/@grafana/experimental/dist/esm/QueryEditor/FlexItem.js","webpack://grafana/./node_modules/@grafana/experimental/node_modules/uuid/dist/esm-browser/rng.js","webpack://grafana/./node_modules/@grafana/experimental/node_modules/uuid/dist/esm-browser/regex.js","webpack://grafana/./node_modules/@grafana/experimental/node_modules/uuid/dist/esm-browser/validate.js","webpack://grafana/./node_modules/@grafana/experimental/node_modules/uuid/dist/esm-browser/stringify.js","webpack://grafana/./node_modules/@grafana/experimental/node_modules/uuid/dist/esm-browser/v4.js","webpack://grafana/./public/app/plugins/datasource/loki/components/LokiCheatSheet.tsx","webpack://grafana/./node_modules/@grafana/experimental/dist/esm/VisualQueryBuilder/components/QueryHeaderSwitch.js","webpack://grafana/./node_modules/@grafana/experimental/dist/esm/VisualQueryBuilder/components/QueryEditorModeToggle.js","webpack://grafana/./packages/grafana-o11y-ds-frontend/src/store.ts","webpack://grafana/./packages/grafana-o11y-ds-frontend/src/LocalStorageValueProvider/LocalStorageValueProvider.tsx","webpack://grafana/./public/app/plugins/datasource/loki/components/LokiLabelBrowser.tsx","webpack://grafana/./public/app/plugins/datasource/loki/querybuilder/components/LabelBrowserModal.tsx","webpack://grafana/./node_modules/@grafana/experimental/dist/esm/VisualQueryBuilder/components/LabelFilterItem.js","webpack://grafana/./node_modules/@grafana/experimental/dist/esm/VisualQueryBuilder/components/LabelFilters.js","webpack://grafana/./node_modules/@grafana/experimental/dist/esm/VisualQueryBuilder/components/OperationExplainedBox.js","webpack://grafana/./node_modules/@grafana/experimental/dist/esm/VisualQueryBuilder/components/OperationsEditorRow.js","webpack://grafana/./node_modules/react-popper-tooltip/dist/esm/react-popper-tooltip.js","webpack://grafana/./node_modules/@grafana/experimental/dist/esm/VisualQueryBuilder/components/OperationInfoButton.js","webpack://grafana/./node_modules/@grafana/experimental/dist/esm/VisualQueryBuilder/components/OperationHeader.js","webpack://grafana/./node_modules/@grafana/experimental/dist/esm/VisualQueryBuilder/components/OperationParamEditor.js","webpack://grafana/./node_modules/@grafana/experimental/dist/esm/VisualQueryBuilder/components/OperationEditorBody.js","webpack://grafana/./node_modules/@grafana/experimental/dist/esm/VisualQueryBuilder/components/OperationEditor.js","webpack://grafana/./node_modules/@grafana/experimental/dist/esm/VisualQueryBuilder/components/OperationList.js","webpack://grafana/./node_modules/@grafana/experimental/dist/esm/VisualQueryBuilder/components/QueryBuilderHints.js","webpack://grafana/./node_modules/@grafana/experimental/dist/esm/VisualQueryBuilder/components/OperationListExplained.js","webpack://grafana/./public/app/plugins/datasource/loki/querybuilder/components/LokiQueryBuilderExplained.tsx","webpack://grafana/./public/app/plugins/datasource/loki/querybuilder/components/NestedQuery.tsx","webpack://grafana/./public/app/plugins/datasource/loki/querybuilder/components/NestedQueryList.tsx","webpack://grafana/./public/app/plugins/datasource/loki/querybuilder/components/LokiQueryBuilder.tsx","webpack://grafana/./public/app/plugins/datasource/loki/querybuilder/components/QueryPreview.tsx","webpack://grafana/./public/app/plugins/datasource/loki/querybuilder/components/LokiQueryBuilderContainer.tsx","webpack://grafana/./node_modules/@grafana/experimental/dist/esm/VisualQueryBuilder/components/QueryOptionGroup.js","webpack://grafana/./public/app/plugins/datasource/loki/querybuilder/components/LokiQueryBuilderOptions.tsx","webpack://grafana/./public/app/plugins/datasource/loki/querybuilder/components/LokiQueryCodeEditor.tsx","webpack://grafana/./public/app/plugins/datasource/loki/querybuilder/components/QueryPattern.tsx","webpack://grafana/./public/app/plugins/datasource/loki/querybuilder/components/QueryPatternsModal.tsx","webpack://grafana/./public/app/plugins/datasource/loki/querybuilder/state.ts","webpack://grafana/./public/app/plugins/datasource/loki/components/stats.ts","webpack://grafana/./public/app/plugins/datasource/loki/components/LokiQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/loki/components/LokiQueryEditorForAlerting.tsx","webpack://grafana/./public/app/plugins/datasource/loki/components/LokiQueryEditorByApp.tsx","webpack://grafana/./public/app/plugins/datasource/loki/configuration/AlertingSettings.tsx","webpack://grafana/./public/app/plugins/datasource/loki/configuration/DebugSection.tsx","webpack://grafana/./public/app/plugins/datasource/loki/configuration/DerivedField.tsx","webpack://grafana/./public/app/plugins/datasource/loki/configuration/DerivedFields.tsx","webpack://grafana/./public/app/plugins/datasource/loki/configuration/QuerySettings.tsx","webpack://grafana/./public/app/plugins/datasource/loki/configuration/ConfigEditor.tsx","webpack://grafana/./public/app/plugins/datasource/loki/module.ts"],"sourcesContent":["import React__default from 'react';\nimport { css, cx } from '@emotion/css';\nimport { InlineField, TagsInput, Input } from '@grafana/ui';\nimport { ConfigSubSection } from '../ConfigSection/ConfigSubSection.js';\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nconst AdvancedHttpSettings = ({\n config,\n onChange,\n className\n}) => {\n const onCookiesChange = (cookies) => {\n onChange(__spreadProps(__spreadValues({}, config), {\n jsonData: __spreadProps(__spreadValues({}, config.jsonData), {\n keepCookies: cookies\n })\n }));\n };\n const onTimeoutChange = (event) => {\n onChange(__spreadProps(__spreadValues({}, config), {\n jsonData: __spreadProps(__spreadValues({}, config.jsonData), {\n timeout: parseInt(event.currentTarget.value, 10)\n })\n }));\n };\n const styles = {\n container: css({\n maxWidth: 578\n })\n };\n return /* @__PURE__ */ React__default.createElement(ConfigSubSection, { title: \"Advanced HTTP settings\", className: cx(styles.container, className) }, /* @__PURE__ */ React__default.createElement(\n InlineField,\n {\n htmlFor: \"advanced-http-cookies\",\n label: \"Allowed cookies\",\n labelWidth: 24,\n tooltip: \"Grafana proxy deletes forwarded cookies by default. Specify cookies by name that should be forwarded to the data source.\",\n disabled: config.readOnly,\n grow: true\n },\n /* @__PURE__ */ React__default.createElement(\n TagsInput,\n {\n id: \"advanced-http-cookies\",\n placeholder: \"New cookie (hit enter to add)\",\n tags: config.jsonData.keepCookies,\n onChange: onCookiesChange\n }\n )\n ), /* @__PURE__ */ React__default.createElement(\n InlineField,\n {\n htmlFor: \"advanced-http-timeout\",\n label: \"Timeout\",\n labelWidth: 24,\n tooltip: \"HTTP request timeout in seconds\",\n disabled: config.readOnly,\n grow: true\n },\n /* @__PURE__ */ React__default.createElement(\n Input,\n {\n id: \"advanced-http-timeout\",\n type: \"number\",\n min: 0,\n placeholder: \"Timeout in seconds\",\n \"aria-label\": \"Timeout in seconds\",\n value: config.jsonData.timeout,\n onChange: onTimeoutChange\n }\n )\n ));\n};\n\nexport { AdvancedHttpSettings };\n//# sourceMappingURL=AdvancedHttpSettings.js.map\n","import { css } from '@emotion/css';\nimport React__default from 'react';\nimport { useStyles2 } from '@grafana/ui';\n\nconst EditorHeader = ({ children }) => {\n const styles = useStyles2(getStyles);\n return /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.root }, children);\n};\nconst getStyles = (theme) => ({\n root: css({\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n gap: theme.spacing(3),\n minHeight: theme.spacing(4)\n })\n});\n\nexport { EditorHeader };\n//# sourceMappingURL=EditorHeader.js.map\n","import React__default from 'react';\n\nconst FlexItem = ({ grow, shrink }) => {\n return /* @__PURE__ */ React__default.createElement(\"div\", { style: { display: \"block\", flexGrow: grow, flexShrink: shrink } });\n};\n\nexport { FlexItem };\n//# sourceMappingURL=FlexItem.js.map\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import { shuffle } from 'lodash';\nimport React, { PureComponent } from 'react';\n\nimport { QueryEditorHelpProps } from '@grafana/data';\nimport { reportInteraction } from '@grafana/runtime';\n\nimport LokiLanguageProvider from '../LanguageProvider';\nimport { escapeLabelValueInExactSelector } from '../languageUtils';\nimport { LokiQuery } from '../types';\n\nconst DEFAULT_EXAMPLES = ['{job=\"default/prometheus\"}'];\nconst PREFERRED_LABELS = ['job', 'app', 'k8s_app'];\nconst EXAMPLES_LIMIT = 5;\n\nconst LOGQL_EXAMPLES = [\n {\n title: 'Log pipeline',\n expression: '{job=\"mysql\"} |= \"metrics\" | logfmt | duration > 10s',\n label:\n 'This query targets the MySQL job, keeps logs that contain the substring \"metrics\", and then parses and filters the logs further.',\n },\n {\n title: 'Count over time',\n expression: 'count_over_time({job=\"mysql\"}[5m])',\n label: 'This query counts all the log lines within the last five minutes for the MySQL job.',\n },\n {\n title: 'Rate',\n expression: 'rate(({job=\"mysql\"} |= \"error\" != \"timeout\")[10s])',\n label:\n 'This query gets the per-second rate of all non-timeout errors within the last ten seconds for the MySQL job.',\n },\n {\n title: 'Aggregate, count, and group',\n expression: 'sum(count_over_time({job=\"mysql\"}[5m])) by (level)',\n label: 'Get the count of logs during the last five minutes, grouping by level.',\n },\n];\n\nexport default class LokiCheatSheet extends PureComponent, { userExamples: string[] }> {\n declare userLabelTimer: ReturnType;\n state = {\n userExamples: [],\n };\n\n componentDidMount() {\n this.scheduleUserLabelChecking();\n reportInteraction('grafana_loki_cheatsheet_opened', {});\n }\n\n componentWillUnmount() {\n clearTimeout(this.userLabelTimer);\n }\n\n scheduleUserLabelChecking() {\n this.userLabelTimer = setTimeout(this.checkUserLabels, 1000);\n }\n\n checkUserLabels = async () => {\n // Set example from user labels\n const provider: LokiLanguageProvider = this.props.datasource?.languageProvider;\n if (provider.started) {\n const labels = provider.getLabelKeys() || [];\n const preferredLabel = PREFERRED_LABELS.find((l) => labels.includes(l));\n if (preferredLabel) {\n const values = await provider.fetchLabelValues(preferredLabel);\n const userExamples = shuffle(values)\n .slice(0, EXAMPLES_LIMIT)\n .map((value) => `{${preferredLabel}=\"${escapeLabelValueInExactSelector(value)}\"}`);\n this.setState({ userExamples });\n }\n } else {\n this.scheduleUserLabelChecking();\n }\n };\n\n renderExpression(expr: string) {\n const { onClickExample } = this.props;\n const onClick = (query: LokiQuery) => {\n onClickExample(query);\n reportInteraction('grafana_loki_cheatsheet_example_clicked', {});\n };\n\n return (\n onClick({ refId: 'A', expr })}\n >\n {expr}\n \n );\n }\n\n render() {\n const { userExamples } = this.state;\n const hasUserExamples = userExamples.length > 0;\n\n return (\n
\n

Loki Cheat Sheet

\n
\n
See your logs
\n
\n Start by selecting a log stream from the Label browser, or alternatively you can write a stream selector\n into the query field.\n
\n {hasUserExamples ? (\n
\n
Here are some example streams from your logs:
\n {userExamples.map((example) => this.renderExpression(example))}\n
\n ) : (\n
\n
Here is an example of a log stream:
\n {this.renderExpression(DEFAULT_EXAMPLES[0])}\n
\n )}\n
\n
\n
Combine stream selectors
\n {this.renderExpression('{app=\"cassandra\",namespace=\"prod\"}')}\n
Returns all log lines from streams that have both labels.
\n
\n\n
\n
Filtering for search terms.
\n {this.renderExpression('{app=\"cassandra\"} |~ \"(duration|latency)s*(=|is|of)s*[d.]+\"')}\n {this.renderExpression('{app=\"cassandra\"} |= \"exact match\"')}\n {this.renderExpression('{app=\"cassandra\"} != \"do not match\"')}\n
\n \n LogQL\n {' '}\n supports exact and regular expression filters.\n
\n
\n {LOGQL_EXAMPLES.map((item) => (\n
\n
{item.title}
\n {this.renderExpression(item.expression)}\n
{item.label}
\n
\n ))}\n
\n );\n }\n}\n","import { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport React__default, { useRef } from 'react';\nimport { useStyles2, Switch } from '@grafana/ui';\nimport { Stack } from '../../QueryEditor/Stack.js';\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction QueryHeaderSwitch(_a) {\n var _b = _a, { label } = _b, inputProps = __objRest(_b, [\"label\"]);\n const dashedLabel = label.replace(\" \", \"-\");\n const switchIdRef = useRef(uniqueId(`switch-${dashedLabel}`));\n const styles = useStyles2(getStyles);\n return /* @__PURE__ */ React__default.createElement(Stack, { gap: 1 }, /* @__PURE__ */ React__default.createElement(\"label\", { htmlFor: switchIdRef.current, className: styles.switchLabel }, label), /* @__PURE__ */ React__default.createElement(Switch, __spreadProps(__spreadValues({}, inputProps), { id: switchIdRef.current })));\n}\nconst getStyles = (theme) => {\n return {\n switchLabel: css({\n color: theme.colors.text.secondary,\n cursor: \"pointer\",\n fontSize: theme.typography.bodySmall.fontSize,\n \"&:hover\": {\n color: theme.colors.text.primary\n }\n })\n };\n};\n\nexport { QueryHeaderSwitch };\n//# sourceMappingURL=QueryHeaderSwitch.js.map\n","import React__default from 'react';\nimport { RadioButtonGroup } from '@grafana/ui';\nimport { QueryEditorMode } from '../types.js';\n\nconst editorModes = [\n { label: \"Builder\", value: QueryEditorMode.Builder },\n { label: \"Code\", value: QueryEditorMode.Code }\n];\nfunction QueryEditorModeToggle({ mode, onChange }) {\n return /* @__PURE__ */ React__default.createElement(\"div\", { \"data-testid\": \"QueryEditorModeToggle\" }, /* @__PURE__ */ React__default.createElement(RadioButtonGroup, { options: editorModes, size: \"sm\", value: mode, onChange }));\n}\n\nexport { QueryEditorModeToggle };\n//# sourceMappingURL=QueryEditorModeToggle.js.map\n","type StoreValue = string | number | boolean | null;\n\nexport class Store {\n get(key: string) {\n return window.localStorage[key];\n }\n\n set(key: string, value: StoreValue) {\n window.localStorage[key] = value;\n }\n\n getBool(key: string, def: boolean): boolean {\n if (def !== void 0 && !this.exists(key)) {\n return def;\n }\n return window.localStorage[key] === 'true';\n }\n\n getObject(key: string): T | undefined;\n getObject(key: string, def: T): T;\n getObject(key: string, def?: T) {\n let ret = def;\n if (this.exists(key)) {\n const json = window.localStorage[key];\n try {\n ret = JSON.parse(json);\n } catch (error) {\n console.error(`Error parsing store object: ${key}. Returning default: ${def}. [${error}]`);\n }\n }\n return ret;\n }\n\n /* Returns true when successfully stored, throws error if not successfully stored */\n setObject(key: string, value: unknown) {\n let json;\n try {\n json = JSON.stringify(value);\n } catch (error) {\n throw new Error(`Could not stringify object: ${key}. [${error}]`);\n }\n try {\n this.set(key, json);\n } catch (error) {\n // Likely hitting storage quota\n const errorToThrow = new Error(`Could not save item in localStorage: ${key}. [${error}]`);\n if (error instanceof Error) {\n errorToThrow.name = error.name;\n }\n throw errorToThrow;\n }\n return true;\n }\n\n exists(key: string) {\n return window.localStorage[key] !== void 0;\n }\n\n delete(key: string) {\n window.localStorage.removeItem(key);\n }\n}\n\nexport const store = new Store();\n","import React, { useEffect, useState } from 'react';\n\nimport { store } from '../store';\n\nexport interface Props {\n storageKey: string;\n defaultValue: T;\n children: (value: T, onSaveToStore: (value: T) => void, onDeleteFromStore: () => void) => React.ReactNode;\n}\n\nexport const LocalStorageValueProvider = (props: Props) => {\n const { children, storageKey, defaultValue } = props;\n\n const [state, setState] = useState({ value: store.getObject(props.storageKey, props.defaultValue) });\n\n useEffect(() => {\n const onStorageUpdate = (v: StorageEvent) => {\n if (v.key === storageKey) {\n setState({ value: store.getObject(props.storageKey, props.defaultValue) });\n }\n };\n\n window.addEventListener('storage', onStorageUpdate);\n\n return () => {\n window.removeEventListener('storage', onStorageUpdate);\n };\n });\n\n const onSaveToStore = (value: T) => {\n try {\n store.setObject(storageKey, value);\n } catch (error) {\n console.error(error);\n }\n setState({ value });\n };\n\n const onDeleteFromStore = () => {\n try {\n store.delete(storageKey);\n } catch (error) {\n console.log(error);\n }\n setState({ value: defaultValue });\n };\n\n return <>{children(state.value, onSaveToStore, onDeleteFromStore)};\n};\n","import { css, cx } from '@emotion/css';\nimport { sortBy } from 'lodash';\nimport React, { ChangeEvent } from 'react';\nimport { FixedSizeList } from 'react-window';\n\nimport { CoreApp, GrafanaTheme2, TimeRange } from '@grafana/data';\nimport { reportInteraction } from '@grafana/runtime';\nimport {\n Button,\n HighlightPart,\n HorizontalGroup,\n Input,\n Label,\n LoadingPlaceholder,\n withTheme2,\n BrowserLabel as LokiLabel,\n fuzzyMatch,\n} from '@grafana/ui';\n\nimport LokiLanguageProvider from '../LanguageProvider';\nimport { escapeLabelValueInExactSelector, escapeLabelValueInRegexSelector } from '../languageUtils';\n\n// Hard limit on labels to render\nconst MAX_LABEL_COUNT = 1000;\nconst MAX_VALUE_COUNT = 10000;\nconst MAX_AUTO_SELECT = 4;\nconst EMPTY_SELECTOR = '{}';\n\nexport interface BrowserProps {\n languageProvider: LokiLanguageProvider;\n onChange: (selector: string) => void;\n theme: GrafanaTheme2;\n app?: CoreApp;\n autoSelect?: number;\n timeRange?: TimeRange;\n hide?: () => void;\n lastUsedLabels: string[];\n storeLastUsedLabels: (labels: string[]) => void;\n deleteLastUsedLabels: () => void;\n}\n\ninterface BrowserState {\n labels: SelectableLabel[];\n searchTerm: string;\n status: string;\n error: string;\n validationStatus: string;\n}\n\ninterface FacettableValue {\n name: string;\n selected?: boolean;\n highlightParts?: HighlightPart[];\n order?: number;\n}\n\nexport interface SelectableLabel {\n name: string;\n selected?: boolean;\n loading?: boolean;\n values?: FacettableValue[];\n hidden?: boolean;\n facets?: number;\n}\n\nexport function buildSelector(labels: SelectableLabel[]): string {\n const selectedLabels = [];\n for (const label of labels) {\n if (label.selected && label.values && label.values.length > 0) {\n const selectedValues = label.values.filter((value) => value.selected).map((value) => value.name);\n if (selectedValues.length > 1) {\n selectedLabels.push(`${label.name}=~\"${selectedValues.map(escapeLabelValueInRegexSelector).join('|')}\"`);\n } else if (selectedValues.length === 1) {\n selectedLabels.push(`${label.name}=\"${escapeLabelValueInExactSelector(selectedValues[0])}\"`);\n }\n }\n }\n return ['{', selectedLabels.join(','), '}'].join('');\n}\n\nexport function facetLabels(\n labels: SelectableLabel[],\n possibleLabels: Record,\n lastFacetted?: string\n): SelectableLabel[] {\n return labels.map((label) => {\n const possibleValues = possibleLabels[label.name];\n if (possibleValues) {\n let existingValues: FacettableValue[];\n if (label.name === lastFacetted && label.values) {\n // Facetting this label, show all values\n existingValues = label.values;\n } else {\n // Keep selection in other facets\n const selectedValues: Set = new Set(\n label.values?.filter((value) => value.selected).map((value) => value.name) || []\n );\n // Values for this label have not been requested yet, let's use the facetted ones as the initial values\n existingValues = possibleValues.map((value) => ({ name: value, selected: selectedValues.has(value) }));\n }\n return { ...label, loading: false, values: existingValues, facets: existingValues.length };\n }\n\n // Label is facetted out, hide all values\n return { ...label, loading: false, hidden: !possibleValues, values: undefined, facets: 0 };\n });\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n wrapper: css`\n background-color: ${theme.colors.background.secondary};\n width: 100%;\n `,\n wrapperPadding: css`\n padding: ${theme.spacing(2)};\n `,\n list: css`\n margin-top: ${theme.spacing(1)};\n display: flex;\n flex-wrap: wrap;\n max-height: 200px;\n overflow: auto;\n `,\n section: css`\n & + & {\n margin: ${theme.spacing(2, 0)};\n }\n\n position: relative;\n `,\n footerSectionStyles: css`\n padding: ${theme.spacing(1)};\n background-color: ${theme.colors.background.primary};\n position: sticky;\n bottom: -${theme.spacing(3)}; /* offset the padding on modal */\n left: 0;\n `,\n selector: css`\n font-family: ${theme.typography.fontFamilyMonospace};\n margin-bottom: ${theme.spacing(1)};\n width: 100%;\n `,\n status: css`\n margin-bottom: ${theme.spacing(1)};\n color: ${theme.colors.text.secondary};\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n transition: opacity 100ms linear;\n opacity: 0;\n font-size: ${theme.typography.bodySmall.fontSize};\n height: calc(${theme.typography.bodySmall.fontSize} + 10px);\n `,\n statusShowing: css`\n opacity: 1;\n `,\n error: css`\n color: ${theme.colors.error.main};\n `,\n valueList: css`\n margin-right: ${theme.spacing(1)};\n resize: horizontal;\n `,\n valueListWrapper: css`\n border-left: 1px solid ${theme.colors.border.medium};\n margin: ${theme.spacing(1, 0)};\n padding: ${theme.spacing(1, 0, 1, 1)};\n `,\n valueListArea: css`\n display: flex;\n flex-wrap: wrap;\n margin-top: ${theme.spacing(1)};\n `,\n valueTitle: css`\n margin-left: -${theme.spacing(0.5)};\n margin-bottom: ${theme.spacing(1)};\n `,\n validationStatus: css`\n padding: ${theme.spacing(0.5)};\n margin-bottom: ${theme.spacing(1)};\n color: ${theme.colors.text.maxContrast};\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n `,\n});\n\nexport class UnthemedLokiLabelBrowser extends React.Component {\n state: BrowserState = {\n labels: [],\n searchTerm: '',\n status: 'Ready',\n error: '',\n validationStatus: '',\n };\n\n onChangeSearch = (event: ChangeEvent) => {\n this.setState({ searchTerm: event.target.value });\n };\n\n onClickRunLogsQuery = () => {\n reportInteraction('grafana_loki_label_browser_closed', {\n app: this.props.app,\n closeType: 'showLogsButton',\n });\n const selector = buildSelector(this.state.labels);\n this.props.onChange(selector);\n };\n\n onClickRunMetricsQuery = () => {\n reportInteraction('grafana_loki_label_browser_closed', {\n app: this.props.app,\n closeType: 'showLogsRateButton',\n });\n const selector = buildSelector(this.state.labels);\n const query = `rate(${selector}[$__auto])`;\n this.props.onChange(query);\n };\n\n onClickClear = () => {\n this.setState((state) => {\n const labels: SelectableLabel[] = state.labels.map((label) => ({\n ...label,\n values: undefined,\n selected: false,\n loading: false,\n hidden: false,\n facets: undefined,\n }));\n return { labels, searchTerm: '', status: '', error: '', validationStatus: '' };\n });\n this.props.deleteLastUsedLabels();\n };\n\n onClickLabel = (name: string, value: string | undefined, event: React.MouseEvent) => {\n const label = this.state.labels.find((l) => l.name === name);\n if (!label) {\n return;\n }\n // Toggle selected state\n const selected = !label.selected;\n let nextValue: Partial = { selected };\n if (label.values && !selected) {\n // Deselect all values if label was deselected\n const values = label.values.map((value) => ({ ...value, selected: false }));\n nextValue = { ...nextValue, facets: 0, values };\n }\n // Resetting search to prevent empty results\n this.setState({ searchTerm: '' });\n this.updateLabelState(name, nextValue, '', () => this.doFacettingForLabel(name));\n };\n\n onClickValue = (name: string, value: string | undefined, event: React.MouseEvent) => {\n const label = this.state.labels.find((l) => l.name === name);\n if (!label || !label.values) {\n return;\n }\n // Resetting search to prevent empty results\n this.setState({ searchTerm: '' });\n // Toggling value for selected label, leaving other values intact\n const values = label.values.map((v) => ({ ...v, selected: v.name === value ? !v.selected : v.selected }));\n this.updateLabelState(name, { values }, '', () => this.doFacetting(name));\n };\n\n onClickValidate = () => {\n const selector = buildSelector(this.state.labels);\n this.validateSelector(selector);\n };\n\n updateLabelState(name: string, updatedFields: Partial, status = '', cb?: () => void) {\n this.setState((state) => {\n const labels: SelectableLabel[] = state.labels.map((label) => {\n if (label.name === name) {\n return { ...label, ...updatedFields };\n }\n return label;\n });\n // New status overrides errors\n const error = status ? '' : state.error;\n return { labels, status, error, validationStatus: '' };\n }, cb);\n }\n\n componentDidMount() {\n const { languageProvider, autoSelect = MAX_AUTO_SELECT, lastUsedLabels, timeRange } = this.props;\n if (languageProvider) {\n const selectedLabels: string[] = lastUsedLabels;\n languageProvider.start(timeRange).then(() => {\n let rawLabels: string[] = languageProvider.getLabelKeys();\n if (rawLabels.length > MAX_LABEL_COUNT) {\n const error = `Too many labels found (showing only ${MAX_LABEL_COUNT} of ${rawLabels.length})`;\n rawLabels = rawLabels.slice(0, MAX_LABEL_COUNT);\n this.setState({ error });\n }\n // Auto-select all labels if label list is small enough\n const labels: SelectableLabel[] = rawLabels.map((label, i, arr) => ({\n name: label,\n selected: (arr.length <= autoSelect && selectedLabels.length === 0) || selectedLabels.includes(label),\n loading: false,\n }));\n // Pre-fetch values for selected labels\n this.setState({ labels }, () => {\n this.state.labels.forEach((label) => {\n if (label.selected) {\n this.fetchValues(label.name, EMPTY_SELECTOR);\n }\n });\n });\n });\n }\n }\n\n doFacettingForLabel(name: string) {\n const label = this.state.labels.find((l) => l.name === name);\n if (!label) {\n return;\n }\n const selectedLabels = this.state.labels.filter((label) => label.selected).map((label) => label.name);\n this.props.storeLastUsedLabels(selectedLabels);\n if (label.selected) {\n // Refetch values for newly selected label...\n if (!label.values) {\n this.fetchValues(name, buildSelector(this.state.labels));\n }\n } else {\n // Only need to facet when deselecting labels\n this.doFacetting();\n }\n }\n\n doFacetting = (lastFacetted?: string) => {\n const selector = buildSelector(this.state.labels);\n if (selector === EMPTY_SELECTOR) {\n // Clear up facetting\n const labels: SelectableLabel[] = this.state.labels.map((label) => {\n return { ...label, facets: 0, values: undefined, hidden: false };\n });\n this.setState({ labels }, () => {\n // Get fresh set of values\n this.state.labels.forEach((label) => label.selected && this.fetchValues(label.name, selector));\n });\n } else {\n // Do facetting\n this.fetchSeries(selector, lastFacetted);\n }\n };\n\n async fetchValues(name: string, selector: string) {\n const { languageProvider, timeRange } = this.props;\n this.updateLabelState(name, { loading: true }, `Fetching values for ${name}`);\n try {\n let rawValues = await languageProvider.fetchLabelValues(name, { timeRange });\n // If selector changed, clear loading state and discard result by returning early\n if (selector !== buildSelector(this.state.labels)) {\n this.updateLabelState(name, { loading: false }, '');\n return;\n }\n if (rawValues.length > MAX_VALUE_COUNT) {\n const error = `Too many values for ${name} (showing only ${MAX_VALUE_COUNT} of ${rawValues.length})`;\n rawValues = rawValues.slice(0, MAX_VALUE_COUNT);\n this.setState({ error });\n }\n const values: FacettableValue[] = rawValues.map((value) => ({ name: value }));\n this.updateLabelState(name, { values, loading: false });\n } catch (error) {\n console.error(error);\n }\n }\n\n async fetchSeries(selector: string, lastFacetted?: string) {\n const { languageProvider, timeRange } = this.props;\n if (lastFacetted) {\n this.updateLabelState(lastFacetted, { loading: true }, `Loading labels for ${selector}`);\n }\n try {\n const possibleLabels = await languageProvider.fetchSeriesLabels(selector, { timeRange });\n // If selector changed, clear loading state and discard result by returning early\n if (selector !== buildSelector(this.state.labels)) {\n if (lastFacetted) {\n this.updateLabelState(lastFacetted, { loading: false });\n }\n return;\n }\n if (Object.keys(possibleLabels).length === 0) {\n this.setState({ error: `Empty results, no matching label for ${selector}` });\n return;\n }\n const labels: SelectableLabel[] = facetLabels(this.state.labels, possibleLabels, lastFacetted);\n this.setState({ labels, error: '' });\n if (lastFacetted) {\n this.updateLabelState(lastFacetted, { loading: false });\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n async validateSelector(selector: string) {\n const { languageProvider, timeRange } = this.props;\n this.setState({ validationStatus: `Validating selector ${selector}`, error: '' });\n const streams = await languageProvider.fetchSeries(selector, { timeRange });\n this.setState({ validationStatus: `Selector is valid (${streams.length} streams found)` });\n }\n\n render() {\n const { theme } = this.props;\n const { labels, searchTerm, status, error, validationStatus } = this.state;\n if (labels.length === 0) {\n return ;\n }\n const styles = getStyles(theme);\n const selector = buildSelector(this.state.labels);\n const empty = selector === EMPTY_SELECTOR;\n\n let selectedLabels = labels.filter((label) => label.selected && label.values);\n if (searchTerm) {\n selectedLabels = selectedLabels.map((label) => {\n const searchResults = label.values!.filter((value) => {\n // Always return selected values\n if (value.selected) {\n value.highlightParts = undefined;\n return true;\n }\n const fuzzyMatchResult = fuzzyMatch(value.name.toLowerCase(), searchTerm.toLowerCase());\n if (fuzzyMatchResult.found) {\n value.highlightParts = fuzzyMatchResult.ranges;\n value.order = fuzzyMatchResult.distance;\n return true;\n } else {\n return false;\n }\n });\n return {\n ...label,\n values: sortBy(searchResults, (value) => (value.selected ? -Infinity : value.order)),\n };\n });\n } else {\n // Clear highlight parts when searchTerm is cleared\n selectedLabels = this.state.labels\n .filter((label) => label.selected && label.values)\n .map((label) => ({\n ...label,\n values: label?.values ? label.values.map((value) => ({ ...value, highlightParts: undefined })) : [],\n }));\n }\n\n return (\n <>\n
\n
\n \n
\n {labels.map((label) => (\n
\n
\n
\n \n
\n \n
\n
\n {selectedLabels.map((label) => (\n
\n
\n
\n label.values?.[i].name ?? i}\n width={200}\n className={styles.valueList}\n >\n {({ index, style }) => {\n const value = label.values?.[index];\n if (!value) {\n return null;\n }\n return (\n
\n \n
\n );\n }}\n \n
\n ))}\n
\n
\n
\n
\n \n
\n            {selector}\n          
\n {validationStatus &&
{validationStatus}
}\n
\n {error || status}\n
\n \n \n \n Show logs rate\n \n \n Validate selector\n \n \n \n
\n \n );\n }\n}\n\nexport const LokiLabelBrowser = withTheme2(UnthemedLokiLabelBrowser);\n","import { css } from '@emotion/css';\nimport React, { useState, useEffect } from 'react';\n\nimport { CoreApp, GrafanaTheme2, TimeRange } from '@grafana/data';\nimport { LocalStorageValueProvider } from '@grafana/o11y-ds-frontend';\nimport { reportInteraction } from '@grafana/runtime';\nimport { LoadingPlaceholder, Modal, useStyles2 } from '@grafana/ui';\n\nimport { LokiLabelBrowser } from '../../components/LokiLabelBrowser';\nimport { LokiDatasource } from '../../datasource';\nimport { LokiQuery } from '../../types';\n\nexport interface Props {\n isOpen: boolean;\n datasource: LokiDatasource;\n query: LokiQuery;\n app?: CoreApp;\n timeRange?: TimeRange;\n onClose: () => void;\n onChange: (query: LokiQuery) => void;\n onRunQuery: () => void;\n}\n\nexport const LabelBrowserModal = (props: Props) => {\n const { isOpen, onClose, datasource, app, timeRange } = props;\n const [labelsLoaded, setLabelsLoaded] = useState(false);\n const [hasLogLabels, setHasLogLabels] = useState(false);\n const LAST_USED_LABELS_KEY = 'grafana.datasources.loki.browser.labels';\n\n const styles = useStyles2(getStyles);\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n datasource.languageProvider.fetchLabels({ timeRange }).then((labels) => {\n setLabelsLoaded(true);\n setHasLogLabels(labels.length > 0);\n });\n }, [datasource, isOpen, timeRange]);\n\n const changeQuery = (value: string) => {\n const { query, onChange, onRunQuery } = props;\n const nextQuery = { ...query, expr: value };\n onChange(nextQuery);\n onRunQuery();\n };\n\n const onChange = (selector: string) => {\n changeQuery(selector);\n onClose();\n };\n\n const reportInteractionAndClose = () => {\n reportInteraction('grafana_loki_label_browser_closed', {\n app,\n closeType: 'modalClose',\n });\n onClose();\n };\n\n return (\n \n {!labelsLoaded && }\n {labelsLoaded && !hasLogLabels &&

No labels found.

}\n {labelsLoaded && hasLogLabels && (\n storageKey={LAST_USED_LABELS_KEY} defaultValue={[]}>\n {(lastUsedLabels, onLastUsedLabelsSave, onLastUsedLabelsDelete) => {\n return (\n \n );\n }}\n \n )}\n
\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n modal: css`\n width: 85vw;\n ${theme.breakpoints.down('md')} {\n width: 100%;\n }\n `,\n };\n};\n","import { uniqBy } from 'lodash';\nimport React__default, { useState, useRef } from 'react';\nimport { v4 } from 'uuid';\nimport { toOption } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { InlineField, Select } from '@grafana/ui';\nimport { InputGroup } from '../../QueryEditor/InputGroup.js';\nimport { AccessoryButton } from '../../QueryEditor/AccessoryButton.js';\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nconst CONFLICTING_LABEL_FILTER_ERROR_MESSAGE = \"You have conflicting label filters\";\nfunction LabelFilterItem({\n item,\n items,\n defaultOp,\n onChange,\n onDelete,\n onGetLabelNames,\n onGetLabelValues,\n invalidLabel,\n invalidValue,\n multiValueSeparator = \"|\"\n}) {\n var _a;\n const [state, setState] = useState({});\n const [labelNamesMenuOpen, setLabelNamesMenuOpen] = useState(false);\n const [labelValuesMenuOpen, setLabelValuesMenuOpen] = useState(false);\n const isMultiSelect = (operator = item.op) => {\n var _a2;\n return (_a2 = operators.find((op) => op.label === operator)) == null ? void 0 : _a2.isMultiValue;\n };\n const getSelectOptionsFromString = (item2) => {\n if (item2) {\n if (item2.indexOf(multiValueSeparator) > 0) {\n return item2.split(multiValueSeparator);\n }\n return [item2];\n }\n return [];\n };\n const getOptions = () => {\n const labelValues = state.labelValues ? [...state.labelValues] : [];\n const selectedOptions = getSelectOptionsFromString(item == null ? void 0 : item.value).map(toOption);\n return uniqBy([...selectedOptions, ...labelValues], \"value\");\n };\n const isConflicting = isConflictingLabelFilter(item, items);\n const { current: id } = useRef(v4());\n return /* @__PURE__ */ React__default.createElement(\"div\", { \"data-testid\": \"visual-query-builder-dimensions-filter-item\" }, /* @__PURE__ */ React__default.createElement(InlineField, { error: CONFLICTING_LABEL_FILTER_ERROR_MESSAGE, invalid: isConflicting ? true : void 0 }, /* @__PURE__ */ React__default.createElement(InputGroup, null, /* @__PURE__ */ React__default.createElement(\n Select,\n {\n placeholder: \"Select label\",\n \"data-testid\": selectors.components.QueryBuilder.labelSelect,\n inputId: `visual-query-builder-dimensions-filter-item-key-${id}`,\n width: \"auto\",\n value: item.label ? toOption(item.label) : null,\n allowCustomValue: true,\n onOpenMenu: async () => {\n setState({ isLoadingLabelNames: true });\n const labelNames = await onGetLabelNames(item);\n setLabelNamesMenuOpen(true);\n setState({ labelNames, isLoadingLabelNames: void 0 });\n },\n onCloseMenu: () => {\n setLabelNamesMenuOpen(false);\n },\n isOpen: labelNamesMenuOpen,\n isLoading: state.isLoadingLabelNames,\n options: state.labelNames,\n onChange: (change) => {\n var _a2;\n if (change.value) {\n onChange(__spreadProps(__spreadValues({}, item), {\n op: (_a2 = item.op) != null ? _a2 : defaultOp,\n label: change.value\n }));\n }\n },\n invalid: isConflicting || invalidLabel\n }\n ), /* @__PURE__ */ React__default.createElement(\n Select,\n {\n \"data-testid\": selectors.components.QueryBuilder.matchOperatorSelect,\n value: toOption((_a = item.op) != null ? _a : defaultOp),\n options: operators,\n width: \"auto\",\n onChange: (change) => {\n if (change.value) {\n onChange(__spreadProps(__spreadValues({}, item), {\n op: change.value,\n value: isMultiSelect(change.value) ? item.value : getSelectOptionsFromString(item == null ? void 0 : item.value)[0]\n }));\n }\n },\n invalid: isConflicting\n }\n ), /* @__PURE__ */ React__default.createElement(\n Select,\n {\n placeholder: \"Select value\",\n \"data-testid\": selectors.components.QueryBuilder.valueSelect,\n inputId: `visual-query-builder-dimensions-filter-item-value-${id}`,\n width: \"auto\",\n value: isMultiSelect() ? getSelectOptionsFromString(item == null ? void 0 : item.value).map(toOption) : getSelectOptionsFromString(item == null ? void 0 : item.value).map(toOption)[0],\n allowCustomValue: true,\n onOpenMenu: async () => {\n setState({ isLoadingLabelValues: true });\n const labelValues = await onGetLabelValues(item);\n setState(__spreadProps(__spreadValues({}, state), {\n labelValues,\n isLoadingLabelValues: void 0\n }));\n setLabelValuesMenuOpen(true);\n },\n onCloseMenu: () => {\n setLabelValuesMenuOpen(false);\n },\n isOpen: labelValuesMenuOpen,\n isMulti: isMultiSelect(),\n isLoading: state.isLoadingLabelValues,\n options: getOptions(),\n onChange: (change) => {\n var _a2, _b;\n if (change.value) {\n onChange(__spreadProps(__spreadValues({}, item), {\n value: change.value,\n op: (_a2 = item.op) != null ? _a2 : defaultOp\n }));\n } else {\n const changes = change.map((change2) => {\n if (change2.value) {\n return change2.value;\n } else {\n return void 0;\n }\n }).filter((val) => val !== void 0).join(multiValueSeparator);\n onChange(__spreadProps(__spreadValues({}, item), { value: changes, op: (_b = item.op) != null ? _b : defaultOp }));\n }\n },\n invalid: isConflicting || invalidValue\n }\n ), /* @__PURE__ */ React__default.createElement(AccessoryButton, { \"aria-label\": \"remove\", icon: \"times\", variant: \"secondary\", onClick: onDelete }))));\n}\nconst operators = [\n { label: \"=\", value: \"=\", description: \"Equals\", isMultiValue: false },\n { label: \"!=\", value: \"!=\", description: \"Does not equal\", isMultiValue: false },\n { label: \"=~\", value: \"=~\", description: \"Matches regex\", isMultiValue: true },\n { label: \"!~\", value: \"!~\", description: \"Does not match regex\", isMultiValue: true }\n];\nfunction isConflictingLabelFilter(newLabel, labels) {\n if (!newLabel.label || !newLabel.op || !newLabel.value) {\n return false;\n }\n if (labels.length < 2) {\n return false;\n }\n const operationIsNegative = newLabel.op.toString().startsWith(\"!\");\n const candidates = labels.filter(\n (label) => label.label === newLabel.label && label.value === newLabel.value && label.op !== newLabel.op\n );\n const conflict = candidates.some((candidate) => {\n var _a, _b;\n if (operationIsNegative && ((_a = candidate == null ? void 0 : candidate.op) == null ? void 0 : _a.toString().startsWith(\"!\")) === false) {\n return true;\n }\n if (operationIsNegative === false && ((_b = candidate == null ? void 0 : candidate.op) == null ? void 0 : _b.toString().startsWith(\"!\"))) {\n return true;\n }\n return false;\n });\n return conflict;\n}\n\nexport { LabelFilterItem, isConflictingLabelFilter };\n//# sourceMappingURL=LabelFilterItem.js.map\n","import { isEqual } from 'lodash';\nimport React__default, { useState, useEffect } from 'react';\nimport { EditorField } from '../../QueryEditor/EditorField.js';\nimport { EditorFieldGroup } from '../../QueryEditor/EditorFieldGroup.js';\nimport { EditorList } from '../../QueryEditor/EditorList.js';\nimport { LabelFilterItem } from './LabelFilterItem.js';\n\nconst MISSING_LABEL_FILTER_ERROR_MESSAGE = \"Select at least 1 label filter (label and value)\";\nfunction LabelFilters({\n labelsFilters,\n onChange,\n onGetLabelNames,\n onGetLabelValues,\n labelFilterRequired,\n multiValueSeparator\n}) {\n const defaultOp = \"=\";\n const [items, setItems] = useState([{ op: defaultOp }]);\n useEffect(() => {\n if (labelsFilters.length > 0) {\n setItems(labelsFilters);\n } else {\n setItems([{ op: defaultOp }]);\n }\n }, [labelsFilters]);\n const onLabelsChange = (newItems) => {\n setItems(newItems);\n const newLabels = newItems.filter((item) => item.label !== void 0 && item.value !== void 0);\n if (!isEqual(newLabels, labelsFilters)) {\n onChange(newLabels);\n }\n };\n const hasLabelFilter = items.some((item) => item.label && item.value);\n return /* @__PURE__ */ React__default.createElement(EditorFieldGroup, null, /* @__PURE__ */ React__default.createElement(\n EditorField,\n {\n label: \"Label filters\",\n error: MISSING_LABEL_FILTER_ERROR_MESSAGE,\n invalid: labelFilterRequired && !hasLabelFilter\n },\n /* @__PURE__ */ React__default.createElement(\n EditorList,\n {\n items,\n onChange: onLabelsChange,\n renderItem: (item, onChangeItem, onDelete) => /* @__PURE__ */ React__default.createElement(\n LabelFilterItem,\n {\n item,\n items,\n defaultOp,\n onChange: onChangeItem,\n onDelete,\n onGetLabelNames,\n onGetLabelValues,\n invalidLabel: labelFilterRequired && !item.label,\n invalidValue: labelFilterRequired && !item.value,\n multiValueSeparator\n }\n )\n }\n )\n ));\n}\n\nexport { LabelFilters, MISSING_LABEL_FILTER_ERROR_MESSAGE };\n//# sourceMappingURL=LabelFilters.js.map\n","import { css } from '@emotion/css';\nimport React__default from 'react';\nimport { renderMarkdown } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\nfunction OperationExplainedBox({ title, stepNumber, markdown, children }) {\n const styles = useStyles2(getStyles);\n return /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.box }, stepNumber !== void 0 && /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.stepNumber }, stepNumber), /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.boxInner }, title && /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.header }, /* @__PURE__ */ React__default.createElement(\"span\", null, title)), /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.body }, markdown && /* @__PURE__ */ React__default.createElement(\"div\", { dangerouslySetInnerHTML: { __html: renderMarkdown(markdown) } }), children)));\n}\nconst getStyles = (theme) => {\n return {\n box: css({\n background: theme.colors.background.secondary,\n padding: theme.spacing(1),\n borderRadius: theme.shape.radius.default,\n position: \"relative\"\n }),\n boxInner: css({\n marginLeft: theme.spacing(4)\n }),\n stepNumber: css({\n fontWeight: theme.typography.fontWeightMedium,\n background: theme.colors.secondary.main,\n width: \"20px\",\n height: \"20px\",\n borderRadius: theme.shape.radius.circle,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"absolute\",\n top: \"10px\",\n left: \"11px\",\n fontSize: theme.typography.bodySmall.fontSize\n }),\n header: css({\n paddingBottom: theme.spacing(0.5),\n display: \"flex\",\n alignItems: \"center\",\n fontFamily: theme.typography.fontFamilyMonospace\n }),\n body: css({\n color: theme.colors.text.secondary,\n \"p:last-child\": {\n margin: 0\n },\n a: {\n color: theme.colors.text.link,\n textDecoration: \"underline\"\n }\n })\n };\n};\n\nexport { OperationExplainedBox };\n//# sourceMappingURL=OperationExplainedBox.js.map\n","import { css } from '@emotion/css';\nimport React__default from 'react';\nimport { useStyles2 } from '@grafana/ui';\nimport { Stack } from '../../QueryEditor/Stack.js';\n\nfunction OperationsEditorRow({ children }) {\n const styles = useStyles2(getStyles);\n return /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.root }, /* @__PURE__ */ React__default.createElement(Stack, { gap: 1 }, children));\n}\nconst getStyles = (theme) => {\n return {\n root: css({\n padding: theme.spacing(1, 1, 0, 1),\n backgroundColor: theme.colors.background.secondary,\n borderRadius: theme.shape.radius.default\n })\n };\n};\n\nexport { OperationsEditorRow };\n//# sourceMappingURL=OperationsEditorRow.js.map\n","import _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport { usePopper } from 'react-popper';\n\nfunction useGetLatest(val) {\n var ref = React.useRef(val);\n ref.current = val;\n return React.useCallback(function () {\n return ref.current;\n }, []);\n}\n\nvar noop = function noop() {// do nothing\n};\n\nfunction useControlledState(_ref) {\n var initial = _ref.initial,\n value = _ref.value,\n _ref$onChange = _ref.onChange,\n onChange = _ref$onChange === void 0 ? noop : _ref$onChange;\n\n if (initial === undefined && value === undefined) {\n throw new TypeError('Either \"value\" or \"initial\" variable must be set. Now both are undefined');\n }\n\n var _React$useState = React.useState(initial),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var getLatest = useGetLatest(state);\n var set = React.useCallback(function (updater) {\n var state = getLatest();\n var updatedState = typeof updater === 'function' ? updater(state) : updater;\n if (typeof updatedState.persist === 'function') updatedState.persist();\n setState(updatedState);\n if (typeof onChange === 'function') onChange(updatedState);\n }, [getLatest, onChange]);\n var isControlled = value !== undefined;\n return [isControlled ? value : state, isControlled ? onChange : set];\n}\nfunction generateBoundingClientRect(x, y) {\n if (x === void 0) {\n x = 0;\n }\n\n if (y === void 0) {\n y = 0;\n }\n\n return function () {\n return {\n width: 0,\n height: 0,\n top: y,\n right: x,\n bottom: y,\n left: x,\n x: 0,\n y: 0,\n toJSON: function toJSON() {\n return null;\n }\n };\n };\n}\n\nvar _excluded = [\"styles\", \"attributes\"];\nvar virtualElement = {\n getBoundingClientRect: generateBoundingClientRect()\n};\nvar defaultConfig = {\n closeOnOutsideClick: true,\n closeOnTriggerHidden: false,\n defaultVisible: false,\n delayHide: 0,\n delayShow: 0,\n followCursor: false,\n interactive: false,\n mutationObserverOptions: {\n attributes: true,\n childList: true,\n subtree: true\n },\n offset: [0, 6],\n trigger: 'hover'\n};\nfunction usePopperTooltip(config, popperOptions) {\n var _popperProps$state, _popperProps$state$mo, _popperProps$state$mo2;\n\n if (config === void 0) {\n config = {};\n }\n\n if (popperOptions === void 0) {\n popperOptions = {};\n }\n\n // Merging options with default options.\n // Keys with undefined values are replaced with the default ones if any.\n // Keys with other values pass through.\n var finalConfig = Object.keys(defaultConfig).reduce(function (config, key) {\n var _extends2;\n\n return _extends({}, config, (_extends2 = {}, _extends2[key] = config[key] !== undefined ? config[key] : defaultConfig[key], _extends2));\n }, config);\n var defaultModifiers = React.useMemo(function () {\n return [{\n name: 'offset',\n options: {\n offset: finalConfig.offset\n }\n }];\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n Array.isArray(finalConfig.offset) ? finalConfig.offset : []);\n\n var finalPopperOptions = _extends({}, popperOptions, {\n placement: popperOptions.placement || finalConfig.placement,\n modifiers: popperOptions.modifiers || defaultModifiers\n });\n\n var _React$useState = React.useState(null),\n triggerRef = _React$useState[0],\n setTriggerRef = _React$useState[1];\n\n var _React$useState2 = React.useState(null),\n tooltipRef = _React$useState2[0],\n setTooltipRef = _React$useState2[1];\n\n var _useControlledState = useControlledState({\n initial: finalConfig.defaultVisible,\n value: finalConfig.visible,\n onChange: finalConfig.onVisibleChange\n }),\n visible = _useControlledState[0],\n setVisible = _useControlledState[1];\n\n var timer = React.useRef();\n React.useEffect(function () {\n return function () {\n return clearTimeout(timer.current);\n };\n }, []);\n\n var _usePopper = usePopper(finalConfig.followCursor ? virtualElement : triggerRef, tooltipRef, finalPopperOptions),\n styles = _usePopper.styles,\n attributes = _usePopper.attributes,\n popperProps = _objectWithoutPropertiesLoose(_usePopper, _excluded);\n\n var update = popperProps.update;\n var getLatest = useGetLatest({\n visible: visible,\n triggerRef: triggerRef,\n tooltipRef: tooltipRef,\n finalConfig: finalConfig\n });\n var isTriggeredBy = React.useCallback(function (trigger) {\n return Array.isArray(finalConfig.trigger) ? finalConfig.trigger.includes(trigger) : finalConfig.trigger === trigger;\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n Array.isArray(finalConfig.trigger) ? finalConfig.trigger : [finalConfig.trigger]);\n var hideTooltip = React.useCallback(function () {\n clearTimeout(timer.current);\n timer.current = window.setTimeout(function () {\n return setVisible(false);\n }, finalConfig.delayHide);\n }, [finalConfig.delayHide, setVisible]);\n var showTooltip = React.useCallback(function () {\n clearTimeout(timer.current);\n timer.current = window.setTimeout(function () {\n return setVisible(true);\n }, finalConfig.delayShow);\n }, [finalConfig.delayShow, setVisible]);\n var toggleTooltip = React.useCallback(function () {\n if (getLatest().visible) {\n hideTooltip();\n } else {\n showTooltip();\n }\n }, [getLatest, hideTooltip, showTooltip]); // Handle click outside\n\n React.useEffect(function () {\n if (!getLatest().finalConfig.closeOnOutsideClick) return;\n\n var handleClickOutside = function handleClickOutside(event) {\n var _event$composedPath;\n\n var _getLatest = getLatest(),\n tooltipRef = _getLatest.tooltipRef,\n triggerRef = _getLatest.triggerRef;\n\n var target = (event.composedPath == null ? void 0 : (_event$composedPath = event.composedPath()) == null ? void 0 : _event$composedPath[0]) || event.target;\n\n if (target instanceof Node) {\n if (tooltipRef != null && triggerRef != null && !tooltipRef.contains(target) && !triggerRef.contains(target)) {\n hideTooltip();\n }\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return function () {\n return document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [getLatest, hideTooltip]); // Trigger: click\n\n React.useEffect(function () {\n if (triggerRef == null || !isTriggeredBy('click')) return;\n triggerRef.addEventListener('click', toggleTooltip);\n return function () {\n return triggerRef.removeEventListener('click', toggleTooltip);\n };\n }, [triggerRef, isTriggeredBy, toggleTooltip]); // Trigger: double-click\n\n React.useEffect(function () {\n if (triggerRef == null || !isTriggeredBy('double-click')) return;\n triggerRef.addEventListener('dblclick', toggleTooltip);\n return function () {\n return triggerRef.removeEventListener('dblclick', toggleTooltip);\n };\n }, [triggerRef, isTriggeredBy, toggleTooltip]); // Trigger: right-click\n\n React.useEffect(function () {\n if (triggerRef == null || !isTriggeredBy('right-click')) return;\n\n var preventDefaultAndToggle = function preventDefaultAndToggle(event) {\n // Don't show the context menu\n event.preventDefault();\n toggleTooltip();\n };\n\n triggerRef.addEventListener('contextmenu', preventDefaultAndToggle);\n return function () {\n return triggerRef.removeEventListener('contextmenu', preventDefaultAndToggle);\n };\n }, [triggerRef, isTriggeredBy, toggleTooltip]); // Trigger: focus\n\n React.useEffect(function () {\n if (triggerRef == null || !isTriggeredBy('focus')) return;\n triggerRef.addEventListener('focus', showTooltip);\n triggerRef.addEventListener('blur', hideTooltip);\n return function () {\n triggerRef.removeEventListener('focus', showTooltip);\n triggerRef.removeEventListener('blur', hideTooltip);\n };\n }, [triggerRef, isTriggeredBy, showTooltip, hideTooltip]); // Trigger: hover on trigger\n\n React.useEffect(function () {\n if (triggerRef == null || !isTriggeredBy('hover')) return;\n triggerRef.addEventListener('mouseenter', showTooltip);\n triggerRef.addEventListener('mouseleave', hideTooltip);\n return function () {\n triggerRef.removeEventListener('mouseenter', showTooltip);\n triggerRef.removeEventListener('mouseleave', hideTooltip);\n };\n }, [triggerRef, isTriggeredBy, showTooltip, hideTooltip]); // Trigger: hover on tooltip, keep it open if hovered\n\n React.useEffect(function () {\n if (tooltipRef == null || !isTriggeredBy('hover') || !getLatest().finalConfig.interactive) return;\n tooltipRef.addEventListener('mouseenter', showTooltip);\n tooltipRef.addEventListener('mouseleave', hideTooltip);\n return function () {\n tooltipRef.removeEventListener('mouseenter', showTooltip);\n tooltipRef.removeEventListener('mouseleave', hideTooltip);\n };\n }, [tooltipRef, isTriggeredBy, showTooltip, hideTooltip, getLatest]); // Handle closing tooltip if trigger hidden\n\n var isReferenceHidden = popperProps == null ? void 0 : (_popperProps$state = popperProps.state) == null ? void 0 : (_popperProps$state$mo = _popperProps$state.modifiersData) == null ? void 0 : (_popperProps$state$mo2 = _popperProps$state$mo.hide) == null ? void 0 : _popperProps$state$mo2.isReferenceHidden;\n React.useEffect(function () {\n if (finalConfig.closeOnTriggerHidden && isReferenceHidden) hideTooltip();\n }, [finalConfig.closeOnTriggerHidden, hideTooltip, isReferenceHidden]); // Handle follow cursor\n\n React.useEffect(function () {\n if (!finalConfig.followCursor || triggerRef == null) return;\n\n function setMousePosition(_ref) {\n var clientX = _ref.clientX,\n clientY = _ref.clientY;\n virtualElement.getBoundingClientRect = generateBoundingClientRect(clientX, clientY);\n update == null ? void 0 : update();\n }\n\n triggerRef.addEventListener('mousemove', setMousePosition);\n return function () {\n return triggerRef.removeEventListener('mousemove', setMousePosition);\n };\n }, [finalConfig.followCursor, triggerRef, update]); // Handle tooltip DOM mutation changes (aka mutation observer)\n\n React.useEffect(function () {\n if (tooltipRef == null || update == null || finalConfig.mutationObserverOptions == null) return;\n var observer = new MutationObserver(update);\n observer.observe(tooltipRef, finalConfig.mutationObserverOptions);\n return function () {\n return observer.disconnect();\n };\n }, [finalConfig.mutationObserverOptions, tooltipRef, update]); // Tooltip props getter\n\n var getTooltipProps = function getTooltipProps(args) {\n if (args === void 0) {\n args = {};\n }\n\n return _extends({}, args, {\n style: _extends({}, args.style, styles.popper)\n }, attributes.popper, {\n 'data-popper-interactive': finalConfig.interactive\n });\n }; // Arrow props getter\n\n\n var getArrowProps = function getArrowProps(args) {\n if (args === void 0) {\n args = {};\n }\n\n return _extends({}, args, attributes.arrow, {\n style: _extends({}, args.style, styles.arrow),\n 'data-popper-arrow': true\n });\n };\n\n return _extends({\n getArrowProps: getArrowProps,\n getTooltipProps: getTooltipProps,\n setTooltipRef: setTooltipRef,\n setTriggerRef: setTriggerRef,\n tooltipRef: tooltipRef,\n triggerRef: triggerRef,\n visible: visible\n }, popperProps);\n}\n\nexport { usePopperTooltip };\n//# sourceMappingURL=react-popper-tooltip.js.map\n","import { css } from '@emotion/css';\nimport React__default, { useState } from 'react';\nimport { usePopperTooltip } from 'react-popper-tooltip';\nimport { renderMarkdown } from '@grafana/data';\nimport { useStyles2, Button, Portal } from '@grafana/ui';\nimport { FlexItem } from '../../QueryEditor/FlexItem.js';\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nconst OperationInfoButton = React__default.memo(({ definition, operation, innerQueryPlaceholder }) => {\n const styles = useStyles2(getStyles);\n const [show, setShow] = useState(false);\n const { getTooltipProps, setTooltipRef, setTriggerRef, visible } = usePopperTooltip({\n placement: \"top\",\n visible: show,\n offset: [0, 16],\n onVisibleChange: setShow,\n interactive: true,\n trigger: [\"click\"]\n });\n return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(\n Button,\n {\n title: \"Click to show description\",\n ref: setTriggerRef,\n icon: \"info-circle\",\n size: \"sm\",\n variant: \"secondary\",\n fill: \"text\"\n }\n ), visible && /* @__PURE__ */ React__default.createElement(Portal, null, /* @__PURE__ */ React__default.createElement(\"div\", __spreadProps(__spreadValues({ ref: setTooltipRef }, getTooltipProps()), { className: styles.docBox }), /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.docBoxHeader }, /* @__PURE__ */ React__default.createElement(\"span\", null, definition.renderer(operation, definition, innerQueryPlaceholder)), /* @__PURE__ */ React__default.createElement(FlexItem, { grow: 1 }), /* @__PURE__ */ React__default.createElement(\n Button,\n {\n icon: \"times\",\n onClick: () => setShow(false),\n fill: \"text\",\n variant: \"secondary\",\n title: \"Remove operation\"\n }\n )), /* @__PURE__ */ React__default.createElement(\n \"div\",\n {\n className: styles.docBoxBody,\n dangerouslySetInnerHTML: { __html: getOperationDocs(definition, operation) }\n }\n ))));\n});\nOperationInfoButton.displayName = \"OperationDocs\";\nconst getStyles = (theme) => {\n return {\n docBox: css({\n overflow: \"hidden\",\n background: theme.colors.background.primary,\n border: `1px solid ${theme.colors.border.strong}`,\n boxShadow: theme.shadows.z3,\n maxWidth: \"600px\",\n padding: theme.spacing(1),\n borderRadius: theme.shape.radius.default,\n zIndex: theme.zIndex.tooltip\n }),\n docBoxHeader: css({\n fontSize: theme.typography.h5.fontSize,\n fontFamily: theme.typography.fontFamilyMonospace,\n paddingBottom: theme.spacing(1),\n display: \"flex\",\n alignItems: \"center\"\n }),\n docBoxBody: css({\n // The markdown paragraph has a marginBottom this removes it\n marginBottom: theme.spacing(-1),\n color: theme.colors.text.secondary\n }),\n signature: css({\n fontSize: theme.typography.bodySmall.fontSize,\n fontFamily: theme.typography.fontFamilyMonospace\n }),\n dropdown: css({\n opacity: 0,\n color: theme.colors.text.secondary\n })\n };\n};\nfunction getOperationDocs(def, op) {\n var _a;\n return renderMarkdown(def.explainHandler ? def.explainHandler(op, def) : (_a = def.documentation) != null ? _a : \"no docs\");\n}\n\nexport { OperationInfoButton };\n//# sourceMappingURL=OperationInfoButton.js.map\n","import { css } from '@emotion/css';\nimport React__default, { useState } from 'react';\nimport { useStyles2, Button, Select } from '@grafana/ui';\nimport { OperationInfoButton } from './OperationInfoButton.js';\nimport { FlexItem } from '../../QueryEditor/FlexItem.js';\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nconst OperationHeader = React__default.memo(\n ({ operation, definition, index, onChange, onRemove, queryModeller, dragHandleProps }) => {\n var _a;\n const styles = useStyles2(getStyles);\n const [state, setState] = useState({});\n const onToggleSwitcher = () => {\n if (state.isOpen) {\n setState(__spreadProps(__spreadValues({}, state), { isOpen: false }));\n } else {\n const alternatives = queryModeller.getAlternativeOperations(definition.alternativesKey).map((alt) => ({ label: alt.name, value: alt }));\n setState({ isOpen: true, alternatives });\n }\n };\n return /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.header }, !state.isOpen && /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(\"div\", __spreadValues({}, dragHandleProps), (_a = definition.name) != null ? _a : definition.id), /* @__PURE__ */ React__default.createElement(FlexItem, { grow: 1 }), /* @__PURE__ */ React__default.createElement(\"div\", { className: `${styles.operationHeaderButtons} operation-header-show-on-hover` }, /* @__PURE__ */ React__default.createElement(\n Button,\n {\n icon: \"angle-down\",\n size: \"sm\",\n onClick: onToggleSwitcher,\n fill: \"text\",\n variant: \"secondary\",\n title: \"Click to view alternative operations\"\n }\n ), /* @__PURE__ */ React__default.createElement(OperationInfoButton, { definition, operation, innerQueryPlaceholder: queryModeller.innerQueryPlaceholder }), /* @__PURE__ */ React__default.createElement(\n Button,\n {\n icon: \"times\",\n size: \"sm\",\n onClick: () => onRemove(index),\n fill: \"text\",\n variant: \"secondary\",\n title: \"Remove operation\"\n }\n ))), state.isOpen && /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.selectWrapper }, /* @__PURE__ */ React__default.createElement(\n Select,\n {\n autoFocus: true,\n openMenuOnFocus: true,\n placeholder: \"Replace with\",\n options: state.alternatives,\n isOpen: true,\n onCloseMenu: onToggleSwitcher,\n onChange: (value) => {\n if (value.value) {\n const newDef = queryModeller.getOperationDefinition(value.value.id);\n const newParams = [...newDef.defaultParams];\n for (let i = 0; i < Math.min(operation.params.length, newParams.length); i++) {\n if (newDef.params[i].type === definition.params[i].type) {\n newParams[i] = operation.params[i];\n }\n }\n const changedOp = __spreadProps(__spreadValues({}, operation), { params: newParams, id: value.value.id });\n onChange(index, definition.changeTypeHandler ? definition.changeTypeHandler(changedOp, newDef) : changedOp);\n }\n }\n }\n )));\n }\n);\nOperationHeader.displayName = \"OperationHeader\";\nconst getStyles = (theme) => {\n return {\n header: css({\n borderBottom: `1px solid ${theme.colors.border.medium}`,\n padding: theme.spacing(0.5, 0.5, 0.5, 1),\n display: \"flex\",\n alignItems: \"center\"\n }),\n operationHeaderButtons: css({\n opacity: 1\n }),\n selectWrapper: css({\n paddingRight: theme.spacing(2)\n })\n };\n};\n\nexport { OperationHeader };\n//# sourceMappingURL=OperationHeader.js.map\n","import { css } from '@emotion/css';\nimport React__default from 'react';\nimport { toOption } from '@grafana/data';\nimport { AutoSizeInput, Checkbox, useStyles2, Button, Select } from '@grafana/ui';\nimport { Stack } from '../../QueryEditor/Stack.js';\n\nfunction getOperationParamEditor(paramDef) {\n if (paramDef.editor) {\n return paramDef.editor;\n }\n if (paramDef.options) {\n return SelectInputParamEditor;\n }\n switch (paramDef.type) {\n case \"boolean\":\n return BoolInputParamEditor;\n case \"number\":\n case \"string\":\n default:\n return SimpleInputParamEditor;\n }\n}\nfunction SimpleInputParamEditor(props) {\n var _a;\n return /* @__PURE__ */ React__default.createElement(\n AutoSizeInput,\n {\n id: getOperationParamId(props.operationId, props.index),\n defaultValue: (_a = props.value) == null ? void 0 : _a.toString(),\n minWidth: props.paramDef.minWidth,\n placeholder: props.paramDef.placeholder,\n title: props.paramDef.description,\n maxWidth: (props.paramDef.minWidth || 20) * 3,\n onCommitChange: (evt) => {\n props.onChange(props.index, evt.currentTarget.value);\n if (props.paramDef.runQueryOnEnter && evt.type === \"keydown\") {\n props.onRunQuery();\n }\n }\n }\n );\n}\nfunction BoolInputParamEditor(props) {\n return /* @__PURE__ */ React__default.createElement(\n Checkbox,\n {\n id: getOperationParamId(props.operationId, props.index),\n value: Boolean(props.value),\n onChange: (evt) => props.onChange(props.index, evt.currentTarget.checked)\n }\n );\n}\nfunction SelectInputParamEditor({\n paramDef,\n value,\n index,\n operationId,\n onChange\n}) {\n var _a, _b;\n const styles = useStyles2(getStyles);\n let selectOptions = paramDef.options;\n if (!((_a = selectOptions[0]) == null ? void 0 : _a.label)) {\n selectOptions = paramDef.options.map((option) => ({\n label: option.toString(),\n value: option\n }));\n }\n let valueOption = (_b = selectOptions.find((x) => x.value === value)) != null ? _b : toOption(value);\n if (!value && paramDef.optional) {\n return /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.optionalParam }, /* @__PURE__ */ React__default.createElement(\n Button,\n {\n size: \"sm\",\n variant: \"secondary\",\n title: `Add ${paramDef.name}`,\n icon: \"plus\",\n onClick: () => onChange(index, selectOptions[0].value)\n },\n paramDef.name\n ));\n }\n return /* @__PURE__ */ React__default.createElement(Stack, { gap: 0.5, direction: \"row\", alignItems: \"center\" }, /* @__PURE__ */ React__default.createElement(\n Select,\n {\n id: getOperationParamId(operationId, index),\n value: valueOption,\n options: selectOptions,\n placeholder: paramDef.placeholder,\n allowCustomValue: true,\n onChange: (value2) => onChange(index, value2.value),\n width: paramDef.minWidth || \"auto\"\n }\n ), paramDef.optional && /* @__PURE__ */ React__default.createElement(\n Button,\n {\n \"data-testid\": `operations.${index}.remove-param`,\n size: \"sm\",\n fill: \"text\",\n icon: \"times\",\n variant: \"secondary\",\n title: `Remove ${paramDef.name}`,\n onClick: () => onChange(index, \"\")\n }\n ));\n}\nconst getStyles = (theme) => {\n return {\n optionalParam: css({\n marginTop: theme.spacing(1)\n })\n };\n};\nfunction getOperationParamId(operationId, paramIndex) {\n return `operations.${operationId}.param.${paramIndex}`;\n}\n\nexport { getOperationParamEditor, getOperationParamId };\n//# sourceMappingURL=OperationParamEditor.js.map\n","import React__default, { useRef, useState, useEffect } from 'react';\nimport { useTheme2, Tooltip, Icon, Button } from '@grafana/ui';\nimport { cx, css } from '@emotion/css';\nimport { OperationHeader } from './OperationHeader.js';\nimport { getOperationParamEditor, getOperationParamId } from './OperationParamEditor.js';\nimport { Stack } from '../../QueryEditor/Stack.js';\nimport { v4 } from 'uuid';\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nfunction OperationEditorBody({\n provided,\n flash,\n isConflicting,\n highlight,\n index,\n queryModeller,\n onChange,\n onRemove,\n operation,\n definition,\n query,\n timeRange,\n onRunQuery,\n datasource\n}) {\n const theme = useTheme2();\n const styles = getStyles(theme, isConflicting);\n const shouldFlash = useFlash(flash);\n const { current: id } = useRef(v4());\n const onParamValueChanged = (paramIdx, value) => {\n const update = __spreadProps(__spreadValues({}, operation), { params: [...operation.params] });\n update.params[paramIdx] = value;\n callParamChangedThenOnChange(definition, update, index, paramIdx, onChange);\n };\n const onAddRestParam = () => {\n const update = __spreadProps(__spreadValues({}, operation), { params: [...operation.params, \"\"] });\n callParamChangedThenOnChange(definition, update, index, operation.params.length, onChange);\n };\n const onRemoveRestParam = (paramIdx) => {\n const update = __spreadProps(__spreadValues({}, operation), {\n params: [...operation.params.slice(0, paramIdx), ...operation.params.slice(paramIdx + 1)]\n });\n callParamChangedThenOnChange(definition, update, index, paramIdx, onChange);\n };\n let restParam;\n if (definition.params.length > 0) {\n const lastParamDef = definition.params[definition.params.length - 1];\n if (lastParamDef.restParam) {\n restParam = renderAddRestParamButton(lastParamDef, onAddRestParam, index, operation.params.length, styles);\n }\n }\n return /* @__PURE__ */ React__default.createElement(\n \"div\",\n __spreadProps(__spreadValues({\n className: cx(styles.card, (shouldFlash || highlight) && styles.cardHighlight, isConflicting && styles.cardError),\n ref: provided.innerRef\n }, provided.draggableProps), {\n \"data-testid\": `operations.${index}.wrapper`\n }),\n /* @__PURE__ */ React__default.createElement(\n OperationHeader,\n {\n operation,\n dragHandleProps: provided.dragHandleProps,\n definition,\n index,\n onChange,\n onRemove,\n queryModeller\n }\n ),\n /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.body }, operation.params.map((param, paramIndex) => {\n const paramDef = definition.params[Math.min(definition.params.length - 1, paramIndex)];\n const Editor = getOperationParamEditor(paramDef);\n return /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.paramRow, key: `${paramIndex}-1` }, !paramDef.hideName && /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.paramName }, /* @__PURE__ */ React__default.createElement(\"label\", { htmlFor: getOperationParamId(id, paramIndex) }, paramDef.name), paramDef.description && /* @__PURE__ */ React__default.createElement(Tooltip, { placement: \"top\", content: paramDef.description, theme: \"info\" }, /* @__PURE__ */ React__default.createElement(Icon, { name: \"info-circle\", size: \"sm\", className: styles.infoIcon }))), /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.paramValue }, /* @__PURE__ */ React__default.createElement(Stack, { gap: 0.5, direction: \"row\", alignItems: \"center\", wrap: false }, /* @__PURE__ */ React__default.createElement(\n Editor,\n {\n index: paramIndex,\n paramDef,\n value: operation.params[paramIndex],\n operation,\n operationId: id,\n onChange: onParamValueChanged,\n onRunQuery,\n query,\n datasource,\n timeRange,\n queryModeller\n }\n ), paramDef.restParam && (operation.params.length > definition.params.length || paramDef.optional) && /* @__PURE__ */ React__default.createElement(\n Button,\n {\n \"data-testid\": `operations.${index}.remove-rest-param`,\n size: \"sm\",\n fill: \"text\",\n icon: \"times\",\n variant: \"secondary\",\n title: `Remove ${paramDef.name}`,\n onClick: () => onRemoveRestParam(paramIndex)\n }\n ))));\n })),\n restParam,\n index < query.operations.length - 1 && /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.arrow }, /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.arrowLine }), /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.arrowArrow }))\n );\n}\nconst getStyles = (theme, isConflicting) => {\n return {\n cardWrapper: css({\n alignItems: \"stretch\"\n }),\n error: css({\n marginBottom: theme.spacing(1)\n }),\n card: css({\n background: theme.colors.background.primary,\n border: `1px solid ${theme.colors.border.medium}`,\n cursor: \"grab\",\n borderRadius: theme.shape.radius.default,\n position: \"relative\",\n transition: \"all 0.5s ease-in 0s\",\n height: isConflicting ? \"auto\" : \"100%\"\n }),\n cardError: css({\n boxShadow: `0px 0px 4px 0px ${theme.colors.warning.main}`,\n border: `1px solid ${theme.colors.warning.main}`\n }),\n cardHighlight: css({\n boxShadow: `0px 0px 4px 0px ${theme.colors.primary.border}`,\n border: `1px solid ${theme.colors.primary.border}`\n }),\n infoIcon: css({\n marginLeft: theme.spacing(0.5),\n color: theme.colors.text.secondary,\n \":hover\": {\n color: theme.colors.text.primary\n }\n }),\n body: css({\n margin: theme.spacing(1, 1, 0.5, 1),\n display: \"table\"\n }),\n paramRow: css({\n label: \"paramRow\",\n display: \"table-row\",\n verticalAlign: \"middle\"\n }),\n paramName: css({\n display: \"table-cell\",\n padding: theme.spacing(0, 1, 0, 0),\n fontSize: theme.typography.bodySmall.fontSize,\n fontWeight: theme.typography.fontWeightMedium,\n verticalAlign: \"middle\",\n height: \"32px\"\n }),\n paramValue: css({\n label: \"paramValue\",\n display: \"table-cell\",\n verticalAlign: \"middle\"\n }),\n restParam: css({\n padding: theme.spacing(0, 1, 1, 1)\n }),\n arrow: css({\n position: \"absolute\",\n top: \"0\",\n right: \"-18px\",\n display: \"flex\"\n }),\n arrowLine: css({\n height: \"2px\",\n width: \"8px\",\n backgroundColor: theme.colors.border.strong,\n position: \"relative\",\n top: \"14px\"\n }),\n arrowArrow: css({\n width: 0,\n height: 0,\n borderTop: `5px solid transparent`,\n borderBottom: `5px solid transparent`,\n borderLeft: `7px solid ${theme.colors.border.strong}`,\n position: \"relative\",\n top: \"10px\"\n })\n };\n};\nfunction useFlash(flash) {\n const [keepFlash, setKeepFlash] = useState(true);\n useEffect(() => {\n let t;\n if (flash) {\n t = setTimeout(() => {\n setKeepFlash(false);\n }, 1e3);\n } else {\n setKeepFlash(true);\n }\n return () => clearTimeout(t);\n }, [flash]);\n return keepFlash && flash;\n}\nfunction callParamChangedThenOnChange(def, operation, operationIndex, paramIndex, onChange) {\n if (def.paramChangedHandler) {\n onChange(operationIndex, def.paramChangedHandler(paramIndex, operation, def));\n } else {\n onChange(operationIndex, operation);\n }\n}\nfunction renderAddRestParamButton(paramDef, onAddRestParam, operationIndex, paramIndex, styles) {\n return /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.restParam, key: `${paramIndex}-2` }, /* @__PURE__ */ React__default.createElement(\n Button,\n {\n size: \"sm\",\n icon: \"plus\",\n title: `Add ${paramDef.name}`.trimEnd(),\n variant: \"secondary\",\n onClick: onAddRestParam,\n \"data-testid\": `operations.${operationIndex}.add-rest-param`\n },\n paramDef.name\n ));\n}\n\nexport { OperationEditorBody };\n//# sourceMappingURL=OperationEditorBody.js.map\n","import { cx, css } from '@emotion/css';\nimport React__default from 'react';\nimport { Draggable } from 'react-beautiful-dnd';\nimport { useTheme2, InlineField } from '@grafana/ui';\nimport { OperationEditorBody } from './OperationEditorBody.js';\n\nfunction OperationEditor({\n operation,\n index,\n onRemove,\n onChange,\n onRunQuery,\n queryModeller,\n query,\n datasource,\n flash,\n highlight,\n timeRange,\n isConflictingOperation\n}) {\n const def = queryModeller.getOperationDefinition(operation.id);\n const theme = useTheme2();\n const isConflicting = isConflictingOperation ? isConflictingOperation(operation, query.operations) : false;\n const styles = getStyles(theme);\n if (!def) {\n return /* @__PURE__ */ React__default.createElement(\"span\", null, \"Operation \", operation.id, \" not found\");\n }\n const isInvalid = (isDragging) => {\n if (isDragging) {\n return void 0;\n }\n return isConflicting ? true : void 0;\n };\n return /* @__PURE__ */ React__default.createElement(Draggable, { draggableId: `operation-${index}`, index }, (provided, snapshot) => /* @__PURE__ */ React__default.createElement(\n InlineField,\n {\n error: \"You have conflicting label filters\",\n invalid: isInvalid(snapshot.isDragging),\n className: cx(styles.error, styles.cardWrapper)\n },\n /* @__PURE__ */ React__default.createElement(\n OperationEditorBody,\n {\n provided,\n flash,\n highlight,\n isConflicting,\n index,\n operation,\n definition: def,\n onChange,\n onRemove,\n queryModeller,\n query,\n timeRange,\n onRunQuery,\n datasource\n }\n )\n ));\n}\nconst getStyles = (theme, isConflicting) => {\n return {\n cardWrapper: css({\n alignItems: \"stretch\"\n }),\n error: css({\n marginBottom: theme.spacing(1)\n })\n };\n};\n\nexport { OperationEditor };\n//# sourceMappingURL=OperationEditor.js.map\n","import { css } from '@emotion/css';\nimport React__default, { useState } from 'react';\nimport { DragDropContext, Droppable } from 'react-beautiful-dnd';\nimport { useMountedState, usePrevious } from 'react-use';\nimport { useStyles2, Cascader, Button } from '@grafana/ui';\nimport { OperationEditor } from './OperationEditor.js';\nimport { Stack } from '../../QueryEditor/Stack.js';\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nfunction OperationList({\n query,\n datasource,\n queryModeller,\n onChange,\n onRunQuery,\n highlightedOp,\n timeRange,\n isConflictingOperation\n}) {\n const styles = useStyles2(getStyles);\n const { operations } = query;\n const opsToHighlight = useOperationsHighlight(operations);\n const [cascaderOpen, setCascaderOpen] = useState(false);\n const onOperationChange = (index, update) => {\n const updatedList = [...operations];\n updatedList.splice(index, 1, update);\n onChange(__spreadProps(__spreadValues({}, query), { operations: updatedList }));\n };\n const onRemove = (index) => {\n const updatedList = [...operations.slice(0, index), ...operations.slice(index + 1)];\n onChange(__spreadProps(__spreadValues({}, query), { operations: updatedList }));\n };\n const addOptions = queryModeller.getCategories().map((category) => {\n return {\n value: category,\n label: category,\n items: queryModeller.getOperationsForCategory(category).map((operation) => ({\n value: operation.id,\n label: operation.name,\n isLeaf: true\n }))\n };\n });\n const onAddOperation = (value) => {\n const operationDef = queryModeller.getOperationDefinition(value);\n if (!operationDef) {\n return;\n }\n onChange(operationDef.addOperationHandler(operationDef, query, queryModeller));\n setCascaderOpen(false);\n };\n const onDragEnd = (result) => {\n if (!result.destination) {\n return;\n }\n const updatedList = [...operations];\n const element = updatedList[result.source.index];\n updatedList.splice(result.source.index, 1);\n updatedList.splice(result.destination.index, 0, element);\n onChange(__spreadProps(__spreadValues({}, query), { operations: updatedList }));\n };\n const onCascaderBlur = () => {\n setCascaderOpen(false);\n };\n return /* @__PURE__ */ React__default.createElement(Stack, { gap: 1, direction: \"column\" }, /* @__PURE__ */ React__default.createElement(Stack, { gap: 1 }, operations.length > 0 && /* @__PURE__ */ React__default.createElement(DragDropContext, { onDragEnd }, /* @__PURE__ */ React__default.createElement(Droppable, { droppableId: \"sortable-field-mappings\", direction: \"horizontal\" }, (provided) => /* @__PURE__ */ React__default.createElement(\"div\", __spreadValues({ className: styles.operationList, ref: provided.innerRef }, provided.droppableProps), operations.map((op, index) => {\n return /* @__PURE__ */ React__default.createElement(\n OperationEditor,\n {\n key: op.id + JSON.stringify(op.params) + index,\n queryModeller,\n index,\n operation: op,\n query,\n datasource,\n onChange: onOperationChange,\n onRemove,\n onRunQuery,\n flash: opsToHighlight[index],\n highlight: highlightedOp === op,\n timeRange,\n isConflictingOperation\n }\n );\n }), provided.placeholder))), /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.addButton }, cascaderOpen ? /* @__PURE__ */ React__default.createElement(\n Cascader,\n {\n options: addOptions,\n onSelect: onAddOperation,\n onBlur: onCascaderBlur,\n autoFocus: true,\n alwaysOpen: true,\n hideActiveLevelLabel: true,\n placeholder: \"Search\"\n }\n ) : /* @__PURE__ */ React__default.createElement(Button, { icon: \"plus\", variant: \"secondary\", onClick: () => setCascaderOpen(true), title: \"Add operation\" }, \"Operations\"))));\n}\nfunction useOperationsHighlight(operations) {\n const isMounted = useMountedState();\n const prevOperations = usePrevious(operations);\n if (!isMounted()) {\n return operations.map(() => false);\n }\n if (!prevOperations) {\n return operations.map(() => true);\n }\n let newOps = [];\n if (prevOperations.length - 1 === operations.length && operations.every((op) => prevOperations.includes(op))) {\n return operations.map(() => false);\n }\n if (prevOperations.length + 1 === operations.length && prevOperations.every((op) => operations.includes(op))) {\n const newOp = operations.find((op) => !prevOperations.includes(op));\n newOps = operations.map((op) => {\n return op === newOp;\n });\n } else {\n newOps = operations.map((op, index) => {\n var _a;\n return !isSameOp(op.id, (_a = prevOperations[index]) == null ? void 0 : _a.id);\n });\n }\n return newOps;\n}\nfunction isSameOp(op1, op2) {\n return op1 === op2 || `__${op1}_by` === op2 || op1 === `__${op2}_by`;\n}\nconst getStyles = (theme) => {\n return {\n heading: css({\n label: \"heading\",\n fontSize: 12,\n fontWeight: theme.typography.fontWeightMedium,\n marginBottom: 0\n }),\n operationList: css({\n label: \"operationList\",\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: theme.spacing(2)\n }),\n addButton: css({\n label: \"addButton\",\n width: 126,\n paddingBottom: theme.spacing(1)\n })\n };\n};\n\nexport { OperationList };\n//# sourceMappingURL=OperationList.js.map\n","import { css } from '@emotion/css';\nimport React__default, { useState, useEffect } from 'react';\nimport { reportInteraction } from '@grafana/runtime';\nimport { useStyles2, Tooltip, Button } from '@grafana/ui';\n\nconst QueryBuilderHints = ({\n datasource,\n query: visualQuery,\n onChange,\n data,\n queryModeller,\n buildVisualQueryFromString,\n buildDataQueryFromQueryString,\n buildQueryStringFromDataQuery\n}) => {\n const [hints, setHints] = useState([]);\n const styles = useStyles2(getStyles);\n useEffect(() => {\n var _a;\n const dataQuery = buildDataQueryFromQueryString(queryModeller.renderQuery(visualQuery));\n const hints2 = (_a = datasource.getQueryHints) == null ? void 0 : _a.call(datasource, dataQuery, (data == null ? void 0 : data.series) || []).filter((hint) => {\n var _a2;\n return (_a2 = hint.fix) == null ? void 0 : _a2.action;\n });\n setHints(hints2 != null ? hints2 : []);\n }, [datasource, visualQuery, data, queryModeller, buildDataQueryFromQueryString]);\n return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, hints.length > 0 && /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.container }, hints.map((hint) => {\n var _a, _b, _c, _d;\n return /* @__PURE__ */ React__default.createElement(Tooltip, { content: `${hint.label} ${(_a = hint.fix) == null ? void 0 : _a.label}`, key: hint.type }, /* @__PURE__ */ React__default.createElement(\n Button,\n {\n onClick: () => {\n var _a2, _b2, _c2;\n reportInteraction(\"grafana_query_builder_hints_clicked\", {\n hint: hint.type,\n datasourceType: datasource.type\n });\n if ((_a2 = hint == null ? void 0 : hint.fix) == null ? void 0 : _a2.action) {\n const dataQuery = buildDataQueryFromQueryString(queryModeller.renderQuery(visualQuery));\n const newQuery = (_b2 = datasource.modifyQuery) == null ? void 0 : _b2.call(datasource, dataQuery, hint.fix.action);\n if (newQuery) {\n const newVisualQuery = buildVisualQueryFromString((_c2 = buildQueryStringFromDataQuery(newQuery)) != null ? _c2 : \"\");\n return onChange(newVisualQuery.query);\n }\n }\n },\n fill: \"outline\",\n size: \"sm\",\n className: styles.hint\n },\n \"hint: \",\n ((_b = hint.fix) == null ? void 0 : _b.title) || ((_d = (_c = hint.fix) == null ? void 0 : _c.action) == null ? void 0 : _d.type.toLowerCase().replace(\"_\", \" \"))\n ));\n })));\n};\nQueryBuilderHints.displayName = \"QueryBuilderHints\";\nconst getStyles = (theme) => {\n return {\n container: css`\n display: flex;\n align-items: start;\n `,\n hint: css`\n margin-right: ${theme.spacing(1)};\n `\n };\n};\n\nexport { QueryBuilderHints };\n//# sourceMappingURL=QueryBuilderHints.js.map\n","import React__default from 'react';\nimport { OperationExplainedBox } from './OperationExplainedBox.js';\nimport { RawQuery } from './RawQuery.js';\n\nfunction OperationListExplained({\n query,\n queryModeller,\n stepNumber,\n language,\n onMouseEnter,\n onMouseLeave\n}) {\n return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, query.operations.map((op, index) => {\n var _a;\n const def = queryModeller.getOperationDefinition(op.id);\n if (!def) {\n return `Operation ${op.id} not found`;\n }\n const title = def.renderer(op, def, queryModeller.innerQueryPlaceholder);\n const body = def.explainHandler ? def.explainHandler(op, def) : (_a = def.documentation) != null ? _a : \"no docs\";\n return /* @__PURE__ */ React__default.createElement(\n \"div\",\n {\n key: index,\n onMouseEnter: () => onMouseEnter == null ? void 0 : onMouseEnter(op, index),\n onMouseLeave: () => onMouseLeave == null ? void 0 : onMouseLeave(op, index)\n },\n /* @__PURE__ */ React__default.createElement(\n OperationExplainedBox,\n {\n stepNumber: index + stepNumber,\n title: /* @__PURE__ */ React__default.createElement(RawQuery, { query: title, language }),\n markdown: body\n }\n )\n );\n }));\n}\n\nexport { OperationListExplained };\n//# sourceMappingURL=OperationListExplained.js.map\n","import React from 'react';\n\nimport { OperationExplainedBox, OperationListExplained, RawQuery } from '@grafana/experimental';\nimport { Stack } from '@grafana/ui';\n\nimport { lokiGrammar } from '../../syntax';\nimport { lokiQueryModeller } from '../LokiQueryModeller';\nimport { buildVisualQueryFromString } from '../parsing';\nimport { LokiVisualQuery } from '../types';\n\nexport const EXPLAIN_LABEL_FILTER_CONTENT = 'Fetch all log lines matching label filters.';\n\nexport interface Props {\n query: string;\n}\n\nexport const LokiQueryBuilderExplained = React.memo(({ query }) => {\n const visQuery = buildVisualQueryFromString(query || '').query;\n const lang = { grammar: lokiGrammar, name: 'lokiql' };\n\n return (\n \n }\n >\n {EXPLAIN_LABEL_FILTER_CONTENT}\n \n \n stepNumber={2}\n queryModeller={lokiQueryModeller}\n query={visQuery}\n language={lang}\n />\n \n );\n});\n\nLokiQueryBuilderExplained.displayName = 'LokiQueryBuilderExplained';\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { GrafanaTheme2, toOption } from '@grafana/data';\nimport { EditorRows, FlexItem } from '@grafana/experimental';\nimport { AutoSizeInput, IconButton, Select, useStyles2 } from '@grafana/ui';\n\nimport { LokiDatasource } from '../../datasource';\nimport { binaryScalarDefs } from '../binaryScalarOperations';\nimport { LokiVisualQueryBinary } from '../types';\n\nimport { LokiQueryBuilder } from './LokiQueryBuilder';\n\nexport interface Props {\n nestedQuery: LokiVisualQueryBinary;\n datasource: LokiDatasource;\n index: number;\n showExplain: boolean;\n onChange: (index: number, update: LokiVisualQueryBinary) => void;\n onRemove: (index: number) => void;\n onRunQuery: () => void;\n}\n\nexport const NestedQuery = React.memo(\n ({ nestedQuery, index, datasource, onChange, onRemove, onRunQuery, showExplain }) => {\n const styles = useStyles2(getStyles);\n\n return (\n
\n
\n
Operator
\n {\n onChange(index, {\n ...nestedQuery,\n operator: value.value!,\n });\n }}\n />\n
Vector matches
\n
\n \n width=\"auto\"\n value={nestedQuery.vectorMatchesType || 'on'}\n allowCustomValue\n options={[\n { value: 'on', label: 'on' },\n { value: 'ignoring', label: 'ignoring' },\n ]}\n onChange={(val) => {\n onChange(index, {\n ...nestedQuery,\n vectorMatchesType: val.value,\n });\n }}\n />\n {\n onChange(index, {\n ...nestedQuery,\n vectorMatches: evt.currentTarget.value,\n vectorMatchesType: nestedQuery.vectorMatchesType || 'on',\n });\n }}\n />\n
\n \n onRemove(index)} tooltip=\"Remove nested query\" />\n
\n
\n \n {\n onChange(index, { ...nestedQuery, query: update });\n }}\n />\n \n
\n
\n );\n }\n);\n\nconst operators = binaryScalarDefs.map((def) => ({ label: def.sign, value: def.sign }));\n\nNestedQuery.displayName = 'NestedQuery';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n card: css({\n label: 'card',\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(0.5),\n }),\n header: css({\n label: 'header',\n padding: theme.spacing(0.5, 0.5, 0.5, 1),\n gap: theme.spacing(1),\n display: 'flex',\n alignItems: 'center',\n }),\n name: css({\n label: 'name',\n whiteSpace: 'nowrap',\n }),\n body: css({\n label: 'body',\n paddingLeft: theme.spacing(2),\n }),\n vectorMatchInput: css({\n label: 'vectorMatchInput',\n marginLeft: -1,\n }),\n vectorMatchWrapper: css({\n label: 'vectorMatchWrapper',\n display: 'flex',\n }),\n };\n};\n","import React from 'react';\n\nimport { Stack } from '@grafana/ui';\n\nimport { LokiDatasource } from '../../datasource';\nimport { LokiVisualQuery, LokiVisualQueryBinary } from '../types';\n\nimport { NestedQuery } from './NestedQuery';\n\nexport interface Props {\n query: LokiVisualQuery;\n datasource: LokiDatasource;\n showExplain: boolean;\n onChange: (query: LokiVisualQuery) => void;\n onRunQuery: () => void;\n}\n\nexport function NestedQueryList({ query, datasource, onChange, onRunQuery, showExplain }: Props) {\n const nestedQueries = query.binaryQueries ?? [];\n\n const onNestedQueryUpdate = (index: number, update: LokiVisualQueryBinary) => {\n const updatedList = [...nestedQueries];\n updatedList.splice(index, 1, update);\n onChange({ ...query, binaryQueries: updatedList });\n };\n\n const onRemove = (index: number) => {\n const updatedList = [...nestedQueries.slice(0, index), ...nestedQueries.slice(index + 1)];\n onChange({ ...query, binaryQueries: updatedList });\n };\n\n return (\n \n {nestedQueries.map((nestedQuery, index) => (\n \n ))}\n \n );\n}\n","import { isEqual } from 'lodash';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { usePrevious } from 'react-use';\n\nimport { DataSourceApi, getDefaultTimeRange, LoadingState, PanelData, SelectableValue, TimeRange } from '@grafana/data';\nimport {\n EditorRow,\n LabelFilters,\n OperationExplainedBox,\n OperationList,\n OperationListExplained,\n OperationsEditorRow,\n QueryBuilderHints,\n RawQuery,\n QueryBuilderLabelFilter,\n QueryBuilderOperation,\n} from '@grafana/experimental';\nimport { config } from '@grafana/runtime';\n\nimport { testIds } from '../../components/LokiQueryEditor';\nimport { LokiDatasource } from '../../datasource';\nimport { escapeLabelValueInSelector } from '../../languageUtils';\nimport logqlGrammar from '../../syntax';\nimport { LokiQuery } from '../../types';\nimport { lokiQueryModeller } from '../LokiQueryModeller';\nimport { isConflictingFilter } from '../operationUtils';\nimport { buildVisualQueryFromString } from '../parsing';\nimport { LokiOperationId, LokiVisualQuery } from '../types';\n\nimport { EXPLAIN_LABEL_FILTER_CONTENT } from './LokiQueryBuilderExplained';\nimport { NestedQueryList } from './NestedQueryList';\n\nexport const TIME_SPAN_TO_TRIGGER_SAMPLES = 5 * 60 * 1000;\nexport interface Props {\n query: LokiVisualQuery;\n datasource: LokiDatasource;\n showExplain: boolean;\n timeRange?: TimeRange;\n onChange: (update: LokiVisualQuery) => void;\n onRunQuery: () => void;\n}\nexport const LokiQueryBuilder = React.memo(\n ({ datasource, query, onChange, onRunQuery, showExplain, timeRange }) => {\n const [sampleData, setSampleData] = useState();\n const [highlightedOp, setHighlightedOp] = useState(undefined);\n const prevQuery = usePrevious(query);\n const prevTimeRange = usePrevious(timeRange);\n\n const onChangeLabels = (labels: QueryBuilderLabelFilter[]) => {\n onChange({ ...query, labels });\n };\n\n const withTemplateVariableOptions = async (optionsPromise: Promise): Promise => {\n const options = await optionsPromise;\n return [...datasource.getVariables(), ...options].map((value) => ({ label: value, value }));\n };\n\n const onGetLabelNames = async (forLabel: Partial): Promise => {\n const labelsToConsider = query.labels.filter((x) => x !== forLabel);\n\n const hasEqualityOperation = labelsToConsider.find(\n (filter) => filter.op === '=' || (filter.op === '=~' && new RegExp(filter.value).test('') === false)\n );\n if (labelsToConsider.length === 0 || !hasEqualityOperation) {\n return await datasource.languageProvider.fetchLabels({ timeRange });\n }\n\n const expr = lokiQueryModeller.renderLabels(labelsToConsider);\n const series = await datasource.languageProvider.fetchSeriesLabels(expr, { timeRange });\n const labelsNamesToConsider = labelsToConsider.map((l) => l.label);\n\n const labelNames = Object.keys(series)\n // Filter out label names that are already selected\n .filter((name) => !labelsNamesToConsider.includes(name))\n .sort();\n\n return labelNames;\n };\n\n const onGetLabelValues = async (forLabel: Partial) => {\n if (!forLabel.label) {\n return [];\n }\n\n let values;\n const labelsToConsider = query.labels.filter((x) => x !== forLabel);\n // If we have no equality/regex operation with .*, we can't fetch series as it will throw an error, so we fetch label values\n const hasEqualityOperation = labelsToConsider.find(\n (filter) => filter.op === '=' || (filter.op === '=~' && new RegExp(filter.value).test('') === false)\n );\n if (labelsToConsider.length === 0 || !hasEqualityOperation) {\n values = await datasource.languageProvider.fetchLabelValues(forLabel.label, { timeRange });\n } else {\n const expr = lokiQueryModeller.renderLabels(labelsToConsider);\n const result = await datasource.languageProvider.fetchSeriesLabels(expr, { timeRange });\n values = result[datasource.interpolateString(forLabel.label)];\n }\n\n return values ? values.map((v) => escapeLabelValueInSelector(v, forLabel.op)) : []; // Escape values in return\n };\n\n const labelFilterRequired: boolean = useMemo(() => {\n const { labels, operations: op } = query;\n if (!labels.length && op.length) {\n // Filter is required when operations are present (empty line contains operation is exception)\n if (op.length === 1 && op[0].id === LokiOperationId.LineContains && op[0].params[0] === '') {\n return false;\n }\n return true;\n }\n return false;\n }, [query]);\n\n useEffect(() => {\n const onGetSampleData = async () => {\n const lokiQuery = { expr: lokiQueryModeller.renderQuery(query), refId: 'data-samples' };\n const range = timeRange ?? getDefaultTimeRange();\n const series = await datasource.getDataSamples(lokiQuery, range);\n const sampleData = { series, state: LoadingState.Done, timeRange: range };\n setSampleData(sampleData);\n };\n\n const updateBasedOnChangedTimeRange =\n prevTimeRange &&\n timeRange &&\n (Math.abs(timeRange.to.valueOf() - prevTimeRange.to.valueOf()) > TIME_SPAN_TO_TRIGGER_SAMPLES ||\n Math.abs(timeRange.from.valueOf() - prevTimeRange.from.valueOf()) > TIME_SPAN_TO_TRIGGER_SAMPLES);\n const updateBasedOnChangedQuery = !isEqual(prevQuery, query);\n if (config.featureToggles.lokiQueryHints && (updateBasedOnChangedTimeRange || updateBasedOnChangedQuery)) {\n onGetSampleData().catch(console.error);\n }\n }, [datasource, query, timeRange, prevQuery, prevTimeRange]);\n\n const lang = { grammar: logqlGrammar, name: 'logql' };\n return (\n
\n \n ) =>\n withTemplateVariableOptions(onGetLabelNames(forLabel))\n }\n onGetLabelValues={(forLabel: Partial) =>\n withTemplateVariableOptions(onGetLabelValues(forLabel))\n }\n labelsFilters={query.labels}\n onChange={onChangeLabels}\n labelFilterRequired={labelFilterRequired}\n />\n \n {showExplain && (\n }\n >\n {EXPLAIN_LABEL_FILTER_CONTENT}\n \n )}\n \n \n operation.id === LokiOperationId.LabelFilter && isConflictingFilter(operation, otherOperations)\n }\n />\n \n datasource={datasource}\n query={query}\n onChange={onChange}\n data={sampleData}\n queryModeller={lokiQueryModeller}\n buildVisualQueryFromString={buildVisualQueryFromString}\n buildDataQueryFromQueryString={(queryString) => ({ expr: queryString, refId: 'hints' })}\n buildQueryStringFromDataQuery={(query) => query.expr}\n />\n \n {showExplain && (\n \n stepNumber={2}\n queryModeller={lokiQueryModeller}\n query={query}\n language={lang}\n onMouseEnter={(op) => {\n setHighlightedOp(op);\n }}\n onMouseLeave={() => {\n setHighlightedOp(undefined);\n }}\n />\n )}\n {query.binaryQueries && query.binaryQueries.length > 0 && (\n \n )}\n
\n );\n }\n);\n\nLokiQueryBuilder.displayName = 'LokiQueryBuilder';\n","import React from 'react';\n\nimport { EditorRow, EditorFieldGroup, RawQuery } from '@grafana/experimental';\n\nimport { lokiGrammar } from '../../syntax';\n\nexport interface Props {\n query: string;\n}\n\nexport function QueryPreview({ query }: Props) {\n return (\n \n \n \n \n \n );\n}\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport React, { useEffect, useReducer } from 'react';\n\nimport { TimeRange } from '@grafana/data';\n\nimport { testIds } from '../../components/LokiQueryEditor';\nimport { LokiDatasource } from '../../datasource';\nimport { LokiQuery } from '../../types';\nimport { lokiQueryModeller } from '../LokiQueryModeller';\nimport { buildVisualQueryFromString } from '../parsing';\nimport { LokiVisualQuery } from '../types';\n\nimport { LokiQueryBuilder } from './LokiQueryBuilder';\nimport { QueryPreview } from './QueryPreview';\n\nexport interface Props {\n query: LokiQuery;\n datasource: LokiDatasource;\n onChange: (update: LokiQuery) => void;\n onRunQuery: () => void;\n showExplain: boolean;\n timeRange?: TimeRange;\n}\n\nexport interface State {\n visQuery?: LokiVisualQuery;\n expr: string;\n}\n\n/**\n * This component is here just to contain the translation logic between string query and the visual query builder model.\n */\nexport function LokiQueryBuilderContainer(props: Props) {\n const { query, onChange, onRunQuery, datasource, showExplain, timeRange } = props;\n const [state, dispatch] = useReducer(stateSlice.reducer, {\n expr: query.expr,\n // Use initial visual query only if query.expr is empty string\n visQuery:\n query.expr === ''\n ? {\n labels: [],\n operations: [{ id: '__line_contains', params: [''] }],\n }\n : undefined,\n });\n\n // Only rebuild visual query if expr changes from outside\n useEffect(() => {\n dispatch(exprChanged(query.expr));\n }, [query.expr]);\n\n const onVisQueryChange = (visQuery: LokiVisualQuery) => {\n const expr = lokiQueryModeller.renderQuery(visQuery);\n dispatch(visualQueryChange({ visQuery, expr }));\n onChange({ ...props.query, expr: expr });\n };\n\n if (!state.visQuery) {\n return null;\n }\n\n return (\n <>\n \n {query.expr !== '' && }\n \n );\n}\n\nconst initialState: State = { expr: '' };\n\nconst stateSlice = createSlice({\n name: 'loki-builder-container',\n initialState,\n reducers: {\n visualQueryChange: (state, action: PayloadAction<{ visQuery: LokiVisualQuery; expr: string }>) => {\n state.expr = action.payload.expr;\n state.visQuery = action.payload.visQuery;\n },\n exprChanged: (state, action: PayloadAction) => {\n if (!state.visQuery || state.expr !== action.payload) {\n state.expr = action.payload;\n const parseResult = buildVisualQueryFromString(action.payload);\n state.visQuery = parseResult.query;\n }\n },\n },\n});\n\nconst { visualQueryChange, exprChanged } = stateSlice.actions;\n","import { css } from '@emotion/css';\nimport React__default from 'react';\nimport { useToggle } from 'react-use';\nimport { getValueFormat } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { useStyles2, Collapse, Tooltip, Icon } from '@grafana/ui';\nimport { Stack } from '../../QueryEditor/Stack.js';\n\nfunction QueryOptionGroup({ title, children, collapsedInfo, queryStats }) {\n const [isOpen, toggleOpen] = useToggle(false);\n const styles = useStyles2(getStyles);\n return /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.wrapper }, /* @__PURE__ */ React__default.createElement(\n Collapse,\n {\n className: styles.collapse,\n collapsible: true,\n isOpen,\n onToggle: toggleOpen,\n label: /* @__PURE__ */ React__default.createElement(Stack, { gap: 0 }, /* @__PURE__ */ React__default.createElement(\"h6\", { className: styles.title }, title), !isOpen && /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.description }, collapsedInfo.map((x, i) => /* @__PURE__ */ React__default.createElement(\"span\", { key: i }, x))))\n },\n /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.body }, children)\n ), queryStats && config.featureToggles.lokiQuerySplitting && /* @__PURE__ */ React__default.createElement(Tooltip, { content: \"Note: the query will be split into multiple parts and executed in sequence. Query limits will only apply each individual part.\" }, /* @__PURE__ */ React__default.createElement(Icon, { tabIndex: 0, name: \"info-circle\", className: styles.tooltip, size: \"sm\" })), queryStats && /* @__PURE__ */ React__default.createElement(\"p\", { className: styles.stats }, generateQueryStats(queryStats)));\n}\nconst getStyles = (theme) => {\n return {\n collapse: css({\n backgroundColor: \"unset\",\n border: \"unset\",\n marginBottom: 0,\n [\"> button\"]: {\n padding: theme.spacing(0, 1)\n }\n }),\n wrapper: css({\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"baseline\"\n }),\n title: css({\n flexGrow: 1,\n overflow: \"hidden\",\n fontSize: theme.typography.bodySmall.fontSize,\n fontWeight: theme.typography.fontWeightMedium,\n margin: 0\n }),\n description: css({\n color: theme.colors.text.secondary,\n fontSize: theme.typography.bodySmall.fontSize,\n fontWeight: theme.typography.bodySmall.fontWeight,\n paddingLeft: theme.spacing(2),\n gap: theme.spacing(2),\n display: \"flex\"\n }),\n body: css({\n display: \"flex\",\n gap: theme.spacing(2),\n flexWrap: \"wrap\"\n }),\n stats: css({\n margin: \"0px\",\n color: theme.colors.text.secondary,\n fontSize: theme.typography.bodySmall.fontSize\n }),\n tooltip: css({\n marginRight: theme.spacing(0.25)\n })\n };\n};\nconst generateQueryStats = (queryStats) => {\n if (queryStats.message) {\n return queryStats.message;\n }\n return `This query will process approximately ${convertUnits(queryStats)}.`;\n};\nconst convertUnits = (queryStats) => {\n const { text, suffix } = getValueFormat(\"bytes\")(queryStats.bytes, 1);\n return text + suffix;\n};\n\nexport { QueryOptionGroup };\n//# sourceMappingURL=QueryOptionGroup.js.map\n","import { trim } from 'lodash';\nimport React, { useMemo, useState } from 'react';\n\nimport { CoreApp, isValidDuration, isValidGrafanaDuration, SelectableValue } from '@grafana/data';\nimport { EditorField, EditorRow, QueryOptionGroup } from '@grafana/experimental';\nimport { config, reportInteraction } from '@grafana/runtime';\nimport { Alert, AutoSizeInput, RadioButtonGroup, Select } from '@grafana/ui';\n\nimport { preprocessMaxLines, queryTypeOptions, RESOLUTION_OPTIONS } from '../../components/LokiOptionFields';\nimport { getLokiQueryType, isLogsQuery } from '../../queryUtils';\nimport { LokiQuery, LokiQueryType, QueryStats } from '../../types';\n\nexport interface Props {\n query: LokiQuery;\n onChange: (update: LokiQuery) => void;\n onRunQuery: () => void;\n maxLines: number;\n app?: CoreApp;\n queryStats: QueryStats | null;\n}\n\nexport const LokiQueryBuilderOptions = React.memo(\n ({ app, query, onChange, onRunQuery, maxLines, queryStats }) => {\n const [splitDurationValid, setSplitDurationValid] = useState(true);\n\n const onQueryTypeChange = (value: LokiQueryType) => {\n onChange({ ...query, queryType: value });\n onRunQuery();\n };\n\n const onResolutionChange = (option: SelectableValue) => {\n reportInteraction('grafana_loki_resolution_clicked', {\n app,\n resolution: option.value,\n });\n onChange({ ...query, resolution: option.value });\n onRunQuery();\n };\n\n const onChunkRangeChange = (evt: React.FormEvent) => {\n const value = evt.currentTarget.value;\n if (!isValidDuration(value)) {\n setSplitDurationValid(false);\n return;\n }\n setSplitDurationValid(true);\n onChange({ ...query, splitDuration: value });\n onRunQuery();\n };\n\n const onLegendFormatChanged = (evt: React.FormEvent) => {\n onChange({ ...query, legendFormat: evt.currentTarget.value });\n onRunQuery();\n };\n\n function onMaxLinesChange(e: React.SyntheticEvent) {\n const newMaxLines = preprocessMaxLines(e.currentTarget.value);\n if (query.maxLines !== newMaxLines) {\n onChange({ ...query, maxLines: newMaxLines });\n onRunQuery();\n }\n }\n\n function onStepChange(e: React.SyntheticEvent) {\n onChange({ ...query, step: trim(e.currentTarget.value) });\n onRunQuery();\n }\n\n const queryType = getLokiQueryType(query);\n const isLogQuery = isLogsQuery(query.expr);\n\n const isValidStep = useMemo(() => {\n if (!query.step || isValidGrafanaDuration(query.step) || !isNaN(Number(query.step))) {\n return true;\n }\n return false;\n }, [query.step]);\n\n return (\n \n \n \n \n \n \n \n \n {isLogQuery && (\n \n \n \n )}\n {!isLogQuery && (\n <>\n \n \n \n {query.resolution !== undefined && query.resolution > 1 && (\n <>\n \n \n \n \n \n )}\n \n )}\n {config.featureToggles.lokiQuerySplittingConfig && config.featureToggles.lokiQuerySplitting && (\n \n \n \n )}\n \n \n );\n }\n);\n\nfunction getCollapsedInfo(\n query: LokiQuery,\n queryType: LokiQueryType,\n maxLines: number,\n isLogQuery: boolean,\n isValidStep: boolean\n): string[] {\n const queryTypeLabel = queryTypeOptions.find((x) => x.value === queryType);\n const resolutionLabel = RESOLUTION_OPTIONS.find((x) => x.value === (query.resolution ?? 1));\n\n const items: string[] = [];\n\n if (query.legendFormat) {\n items.push(`Legend: ${query.legendFormat}`);\n }\n\n items.push(`Type: ${queryTypeLabel?.label}`);\n\n if (isLogQuery) {\n items.push(`Line limit: ${query.maxLines ?? maxLines}`);\n }\n\n if (!isLogQuery) {\n if (query.step) {\n items.push(`Step: ${isValidStep ? query.step : 'Invalid value'}`);\n }\n\n if (query.resolution) {\n items.push(`Resolution: ${resolutionLabel?.label}`);\n }\n }\n\n return items;\n}\n\nLokiQueryBuilderOptions.displayName = 'LokiQueryBuilderOptions';\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { useStyles2, HorizontalGroup, IconButton, Tooltip, Icon } from '@grafana/ui';\n\nimport { testIds } from '../../components/LokiQueryEditor';\nimport { LokiQueryField } from '../../components/LokiQueryField';\nimport { LokiQueryEditorProps } from '../../components/types';\nimport { formatLogqlQuery } from '../../queryUtils';\n\nimport { LokiQueryBuilderExplained } from './LokiQueryBuilderExplained';\n\ntype Props = LokiQueryEditorProps & {\n showExplain: boolean;\n};\n\nexport function LokiQueryCodeEditor({\n query,\n datasource,\n range,\n onRunQuery,\n onChange,\n data,\n app,\n showExplain,\n history,\n}: Props) {\n const styles = useStyles2(getStyles);\n\n const lokiFormatQuery = config.featureToggles.lokiFormatQuery;\n const onClickFormatQueryButton = async () => onChange({ ...query, expr: formatLogqlQuery(query.expr, datasource) });\n\n return (\n
\n \n {lokiFormatQuery && (\n
\n
\n \n \n \n \n \n \n
\n
\n )}\n \n }\n />\n {showExplain && }\n
\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n wrapper: css`\n max-width: 100%;\n .gf-form {\n margin-bottom: 0.5;\n }\n `,\n buttonGroup: css`\n border: 1px solid ${theme.colors.border.medium};\n border-top: none;\n padding: ${theme.spacing(0.5, 0.5, 0.5, 0.5)};\n margin-bottom: ${theme.spacing(0.5)};\n display: flex;\n flex-grow: 1;\n justify-content: end;\n font-size: ${theme.typography.bodySmall.fontSize};\n `,\n hint: css`\n color: ${theme.colors.text.disabled};\n white-space: nowrap;\n cursor: help;\n `,\n };\n};\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { RawQuery } from '@grafana/experimental';\nimport { Button, Card, useStyles2 } from '@grafana/ui';\n\nimport logqlGrammar from '../../syntax';\nimport { lokiQueryModeller } from '../LokiQueryModeller';\nimport { LokiQueryPattern } from '../types';\n\ntype Props = {\n pattern: LokiQueryPattern;\n hasNewQueryOption: boolean;\n hasPreviousQuery: boolean;\n selectedPatternName: string | null;\n setSelectedPatternName: (name: string | null) => void;\n onPatternSelect: (pattern: LokiQueryPattern, selectAsNewQuery?: boolean) => void;\n};\n\nexport const QueryPattern = (props: Props) => {\n const { pattern, onPatternSelect, hasNewQueryOption, hasPreviousQuery, selectedPatternName, setSelectedPatternName } =\n props;\n\n const styles = useStyles2(getStyles);\n const lang = { grammar: logqlGrammar, name: 'logql' };\n\n return (\n \n {pattern.name}\n
\n \n
\n \n {selectedPatternName !== pattern.name ? (\n {\n if (hasPreviousQuery) {\n // If user has previous query, we need to confirm that they want to replace it\n setSelectedPatternName(pattern.name);\n } else {\n onPatternSelect(pattern);\n }\n }}\n >\n Use this query\n \n ) : (\n <>\n
\n {`If you would like to use this query, ${\n hasNewQueryOption\n ? 'you can either replace your current query or create a new query'\n : 'your current query will be replaced'\n }.`}\n
\n \n {\n onPatternSelect(pattern);\n }}\n >\n Replace query\n \n {hasNewQueryOption && (\n {\n onPatternSelect(pattern, true);\n }}\n >\n Create new query\n \n )}\n \n )}\n
\n
\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n card: css`\n width: 49.5%;\n display: flex;\n flex-direction: column;\n `,\n rawQueryContainer: css`\n flex-grow: 1;\n `,\n rawQuery: css`\n background-color: ${theme.colors.background.primary};\n padding: ${theme.spacing(1)};\n margin-top: ${theme.spacing(1)};\n `,\n spacing: css`\n margin-bottom: ${theme.spacing(1)};\n `,\n };\n};\n","import { css } from '@emotion/css';\nimport { capitalize } from 'lodash';\nimport React, { useMemo, useState } from 'react';\n\nimport { CoreApp, DataQuery, GrafanaTheme2, getNextRefId } from '@grafana/data';\nimport { reportInteraction } from '@grafana/runtime';\nimport { Button, Collapse, Modal, useStyles2 } from '@grafana/ui';\n\nimport { LokiQuery } from '../../types';\nimport { lokiQueryModeller } from '../LokiQueryModeller';\nimport { buildVisualQueryFromString } from '../parsing';\nimport { LokiQueryPattern, LokiQueryPatternType } from '../types';\n\nimport { QueryPattern } from './QueryPattern';\n\ntype Props = {\n isOpen: boolean;\n query: LokiQuery;\n queries: DataQuery[] | undefined;\n app?: CoreApp;\n onClose: () => void;\n onChange: (query: LokiQuery) => void;\n onAddQuery?: (query: LokiQuery) => void;\n};\n\nexport const QueryPatternsModal = (props: Props) => {\n const { isOpen, onClose, onChange, onAddQuery, query, queries, app } = props;\n const [openTabs, setOpenTabs] = useState([]);\n const [selectedPatternName, setSelectedPatternName] = useState(null);\n\n const styles = useStyles2(getStyles);\n const hasNewQueryOption = !!onAddQuery;\n const hasPreviousQuery = useMemo(\n () => buildVisualQueryFromString(query.expr).query.operations.length > 0,\n [query.expr]\n );\n\n const onPatternSelect = (pattern: LokiQueryPattern, selectAsNewQuery = false) => {\n const visualQuery = buildVisualQueryFromString(selectAsNewQuery ? '' : query.expr);\n reportInteraction('grafana_loki_query_patterns_selected', {\n version: 'v2',\n app: app ?? '',\n editorMode: query.editorMode,\n selectedPattern: pattern.name,\n preSelectedOperationsCount: visualQuery.query.operations.length,\n preSelectedLabelsCount: visualQuery.query.labels.length,\n createNewQuery: hasNewQueryOption && selectAsNewQuery,\n });\n\n visualQuery.query.operations = pattern.operations;\n if (hasNewQueryOption && selectAsNewQuery) {\n onAddQuery({\n ...query,\n refId: getNextRefId(queries ?? [query]),\n expr: lokiQueryModeller.renderQuery(visualQuery.query),\n });\n } else {\n onChange({\n ...query,\n expr: lokiQueryModeller.renderQuery(visualQuery.query),\n });\n }\n setSelectedPatternName(null);\n onClose();\n };\n\n return (\n \n
\n Kick start your query by selecting one of these queries. You can then continue to complete your query.\n
\n {Object.values(LokiQueryPatternType).map((patternType) => {\n return (\n \n setOpenTabs((tabs) =>\n // close tab if it's already open, otherwise open it\n tabs.includes(patternType) ? tabs.filter((t) => t !== patternType) : [...tabs, patternType]\n )\n }\n >\n
\n {lokiQueryModeller\n .getQueryPatterns()\n .filter((pattern) => pattern.type === patternType)\n .map((pattern) => (\n \n ))}\n
\n \n );\n })}\n \n
\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n cardsContainer: css`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n `,\n spacing: css`\n margin-bottom: ${theme.spacing(1)};\n `,\n modal: css`\n width: 85vw;\n ${theme.breakpoints.down('md')} {\n width: 100%;\n }\n `,\n };\n};\n","import { QueryEditorMode } from '@grafana/experimental';\n\nimport { LokiQuery, LokiQueryType } from '../types';\n\nconst queryEditorModeDefaultLocalStorageKey = 'LokiQueryEditorModeDefault';\n\nexport function changeEditorMode(query: LokiQuery, editorMode: QueryEditorMode, onChange: (query: LokiQuery) => void) {\n // If empty query store new mode as default\n if (query.expr === '') {\n window.localStorage.setItem(queryEditorModeDefaultLocalStorageKey, editorMode);\n }\n\n onChange({ ...query, editorMode });\n}\n\nexport function getDefaultEditorMode(expr: string) {\n // If we already have an expression default to code view\n if (expr != null && expr !== '') {\n return QueryEditorMode.Code;\n }\n\n const value: string | null = window.localStorage.getItem(queryEditorModeDefaultLocalStorageKey);\n switch (value) {\n case 'code':\n return QueryEditorMode.Code;\n\n case 'builder':\n default:\n return QueryEditorMode.Builder;\n }\n}\n\n/**\n * Returns query with defaults, and boolean true/false depending on change was required\n */\nexport function getQueryWithDefaults(query: LokiQuery): LokiQuery {\n // If no expr (ie new query) then default to builder\n let result = query;\n\n if (!query.editorMode) {\n result = { ...query, editorMode: getDefaultEditorMode(query.expr) };\n }\n\n if (query.expr == null) {\n result = { ...result, expr: '' };\n }\n\n if (query.queryType == null) {\n // Default to range query\n result = { ...result, queryType: LokiQueryType.Range };\n }\n\n return result;\n}\n","import { DateTime, isDateTime, TimeRange } from '@grafana/data';\n\nimport { LokiQueryType } from '../types';\n\n/**\n * This function compares two time values. If the first is absolute, it compares them using `DateTime.isSame`.\n *\n * @param {(DateTime | string)} time1\n * @param {(DateTime | string | undefined)} time2\n */\nfunction compareTime(time1: DateTime | string | undefined, time2: DateTime | string | undefined) {\n if (!time1 || !time2) {\n return false;\n }\n\n const isAbsolute = isDateTime(time1);\n\n if (isAbsolute) {\n return time1.isSame(time2);\n }\n\n return time1 === time2;\n}\n\nexport function shouldUpdateStats(\n query: string,\n prevQuery: string | undefined,\n timeRange: TimeRange | undefined,\n prevTimeRange: TimeRange | undefined,\n queryType: LokiQueryType | undefined,\n prevQueryType: LokiQueryType | undefined\n): boolean {\n if (prevQuery === undefined || query.trim() !== prevQuery.trim() || queryType !== prevQueryType) {\n return true;\n }\n\n if (\n compareTime(timeRange?.raw.from, prevTimeRange?.raw.from) &&\n compareTime(timeRange?.raw.to, prevTimeRange?.raw.to)\n ) {\n return false;\n }\n\n return true;\n}\n","import { isEqual } from 'lodash';\nimport React, { SyntheticEvent, useCallback, useEffect, useId, useState } from 'react';\nimport { usePrevious } from 'react-use';\n\nimport { CoreApp, LoadingState } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport {\n EditorHeader,\n EditorRows,\n FlexItem,\n QueryEditorModeToggle,\n QueryHeaderSwitch,\n QueryEditorMode,\n} from '@grafana/experimental';\nimport { config, reportInteraction } from '@grafana/runtime';\nimport { Button, ConfirmModal, Space, Stack } from '@grafana/ui';\n\nimport { LabelBrowserModal } from '../querybuilder/components/LabelBrowserModal';\nimport { LokiQueryBuilderContainer } from '../querybuilder/components/LokiQueryBuilderContainer';\nimport { LokiQueryBuilderOptions } from '../querybuilder/components/LokiQueryBuilderOptions';\nimport { LokiQueryCodeEditor } from '../querybuilder/components/LokiQueryCodeEditor';\nimport { QueryPatternsModal } from '../querybuilder/components/QueryPatternsModal';\nimport { buildVisualQueryFromString } from '../querybuilder/parsing';\nimport { changeEditorMode, getQueryWithDefaults } from '../querybuilder/state';\nimport { LokiQuery, QueryStats } from '../types';\n\nimport { shouldUpdateStats } from './stats';\nimport { LokiQueryEditorProps } from './types';\n\nexport const testIds = {\n editor: 'loki-editor',\n};\n\nexport const lokiQueryEditorExplainKey = 'LokiQueryEditorExplainDefault';\n\nexport const LokiQueryEditor = React.memo((props) => {\n const id = useId();\n const { onChange, onRunQuery, onAddQuery, data, app, queries, datasource, range: timeRange } = props;\n const [parseModalOpen, setParseModalOpen] = useState(false);\n const [queryPatternsModalOpen, setQueryPatternsModalOpen] = useState(false);\n const [dataIsStale, setDataIsStale] = useState(false);\n const [labelBrowserVisible, setLabelBrowserVisible] = useState(false);\n const [queryStats, setQueryStats] = useState(null);\n const [explain, setExplain] = useState(window.localStorage.getItem(lokiQueryEditorExplainKey) === 'true');\n\n const predefinedOperations = datasource.predefinedOperations;\n const previousTimeRange = usePrevious(timeRange);\n\n const query = getQueryWithDefaults(props.query);\n if (config.featureToggles.lokiPredefinedOperations && !query.expr && predefinedOperations) {\n query.expr = `{} ${predefinedOperations}`;\n }\n const previousQueryExpr = usePrevious(query.expr);\n const previousQueryType = usePrevious(query.queryType);\n\n // This should be filled in from the defaults by now.\n const editorMode = query.editorMode!;\n\n const onExplainChange = (event: SyntheticEvent) => {\n window.localStorage.setItem(lokiQueryEditorExplainKey, event.currentTarget.checked ? 'true' : 'false');\n setExplain(event.currentTarget.checked);\n };\n\n const onEditorModeChange = useCallback(\n (newEditorMode: QueryEditorMode) => {\n reportInteraction('grafana_loki_editor_mode_clicked', {\n newEditor: newEditorMode,\n previousEditor: query.editorMode ?? '',\n newQuery: !query.expr,\n app: app ?? '',\n });\n\n if (newEditorMode === QueryEditorMode.Builder) {\n const result = buildVisualQueryFromString(query.expr || '');\n // If there are errors, give user a chance to decide if they want to go to builder as that can lose some data.\n if (result.errors.length) {\n setParseModalOpen(true);\n return;\n }\n }\n changeEditorMode(query, newEditorMode, onChange);\n },\n [onChange, query, app]\n );\n\n useEffect(() => {\n setDataIsStale(false);\n }, [data]);\n\n const onChangeInternal = (query: LokiQuery) => {\n if (!isEqual(query, props.query)) {\n setDataIsStale(true);\n }\n onChange(query);\n };\n\n const onClickLabelBrowserButton = () => {\n reportInteraction('grafana_loki_label_browser_opened', {\n app: app,\n });\n\n setLabelBrowserVisible((visible) => !visible);\n };\n\n useEffect(() => {\n const shouldUpdate = shouldUpdateStats(\n query.expr,\n previousQueryExpr,\n timeRange,\n previousTimeRange,\n query.queryType,\n previousQueryType\n );\n if (shouldUpdate && timeRange) {\n const makeAsyncRequest = async () => {\n // overwriting the refId that is later used to cancel inflight queries with the same ID.\n const stats = await datasource.getStats({ ...query, refId: `${id}_${query.refId}` }, timeRange);\n setQueryStats(stats);\n };\n makeAsyncRequest();\n }\n }, [datasource, timeRange, previousTimeRange, query, previousQueryExpr, previousQueryType, setQueryStats, id]);\n\n return (\n <>\n {\n onChange({ ...query, editorMode: QueryEditorMode.Builder });\n setParseModalOpen(false);\n }}\n onDismiss={() => setParseModalOpen(false)}\n />\n setQueryPatternsModalOpen(false)}\n query={query}\n queries={queries}\n app={app}\n onChange={onChange}\n onAddQuery={onAddQuery}\n />\n setLabelBrowserVisible(false)}\n onChange={onChangeInternal}\n onRunQuery={onRunQuery}\n timeRange={timeRange}\n />\n \n \n {\n setQueryPatternsModalOpen((prevValue) => !prevValue);\n\n const visualQuery = buildVisualQueryFromString(query.expr || '');\n reportInteraction('grafana_loki_query_patterns_opened', {\n version: 'v2',\n app: app ?? '',\n editorMode: query.editorMode,\n preSelectedOperationsCount: visualQuery.query.operations.length,\n preSelectedLabelsCount: visualQuery.query.labels.length,\n });\n }}\n >\n Kick start your query\n \n \n \n \n \n {app !== CoreApp.Explore && app !== CoreApp.Correlations && (\n \n {queries && queries.length > 1 ? `Run queries` : `Run query`}\n \n )}\n \n \n \n \n {editorMode === QueryEditorMode.Code && (\n \n )}\n {editorMode === QueryEditorMode.Builder && (\n \n )}\n \n \n \n );\n});\n\nLokiQueryEditor.displayName = 'LokiQueryEditor';\n","import React from 'react';\n\nimport { LokiQueryField } from './LokiQueryField';\nimport { LokiQueryEditorProps } from './types';\n\nexport function LokiQueryEditorForAlerting(props: LokiQueryEditorProps) {\n const { query, data, datasource, onChange, onRunQuery, history } = props;\n\n return (\n \n );\n}\n\nexport const testIds = {\n editor: 'loki-editor-cloud-alerting',\n};\n","import React, { memo } from 'react';\n\nimport { CoreApp } from '@grafana/data';\n\nimport { LokiQueryEditor } from './LokiQueryEditor';\nimport { LokiQueryEditorForAlerting } from './LokiQueryEditorForAlerting';\nimport { LokiQueryEditorProps } from './types';\n\nexport function LokiQueryEditorByApp(props: LokiQueryEditorProps) {\n const { app } = props;\n\n switch (app) {\n case CoreApp.CloudAlerting:\n return ;\n default:\n return ;\n }\n}\n\nexport default memo(LokiQueryEditorByApp);\n\nexport const testIds = {\n editor: 'loki-editor',\n};\n","import React from 'react';\n\nimport { DataSourcePluginOptionsEditorProps } from '@grafana/data';\nimport { ConfigDescriptionLink, ConfigSubSection } from '@grafana/experimental';\nimport { InlineField, InlineSwitch } from '@grafana/ui';\n\nexport function AlertingSettings({\n options,\n onOptionsChange,\n}: Pick) {\n return (\n \n }\n >\n \n \n onOptionsChange({\n ...options,\n jsonData: { ...options.jsonData, manageAlerts: event!.currentTarget.checked },\n })\n }\n />\n \n \n );\n}\n","import React, { ReactNode, useState } from 'react';\n\nimport { getTemplateSrv } from '@grafana/runtime';\nimport { InlineField, TextArea } from '@grafana/ui';\n\nimport { DerivedFieldConfig } from '../types';\n\ntype Props = {\n derivedFields?: DerivedFieldConfig[];\n className?: string;\n};\nexport const DebugSection = (props: Props) => {\n const { derivedFields, className } = props;\n const [debugText, setDebugText] = useState('');\n\n let debugFields: DebugField[] = [];\n if (debugText && derivedFields) {\n debugFields = makeDebugFields(derivedFields, debugText);\n }\n\n return (\n
\n \n setDebugText(event.currentTarget.value)}\n />\n \n {!!debugFields.length && }\n
\n );\n};\n\ntype DebugFieldItemProps = {\n fields: DebugField[];\n};\nconst DebugFields = ({ fields }: DebugFieldItemProps) => {\n return (\n \n \n \n \n \n \n \n \n \n {fields.map((field) => {\n let value: ReactNode = field.value;\n if (field.error && field.error instanceof Error) {\n value = field.error.message;\n } else if (field.href) {\n value = {value};\n }\n return (\n \n \n \n \n \n );\n })}\n \n
NameValueUrl
{field.name}{value}{field.href ? {field.href} : ''}
\n );\n};\n\ntype DebugField = {\n name: string;\n error?: unknown;\n value?: string;\n href?: string;\n};\n\nfunction makeDebugFields(derivedFields: DerivedFieldConfig[], debugText: string): DebugField[] {\n return derivedFields\n .filter((field) => field.name && field.matcherRegex)\n .map((field) => {\n try {\n const testMatch = debugText.match(field.matcherRegex);\n let href;\n const value = testMatch && testMatch[1];\n\n if (value) {\n href = getTemplateSrv().replace(field.url, {\n __value: {\n value: {\n raw: value,\n },\n text: 'Raw value',\n },\n });\n }\n const debugFiled: DebugField = {\n name: field.name,\n value: value || '',\n href,\n };\n return debugFiled;\n } catch (error) {\n return {\n name: field.name,\n error,\n };\n }\n });\n}\n","import { css } from '@emotion/css';\nimport React, { ChangeEvent, useEffect, useState } from 'react';\nimport { usePrevious } from 'react-use';\n\nimport { GrafanaTheme2, DataSourceInstanceSettings, VariableSuggestion } from '@grafana/data';\nimport { DataSourcePicker } from '@grafana/runtime';\nimport { Button, DataLinkInput, Field, Icon, Input, Label, Tooltip, useStyles2, Select, Switch } from '@grafana/ui';\n\nimport { DerivedFieldConfig } from '../types';\n\ntype MatcherType = 'label' | 'regex';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n row: css`\n display: flex;\n align-items: baseline;\n `,\n nameField: css`\n flex: 2;\n margin-right: ${theme.spacing(0.5)};\n `,\n regexField: css`\n flex: 3;\n margin-right: ${theme.spacing(0.5)};\n `,\n urlField: css`\n flex: 1;\n margin-right: ${theme.spacing(0.5)};\n `,\n urlDisplayLabelField: css`\n flex: 1;\n `,\n internalLink: css`\n margin-right: ${theme.spacing(1)};\n `,\n dataSource: css``,\n nameMatcherField: css({\n width: theme.spacing(20),\n marginRight: theme.spacing(0.5),\n }),\n});\n\ntype Props = {\n value: DerivedFieldConfig;\n onChange: (value: DerivedFieldConfig) => void;\n onDelete: () => void;\n suggestions: VariableSuggestion[];\n className?: string;\n validateName: (name: string) => boolean;\n};\nexport const DerivedField = (props: Props) => {\n const { value, onChange, onDelete, suggestions, className, validateName } = props;\n const styles = useStyles2(getStyles);\n const [showInternalLink, setShowInternalLink] = useState(!!value.datasourceUid);\n const previousUid = usePrevious(value.datasourceUid);\n const [fieldType, setFieldType] = useState(value.matcherType ?? 'regex');\n\n // Force internal link visibility change if uid changed outside of this component.\n useEffect(() => {\n if (!previousUid && value.datasourceUid && !showInternalLink) {\n setShowInternalLink(true);\n }\n if (previousUid && !value.datasourceUid && showInternalLink) {\n setShowInternalLink(false);\n }\n }, [previousUid, value.datasourceUid, showInternalLink]);\n\n const handleChange = (field: keyof typeof value) => (event: React.ChangeEvent) => {\n onChange({\n ...value,\n [field]: event.currentTarget.value,\n });\n };\n\n const invalidName = !validateName(value.name);\n\n return (\n
\n
\n \n \n \n \n }\n >\n {\n // make sure this is a valid MatcherType\n if (type.value === 'label' || type.value === 'regex') {\n setFieldType(type.value);\n onChange({\n ...value,\n matcherType: type.value,\n });\n }\n }}\n />\n \n \n {fieldType === 'regex' && (\n \n )}\n\n {fieldType === 'label' && }\n \n }\n >\n \n \n \n {\n event.preventDefault();\n onDelete();\n }}\n />\n \n
\n\n
\n \n \n onChange({\n ...value,\n url: newValue,\n })\n }\n suggestions={suggestions}\n />\n \n \n }\n >\n \n \n
\n\n
\n \n ) => {\n const { checked } = e.currentTarget;\n if (!checked) {\n onChange({\n ...value,\n datasourceUid: undefined,\n });\n }\n setShowInternalLink(checked);\n }}\n />\n \n\n {showInternalLink && (\n \n \n onChange({\n ...value,\n datasourceUid: ds.uid,\n })\n }\n current={value.datasourceUid}\n noDefault\n />\n \n )}\n
\n
\n );\n};\n\nconst TooltipLabel = ({ content, label }: { content: string; label: string }) => (\n \n);\n","import { css } from '@emotion/css';\nimport React, { useCallback, useState } from 'react';\n\nimport { GrafanaTheme2, VariableOrigin, DataLinkBuiltInVars } from '@grafana/data';\nimport { ConfigDescriptionLink, ConfigSubSection } from '@grafana/experimental';\nimport { Button, useTheme2 } from '@grafana/ui';\n\nimport { DerivedFieldConfig } from '../types';\n\nimport { DebugSection } from './DebugSection';\nimport { DerivedField } from './DerivedField';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n addButton: css`\n margin-right: 10px;\n `,\n derivedField: css`\n margin-bottom: ${theme.spacing(1)};\n `,\n container: css`\n margin-bottom: ${theme.spacing(4)};\n `,\n debugSection: css`\n margin-top: ${theme.spacing(4)};\n `,\n});\n\ntype Props = {\n fields?: DerivedFieldConfig[];\n onChange: (value: DerivedFieldConfig[]) => void;\n};\n\nexport const DerivedFields = ({ fields = [], onChange }: Props) => {\n const theme = useTheme2();\n const styles = getStyles(theme);\n\n const [showDebug, setShowDebug] = useState(false);\n\n const validateName = useCallback(\n (name: string) => {\n return fields.filter((field) => field.name && field.name === name).length <= 1;\n },\n [fields]\n );\n\n return (\n \n }\n >\n
\n {fields.map((field, index) => {\n return (\n {\n const newDerivedFields = [...fields];\n newDerivedFields.splice(index, 1, newField);\n onChange(newDerivedFields);\n }}\n onDelete={() => {\n const newDerivedFields = [...fields];\n newDerivedFields.splice(index, 1);\n onChange(newDerivedFields);\n }}\n validateName={validateName}\n suggestions={[\n {\n value: DataLinkBuiltInVars.valueRaw,\n label: 'Raw value',\n documentation: 'Exact string captured by the regular expression',\n origin: VariableOrigin.Value,\n },\n ]}\n />\n );\n })}\n
\n {\n event.preventDefault();\n const emptyConfig: DerivedFieldConfig = {\n name: '',\n matcherRegex: '',\n urlDisplayLabel: '',\n url: '',\n matcherType: 'regex',\n };\n const newDerivedFields = [...fields, emptyConfig];\n onChange(newDerivedFields);\n }}\n >\n Add\n \n\n {fields.length > 0 && (\n \n )}\n
\n\n {showDebug && (\n
\n \n
\n )}\n
\n \n );\n};\n","import React from 'react';\n\nimport { ConfigDescriptionLink, ConfigSubSection } from '@grafana/experimental';\nimport { config } from '@grafana/runtime';\nimport { Badge, InlineField, InlineFieldRow, Input } from '@grafana/ui';\n\ntype Props = {\n maxLines: string;\n onMaxLinedChange: (value: string) => void;\n predefinedOperations: string;\n onPredefinedOperationsChange: (value: string) => void;\n};\n\nexport const QuerySettings = (props: Props) => {\n const { maxLines, onMaxLinedChange, predefinedOperations, onPredefinedOperationsChange } = props;\n return (\n \n }\n >\n \n Loki queries must contain a limit of the maximum number of lines returned (default: 1000). Increase this\n limit to have a bigger result set for ad-hoc analysis. Decrease this limit if your browser becomes sluggish\n when displaying the log results.\n \n }\n >\n ) => onMaxLinedChange(event.currentTarget.value)}\n width={16}\n placeholder=\"1000\"\n spellCheck={false}\n />\n \n\n {config.featureToggles.lokiPredefinedOperations && (\n \n \n {\n 'Predefined operations are used as an initial state for your queries. They are useful, if you want to unpack, parse or format all log lines. Currently we support only log operations starting with |. For example: | unpack | line_format \"{{.message}}\".'\n }\n \n }\n >\n ) =>\n onPredefinedOperationsChange(event.currentTarget.value)\n }\n width={40}\n placeholder=\"| unpack | line_format\"\n spellCheck={false}\n />\n \n \n \n \n \n )}\n \n );\n};\n","import React, { useCallback } from 'react';\n\nimport { DataSourcePluginOptionsEditorProps, DataSourceSettings } from '@grafana/data';\nimport {\n ConfigSection,\n DataSourceDescription,\n ConnectionSettings,\n Auth,\n convertLegacyAuthProps,\n AdvancedHttpSettings,\n} from '@grafana/experimental';\nimport { config, reportInteraction } from '@grafana/runtime';\nimport { Divider, SecureSocksProxySettings, Stack } from '@grafana/ui';\n\nimport { LokiOptions } from '../types';\n\nimport { AlertingSettings } from './AlertingSettings';\nimport { DerivedFields } from './DerivedFields';\nimport { QuerySettings } from './QuerySettings';\n\nexport type Props = DataSourcePluginOptionsEditorProps;\n\nconst makeJsonUpdater =\n (field: keyof LokiOptions) =>\n (options: DataSourceSettings, value: T): DataSourceSettings => {\n return {\n ...options,\n jsonData: {\n ...options.jsonData,\n [field]: value,\n },\n };\n };\n\nconst setMaxLines = makeJsonUpdater('maxLines');\nconst setPredefinedOperations = makeJsonUpdater('predefinedOperations');\nconst setDerivedFields = makeJsonUpdater('derivedFields');\n\nexport const ConfigEditor = (props: Props) => {\n const { options, onOptionsChange } = props;\n\n const updatePredefinedOperations = useCallback(\n (value: string) => {\n reportInteraction('grafana_loki_predefined_operations_changed', { value });\n onOptionsChange(setPredefinedOperations(options, value));\n },\n [options, onOptionsChange]\n );\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n {config.secureSocksDSProxyEnabled && (\n \n )}\n \n onOptionsChange(setMaxLines(options, value))}\n predefinedOperations={options.jsonData.predefinedOperations || ''}\n onPredefinedOperationsChange={updatePredefinedOperations}\n />\n onOptionsChange(setDerivedFields(options, value))}\n />\n \n \n \n );\n};\n","import { DashboardLoadedEvent, DataSourcePlugin } from '@grafana/data';\nimport { getAppEvents } from '@grafana/runtime';\n\nimport LokiCheatSheet from './components/LokiCheatSheet';\nimport LokiQueryEditorByApp from './components/LokiQueryEditorByApp';\nimport { ConfigEditor } from './configuration/ConfigEditor';\nimport { LokiDatasource } from './datasource';\nimport { onDashboardLoadedHandler } from './tracking';\nimport { LokiQuery } from './types';\n\nexport const plugin = new DataSourcePlugin(LokiDatasource)\n .setQueryEditor(LokiQueryEditorByApp)\n .setConfigEditor(ConfigEditor)\n .setQueryEditorHelp(LokiCheatSheet);\n\n// Subscribe to on dashboard loaded event so that we can track plugin adoption\ngetAppEvents().subscribe>(DashboardLoadedEvent, onDashboardLoadedHandler);\n"],"names":["__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","obj","key","value","__spreadValues","a","b","prop","__spreadProps","AdvancedHttpSettings","config","onChange","className","onCookiesChange","cookies","onTimeoutChange","event","styles","EditorHeader","children","getStyles","theme","FlexItem","grow","shrink","getRandomValues","rnds8","rng","validate","uuid","byteToHex","i","stringify","arr","offset","v4","options","buf","rnds","DEFAULT_EXAMPLES","PREFERRED_LABELS","EXAMPLES_LIMIT","LOGQL_EXAMPLES","LokiCheatSheet","provider","labels","preferredLabel","values","userExamples","expr","onClickExample","onClick","query","hasUserExamples","example","item","__objRest","source","exclude","target","QueryHeaderSwitch","_a","_b","label","inputProps","dashedLabel","switchIdRef","Stack","Switch","editorModes","QueryEditorModeToggle","mode","RadioButtonGroup","Store","def","ret","json","error","errorToThrow","store","LocalStorageValueProvider","props","storageKey","defaultValue","state","setState","onStorageUpdate","v","onSaveToStore","onDeleteFromStore","MAX_LABEL_COUNT","MAX_VALUE_COUNT","MAX_AUTO_SELECT","EMPTY_SELECTOR","buildSelector","selectedLabels","selectedValues","facetLabels","possibleLabels","lastFacetted","possibleValues","existingValues","UnthemedLokiLabelBrowser","selector","name","l","selected","nextValue","updatedFields","status","cb","languageProvider","autoSelect","lastUsedLabels","timeRange","rawLabels","rawValues","streams","searchTerm","validationStatus","LoadingPlaceholder","empty","searchResults","fuzzyMatchResult","fuzzy","Label","Input","index","style","Button","LokiLabelBrowser","LabelBrowserModal","isOpen","onClose","datasource","app","labelsLoaded","setLabelsLoaded","hasLogLabels","setHasLogLabels","LAST_USED_LABELS_KEY","changeQuery","onRunQuery","nextQuery","reportInteractionAndClose","Modal","onLastUsedLabelsSave","onLastUsedLabelsDelete","CONFLICTING_LABEL_FILTER_ERROR_MESSAGE","LabelFilterItem","items","defaultOp","onDelete","onGetLabelNames","onGetLabelValues","invalidLabel","invalidValue","multiValueSeparator","labelNamesMenuOpen","setLabelNamesMenuOpen","labelValuesMenuOpen","setLabelValuesMenuOpen","isMultiSelect","operator","_a2","operators","op","getSelectOptionsFromString","item2","getOptions","labelValues","selectedOptions","isConflicting","isConflictingLabelFilter","id","InlineField","InputGroup","Select","selectors","labelNames","change","changes","change2","val","AccessoryButton","newLabel","operationIsNegative","candidate","MISSING_LABEL_FILTER_ERROR_MESSAGE","LabelFilters","labelsFilters","labelFilterRequired","setItems","onLabelsChange","newItems","newLabels","hasLabelFilter","EditorFieldGroup","EditorField","EditorList","onChangeItem","OperationExplainedBox","title","stepNumber","markdown","OperationsEditorRow","useGetLatest","ref","noop","useControlledState","_ref","initial","_ref$onChange","_React$useState","getLatest","set","updater","updatedState","isControlled","generateBoundingClientRect","x","y","_excluded","virtualElement","defaultConfig","usePopperTooltip","popperOptions","_popperProps$state","_popperProps$state$mo","_popperProps$state$mo2","finalConfig","_extends2","defaultModifiers","finalPopperOptions","triggerRef","setTriggerRef","_React$useState2","tooltipRef","setTooltipRef","_useControlledState","visible","setVisible","timer","_usePopper","usePopper","attributes","popperProps","update","isTriggeredBy","trigger","hideTooltip","showTooltip","toggleTooltip","handleClickOutside","_event$composedPath","_getLatest","preventDefaultAndToggle","isReferenceHidden","setMousePosition","clientX","clientY","observer","getTooltipProps","args","getArrowProps","OperationInfoButton","definition","operation","innerQueryPlaceholder","show","setShow","Portal","getOperationDocs","OperationHeader","onRemove","queryModeller","dragHandleProps","onToggleSwitcher","alternatives","alt","newDef","newParams","changedOp","getOperationParamEditor","paramDef","SelectInputParamEditor","BoolInputParamEditor","SimpleInputParamEditor","AutoSizeInput","getOperationParamId","evt","Checkbox","operationId","selectOptions","option","valueOption","value2","paramIndex","OperationEditorBody","provided","flash","highlight","shouldFlash","useFlash","onParamValueChanged","paramIdx","callParamChangedThenOnChange","onAddRestParam","onRemoveRestParam","restParam","lastParamDef","renderAddRestParamButton","param","Editor","Tooltip","Icon","keepFlash","setKeepFlash","t","operationIndex","OperationEditor","isConflictingOperation","isInvalid","isDragging","snapshot","OperationList","highlightedOp","operations","opsToHighlight","useOperationsHighlight","cascaderOpen","setCascaderOpen","onOperationChange","updatedList","addOptions","category","onAddOperation","operationDef","onDragEnd","result","element","onCascaderBlur","Cascader","isMounted","useMountedState","prevOperations","usePrevious","newOps","newOp","isSameOp","op1","op2","QueryBuilderHints","visualQuery","data","buildVisualQueryFromString","buildDataQueryFromQueryString","buildQueryStringFromDataQuery","hints","setHints","dataQuery","hints2","hint","_c","_d","_b2","_c2","newQuery","newVisualQuery","OperationListExplained","language","onMouseEnter","onMouseLeave","body","RawQuery","EXPLAIN_LABEL_FILTER_CONTENT","LokiQueryBuilderExplained","visQuery","lang","NestedQuery","nestedQuery","showExplain","IconButton","EditorRows","LokiQueryBuilder","NestedQueryList","nestedQueries","onNestedQueryUpdate","TIME_SPAN_TO_TRIGGER_SAMPLES","sampleData","setSampleData","setHighlightedOp","prevQuery","prevTimeRange","onChangeLabels","withTemplateVariableOptions","optionsPromise","forLabel","labelsToConsider","hasEqualityOperation","filter","series","labelsNamesToConsider","onGetSampleData","lokiQuery","range","updateBasedOnChangedTimeRange","updateBasedOnChangedQuery","testIds","EditorRow","otherOperations","queryString","QueryPreview","LokiQueryBuilderContainer","dispatch","stateSlice","exprChanged","onVisQueryChange","visualQueryChange","initialState","action","parseResult","QueryOptionGroup","collapsedInfo","queryStats","toggleOpen","useToggle","Collapse","generateQueryStats","convertUnits","text","suffix","LokiQueryBuilderOptions","maxLines","splitDurationValid","setSplitDurationValid","onQueryTypeChange","onResolutionChange","onChunkRangeChange","onLegendFormatChanged","onMaxLinesChange","e","newMaxLines","onStepChange","queryType","isLogQuery","isValidStep","getCollapsedInfo","Alert","queryTypeLabel","resolutionLabel","LokiQueryCodeEditor","history","lokiFormatQuery","onClickFormatQueryButton","LokiQueryField","QueryPattern","pattern","onPatternSelect","hasNewQueryOption","hasPreviousQuery","selectedPatternName","setSelectedPatternName","Card","QueryPatternsModal","onAddQuery","queries","openTabs","setOpenTabs","selectAsNewQuery","patternType","tabs","queryEditorModeDefaultLocalStorageKey","changeEditorMode","editorMode","getDefaultEditorMode","getQueryWithDefaults","compareTime","time1","time2","shouldUpdateStats","prevQueryType","lokiQueryEditorExplainKey","LokiQueryEditor","parseModalOpen","setParseModalOpen","queryPatternsModalOpen","setQueryPatternsModalOpen","dataIsStale","setDataIsStale","labelBrowserVisible","setLabelBrowserVisible","setQueryStats","explain","setExplain","predefinedOperations","previousTimeRange","previousQueryExpr","previousQueryType","onExplainChange","onEditorModeChange","newEditorMode","onChangeInternal","onClickLabelBrowserButton","stats","ConfirmModal","prevValue","Space","LokiQueryEditorForAlerting","LokiQueryEditorByApp","AlertingSettings","onOptionsChange","ConfigSubSection","ConfigDescriptionLink","DebugSection","derivedFields","debugText","setDebugText","debugFields","makeDebugFields","TextArea","DebugFields","fields","field","testMatch","href","DerivedField","suggestions","validateName","showInternalLink","setShowInternalLink","previousUid","fieldType","setFieldType","handleChange","invalidName","Field","TooltipLabel","type","DataLinkInput","newValue","checked","DataSourcePicker","ds","content","DerivedFields","showDebug","setShowDebug","newField","newDerivedFields","emptyConfig","QuerySettings","onMaxLinedChange","onPredefinedOperationsChange","InlineFieldRow","Badge","makeJsonUpdater","setMaxLines","setPredefinedOperations","setDerivedFields","ConfigEditor","updatePredefinedOperations","DataSourceDescription","Divider","ConnectionSettings","Auth","ConfigSection","SecureSocksProxySettings"],"sourceRoot":""}