/usr/share/grafana/public/app/plugins/datasource/parca/dist
{"version":3,"file":"module.js","mappings":"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","sources":["webpack://parca/external amd \"@grafana/ui\"","webpack://parca/../../../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://parca/external amd \"@emotion/css\"","webpack://parca/external amd \"lodash\"","webpack://parca/external amd \"rxjs\"","webpack://parca/external amd \"module\"","webpack://parca/external amd \"@grafana/runtime\"","webpack://parca/../../../../../node_modules/react/jsx-runtime.js","webpack://parca/external amd \"@grafana/data\"","webpack://parca/external amd \"react\"","webpack://parca/webpack/bootstrap","webpack://parca/webpack/runtime/compat get default export","webpack://parca/webpack/runtime/define property getters","webpack://parca/webpack/runtime/hasOwnProperty shorthand","webpack://parca/webpack/runtime/make namespace object","webpack://parca/webpack/runtime/publicPath","webpack://parca/./node_modules/grafana-public-path.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/DataSourceDescription.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/ConfigSection/ConfigSection.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/Auth/styles.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/Auth/auth-method/BasicAuth.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/ConfigSection/ConfigSubSection.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/Auth/types.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/Auth/tls/TLSSettingsSection.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/Auth/tls/SkipTLSVerification.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/Auth/tls/TLSSettings.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeader.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/Auth/Auth.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/Auth/utils.js","webpack://parca/../../../../../node_modules/@grafana/plugin-ui/dist/esm/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js","webpack://parca/./ConfigEditor.tsx","webpack://parca/../../../../../node_modules/react-use/esm/useEffectOnce.js","webpack://parca/../../../../../node_modules/react-use/esm/useMount.js","webpack://parca/./QueryEditor/Stack.tsx","webpack://parca/./QueryEditor/EditorRow.tsx","webpack://parca/./QueryEditor/EditorRows.tsx","webpack://parca/../../../../../node_modules/react-use/esm/useLatest.js","webpack://parca/./lang/index.ts","webpack://parca/./lang/lang.ts","webpack://parca/./QueryEditor/autocomplete.ts","webpack://parca/./QueryEditor/LabelsEditor.tsx","webpack://parca/../../../../../node_modules/react-use/esm/useToggle.js","webpack://parca/./QueryEditor/QueryOptions.tsx","webpack://parca/./QueryEditor/QueryEditor.tsx","webpack://parca/./dataquery.gen.ts","webpack://parca/./datasource.ts","webpack://parca/./module.ts"],"sourcesContent":["module.exports = __WEBPACK_EXTERNAL_MODULE__7__;","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__89__;","module.exports = __WEBPACK_EXTERNAL_MODULE__241__;","module.exports = __WEBPACK_EXTERNAL_MODULE__269__;","module.exports = __WEBPACK_EXTERNAL_MODULE__308__;","module.exports = __WEBPACK_EXTERNAL_MODULE__531__;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__781__;","module.exports = __WEBPACK_EXTERNAL_MODULE__959__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"public/plugins/parca/\";","\n import amdMetaModule from 'amd-module';\n\n __webpack_public_path__ =\n amdMetaModule && amdMetaModule.uri\n ? amdMetaModule.uri.slice(0, amdMetaModule.uri.lastIndexOf('/') + 1)\n : 'public/plugins/parca/';\n ","import React__default from 'react';\nimport { css, cx } from '@emotion/css';\nimport { useTheme2 } from '@grafana/ui';\n\nconst DataSourceDescription = ({ dataSourceName, docsLink, hasRequiredFields = true, className }) => {\n const theme = useTheme2();\n const styles = {\n container: css({\n p: {\n margin: 0\n },\n \"p + p\": {\n marginTop: theme.spacing(2)\n }\n }),\n text: css({\n ...theme.typography.body,\n color: theme.colors.text.secondary,\n a: css({\n color: theme.colors.text.link,\n textDecoration: \"underline\",\n \"&:hover\": {\n textDecoration: \"none\"\n }\n })\n })\n };\n return /* @__PURE__ */ React__default.createElement(\"div\", { className: cx(styles.container, className) }, /* @__PURE__ */ React__default.createElement(\"p\", { className: styles.text }, \"Before you can use the \", dataSourceName, \" data source, you must configure it below or in the config file. For detailed instructions,\", \" \", /* @__PURE__ */ React__default.createElement(\"a\", { href: docsLink, target: \"_blank\", rel: \"noreferrer\" }, \"view the documentation\"), \".\"), hasRequiredFields && /* @__PURE__ */ React__default.createElement(\"p\", { className: styles.text }, /* @__PURE__ */ React__default.createElement(\"i\", null, \"Fields marked with * are required\")));\n};\n\nexport { DataSourceDescription };\n//# sourceMappingURL=DataSourceDescription.js.map\n","import React__default, { useState } from 'react';\nimport { css } from '@emotion/css';\nimport { useTheme2, IconButton } from '@grafana/ui';\n\nconst GenericConfigSection = ({\n children,\n title,\n description,\n isCollapsible = false,\n isInitiallyOpen = true,\n kind = \"section\",\n className\n}) => {\n const { colors, typography, spacing } = useTheme2();\n const [isOpen, setIsOpen] = useState(isCollapsible ? isInitiallyOpen : true);\n const iconName = isOpen ? \"angle-up\" : \"angle-down\";\n const isSubSection = kind === \"sub-section\";\n const collapsibleButtonAriaLabel = `${isOpen ? \"Collapse\" : \"Expand\"} section ${title}`;\n const styles = {\n header: css({\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\"\n }),\n title: css({\n margin: 0\n }),\n subtitle: css({\n margin: 0,\n fontWeight: typography.fontWeightRegular\n }),\n descriptionText: css({\n marginTop: spacing(isSubSection ? 0.25 : 0.5),\n marginBottom: 0,\n ...typography.bodySmall,\n color: colors.text.secondary\n }),\n content: css({\n marginTop: spacing(2)\n })\n };\n return /* @__PURE__ */ React__default.createElement(\"div\", { className }, /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.header }, kind === \"section\" ? /* @__PURE__ */ React__default.createElement(\"h3\", { className: styles.title }, title) : /* @__PURE__ */ React__default.createElement(\"h6\", { className: styles.subtitle }, title), isCollapsible && /* @__PURE__ */ React__default.createElement(\n IconButton,\n {\n name: iconName,\n onClick: () => setIsOpen(!isOpen),\n type: \"button\",\n size: \"xl\",\n \"aria-label\": collapsibleButtonAriaLabel\n }\n )), description && /* @__PURE__ */ React__default.createElement(\"p\", { className: styles.descriptionText }, description), isOpen && /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.content }, children));\n};\n\nexport { GenericConfigSection };\n//# sourceMappingURL=GenericConfigSection.js.map\n","import React__default from 'react';\nimport { GenericConfigSection } from './GenericConfigSection.js';\n\nconst ConfigSection = ({ children, ...props }) => {\n return /* @__PURE__ */ React__default.createElement(GenericConfigSection, { ...props, kind: \"section\" }, children);\n};\n\nexport { ConfigSection };\n//# sourceMappingURL=ConfigSection.js.map\n","import React__default from 'react';\nimport { css, cx } from '@emotion/css';\nimport { InlineField, Input } from '@grafana/ui';\nimport { ConfigSection } from '../ConfigSection/ConfigSection.js';\nimport '@grafana/data';\n\nconst ConnectionSettings = ({\n config,\n onChange,\n description,\n urlPlaceholder,\n urlTooltip,\n urlLabel,\n className\n}) => {\n const isValidUrl = config.url !== undefined && /^(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?$/.test(config.url);\n const styles = {\n container: css({\n maxWidth: 578\n })\n };\n return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(ConfigSection, { title: \"Connection\", description, className: cx(styles.container, className) }, /* @__PURE__ */ React__default.createElement(\n InlineField,\n {\n htmlFor: \"connection-url\",\n label: urlLabel || \"URL\",\n labelWidth: 24,\n tooltip: urlTooltip || /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, \"Specify a complete HTTP URL\", /* @__PURE__ */ React__default.createElement(\"br\", null), \"(for example https://example.com:8080)\"),\n grow: true,\n disabled: config.readOnly,\n required: true,\n invalid: !isValidUrl && !config.readOnly,\n error: isValidUrl ? \"\" : \"Please enter a valid URL\",\n interactive: true\n },\n /* @__PURE__ */ React__default.createElement(\n Input,\n {\n id: \"connection-url\",\n \"aria-label\": \"Data source connection URL\",\n onChange: (event) => onChange({\n ...config,\n url: event.currentTarget.value\n }),\n value: config.url || \"\",\n placeholder: urlPlaceholder || \"URL\"\n }\n )\n )));\n};\n\nexport { ConnectionSettings };\n//# sourceMappingURL=ConnectionSettings.js.map\n","import { css } from '@emotion/css';\n\nconst useCommonStyles = () => {\n return {\n inlineFieldNoMarginRight: css({\n marginRight: 0\n }),\n // This is dirty hack to make configured secret input grow\n inlineFieldWithSecret: css({\n '[class$=\"layoutChildrenWrapper\"]:first-child': {\n flexGrow: 1\n }\n })\n };\n};\n\nexport { useCommonStyles };\n//# sourceMappingURL=styles.js.map\n","import React__default from 'react';\nimport { css, cx } from '@emotion/css';\nimport { InlineField, Input, SecretInput } from '@grafana/ui';\nimport { useCommonStyles } from '../styles.js';\n\nconst BasicAuth = ({\n user,\n passwordConfigured,\n userLabel = \"User\",\n userTooltip = \"The username of the data source account\",\n userPlaceholder = \"User\",\n passwordLabel = \"Password\",\n passwordTooltip = \"The password of the data source account\",\n passwordPlaceholder = \"Password\",\n onUserChange,\n onPasswordChange,\n onPasswordReset,\n readOnly\n}) => {\n const commonStyles = useCommonStyles();\n const styles = {\n lastInlineField: css({\n marginBottom: 0\n })\n };\n return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(\n InlineField,\n {\n className: commonStyles.inlineFieldNoMarginRight,\n label: userLabel,\n labelWidth: 24,\n tooltip: userTooltip,\n required: true,\n htmlFor: \"basic-auth-user-input\",\n interactive: true,\n grow: true,\n disabled: readOnly\n },\n /* @__PURE__ */ React__default.createElement(\n Input,\n {\n id: \"basic-auth-user-input\",\n placeholder: userPlaceholder,\n value: user,\n onChange: (e) => onUserChange(e.currentTarget.value),\n required: true\n }\n )\n ), /* @__PURE__ */ React__default.createElement(\n InlineField,\n {\n className: cx(\n commonStyles.inlineFieldNoMarginRight,\n commonStyles.inlineFieldWithSecret,\n styles.lastInlineField\n ),\n label: passwordLabel,\n labelWidth: 24,\n tooltip: passwordTooltip,\n required: true,\n htmlFor: \"basic-auth-password-input\",\n interactive: true,\n grow: true,\n disabled: readOnly\n },\n /* @__PURE__ */ React__default.createElement(\n SecretInput,\n {\n id: \"basic-auth-password-input\",\n isConfigured: passwordConfigured,\n onReset: readOnly ? () => {\n } : onPasswordReset,\n placeholder: passwordPlaceholder,\n onChange: (e) => onPasswordChange(e.currentTarget.value),\n required: true\n }\n )\n ));\n};\n\nexport { BasicAuth };\n//# sourceMappingURL=BasicAuth.js.map\n","import React__default from 'react';\nimport { GenericConfigSection } from './GenericConfigSection.js';\n\nconst ConfigSubSection = ({ children, ...props }) => {\n return /* @__PURE__ */ React__default.createElement(GenericConfigSection, { ...props, kind: \"sub-section\" }, children);\n};\n\nexport { ConfigSubSection };\n//# sourceMappingURL=ConfigSubSection.js.map\n","import 'react';\n\nvar AuthMethod = /* @__PURE__ */ ((AuthMethod2) => {\n AuthMethod2[\"NoAuth\"] = \"NoAuth\";\n AuthMethod2[\"BasicAuth\"] = \"BasicAuth\";\n AuthMethod2[\"OAuthForward\"] = \"OAuthForward\";\n AuthMethod2[\"CrossSiteCredentials\"] = \"CrossSiteCredentials\";\n return AuthMethod2;\n})(AuthMethod || {});\n\nexport { AuthMethod };\n//# sourceMappingURL=types.js.map\n","import React__default, { useState, useMemo } from 'react';\nimport { css } from '@emotion/css';\nimport { useTheme2, Field, Select } from '@grafana/ui';\nimport '@grafana/data';\nimport { BasicAuth } from './BasicAuth.js';\nimport { ConfigSubSection } from '../../ConfigSection/ConfigSubSection.js';\nimport { AuthMethod } from '../types.js';\n\nconst defaultOptions = {\n [AuthMethod.BasicAuth]: {\n label: \"Basic authentication\",\n value: AuthMethod.BasicAuth,\n description: \"Authenticate with your data source username and password\"\n },\n [AuthMethod.CrossSiteCredentials]: {\n label: \"Enable cross-site access control requests\",\n value: AuthMethod.CrossSiteCredentials,\n description: \"Allow cross-site Access-Control requests with your existing credentials and cookies. This enables the server to authenticate the user and perform authorized requests on their behalf on other domains.\"\n },\n [AuthMethod.OAuthForward]: {\n label: \"Forward OAuth Identity\",\n value: AuthMethod.OAuthForward,\n description: \"Forward the OAuth access token (and if available: the OIDC ID token) of the user querying to the data source\"\n },\n [AuthMethod.NoAuth]: {\n label: \"No Authentication\",\n value: AuthMethod.NoAuth,\n description: \"Data source is available without authentication\"\n }\n};\nconst AuthMethodSettings = ({\n selectedMethod,\n mostCommonMethod,\n visibleMethods: visibleMethodsFromProps,\n defaultOptionsOverrides,\n customMethods,\n onAuthMethodSelect,\n basicAuth,\n readOnly\n}) => {\n var _a, _b, _c, _d;\n const [authMethodChanged, setAuthMethodChanged] = useState(false);\n const { colors, spacing } = useTheme2();\n const visibleMethods = useMemo(\n () => {\n var _a2;\n return visibleMethodsFromProps != null ? visibleMethodsFromProps : [\n AuthMethod.BasicAuth,\n AuthMethod.OAuthForward,\n AuthMethod.NoAuth,\n ...(_a2 = customMethods == null ? undefined : customMethods.map((m) => m.id)) != null ? _a2 : []\n ];\n },\n [customMethods, visibleMethodsFromProps]\n );\n const hasSelect = visibleMethods.length > 1;\n const preparedOptions = useMemo(() => {\n var _a2;\n const customOptions = (_a2 = customMethods == null ? undefined : customMethods.reduce((acc, method) => {\n acc[method.id] = {\n label: method.label,\n value: method.id,\n description: method.description\n };\n return acc;\n }, {})) != null ? _a2 : {};\n const preparedDefaultOptions = {};\n let k;\n for (k in defaultOptions) {\n preparedDefaultOptions[k] = {\n ...defaultOptions[k],\n ...defaultOptionsOverrides == null ? undefined : defaultOptionsOverrides[k]\n };\n }\n const allOptions = {\n ...customOptions,\n ...preparedDefaultOptions\n };\n return visibleMethods.filter((method) => Boolean(allOptions[method])).map((method) => {\n const option = allOptions[method];\n if (method === mostCommonMethod && hasSelect) {\n return {\n ...option,\n label: `${option.label} (most common)`\n };\n }\n return option;\n });\n }, [visibleMethods, customMethods, defaultOptionsOverrides, mostCommonMethod, hasSelect]);\n let selected = selectedMethod;\n if (!hasSelect) {\n selected = visibleMethods[0];\n } else if (selectedMethod === AuthMethod.NoAuth && mostCommonMethod && !authMethodChanged) {\n selected = mostCommonMethod;\n }\n let AuthFieldsComponent = null;\n if (selected === AuthMethod.BasicAuth && basicAuth) {\n AuthFieldsComponent = /* @__PURE__ */ React__default.createElement(BasicAuth, { ...basicAuth, readOnly });\n } else if (selected.startsWith(\"custom-\")) {\n AuthFieldsComponent = (_b = (_a = customMethods == null ? undefined : customMethods.find((m) => m.id === selected)) == null ? undefined : _a.component) != null ? _b : null;\n }\n const title = hasSelect ? \"Authentication methods\" : (_c = preparedOptions[0].label) != null ? _c : \"\";\n const description = hasSelect ? \"Choose an authentication method to access the data source\" : (_d = preparedOptions[0].description) != null ? _d : \"\";\n const styles = {\n authMethods: css({\n marginTop: spacing(2.5),\n ...hasSelect && {\n padding: spacing(2),\n border: `1px solid ${colors.border.weak}`\n }\n }),\n selectedMethodFields: css({\n marginTop: spacing(1.5)\n })\n };\n return /* @__PURE__ */ React__default.createElement(ConfigSubSection, { title, description }, /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.authMethods }, hasSelect && /* @__PURE__ */ React__default.createElement(Field, { label: \"Authentication method\" }, /* @__PURE__ */ React__default.createElement(\n Select,\n {\n inputId: \"auth-method-select\",\n options: preparedOptions,\n value: selected,\n onChange: (option) => {\n setAuthMethodChanged(true);\n onAuthMethodSelect(option.value);\n },\n disabled: readOnly\n }\n )), AuthFieldsComponent && /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.selectedMethodFields }, AuthFieldsComponent)));\n};\n\nexport { AuthMethodSettings };\n//# sourceMappingURL=AuthMethodSettings.js.map\n","import React__default from 'react';\nimport { css } from '@emotion/css';\nimport { useTheme2, Checkbox, Tooltip, Icon } from '@grafana/ui';\n\nconst TLSSettingsSection = ({\n children,\n enabled,\n label,\n tooltipText,\n onToggle,\n readOnly\n}) => {\n const { colors, spacing } = useTheme2();\n const styles = {\n container: css({\n marginTop: 3\n }),\n checkboxContainer: css({\n display: \"flex\",\n alignItems: \"center\"\n }),\n infoIcon: css({\n marginTop: -2,\n marginLeft: 5,\n color: colors.text.secondary\n }),\n content: css({\n margin: spacing(1, 0, 2, 3)\n })\n };\n return /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.container }, /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.checkboxContainer }, /* @__PURE__ */ React__default.createElement(Checkbox, { value: enabled, label, onChange: () => onToggle(!enabled), disabled: readOnly }), /* @__PURE__ */ React__default.createElement(Tooltip, { placement: \"top\", content: tooltipText, interactive: true }, /* @__PURE__ */ React__default.createElement(Icon, { name: \"info-circle\", className: styles.infoIcon, size: \"sm\" }))), enabled && children && /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.content }, children));\n};\n\nexport { TLSSettingsSection };\n//# sourceMappingURL=TLSSettingsSection.js.map\n","import React__default from 'react';\nimport { cx } from '@emotion/css';\nimport { InlineField, SecretTextArea } from '@grafana/ui';\nimport { TLSSettingsSection } from './TLSSettingsSection.js';\nimport { useCommonStyles } from '../styles.js';\n\nconst SelfSignedCertificate = ({\n enabled,\n certificateConfigured,\n onToggle,\n onCertificateChange,\n onCertificateReset,\n tooltips,\n readOnly\n}) => {\n var _a;\n const commonStyles = useCommonStyles();\n return /* @__PURE__ */ React__default.createElement(\n TLSSettingsSection,\n {\n enabled,\n label: \"Add self-signed certificate\",\n tooltipText: \"Add your own Certificate Authority (CA) certificate on top of one generated by the certificate authorities for additional security measures\",\n onToggle: (newEnabled) => onToggle(newEnabled),\n readOnly\n },\n /* @__PURE__ */ React__default.createElement(\n InlineField,\n {\n label: \"CA Certificate\",\n labelWidth: 24,\n tooltip: (_a = tooltips == null ? undefined : tooltips.certificateLabel) != null ? _a : \"Your self-signed certificate\",\n required: true,\n htmlFor: \"self-signed-certificate-input\",\n interactive: true,\n grow: true,\n className: cx(commonStyles.inlineFieldNoMarginRight, commonStyles.inlineFieldWithSecret),\n disabled: readOnly\n },\n /* @__PURE__ */ React__default.createElement(\n SecretTextArea,\n {\n id: \"self-signed-certificate-input\",\n isConfigured: certificateConfigured,\n onChange: (e) => onCertificateChange(e.currentTarget.value),\n onReset: readOnly ? () => {\n } : onCertificateReset,\n placeholder: \"Begins with --- BEGIN CERTIFICATE ---\",\n rows: 6,\n required: true\n }\n )\n )\n );\n};\n\nexport { SelfSignedCertificate };\n//# sourceMappingURL=SelfSignedCertificate.js.map\n","import React__default from 'react';\nimport { cx } from '@emotion/css';\nimport { InlineField, Input, SecretTextArea } from '@grafana/ui';\nimport { TLSSettingsSection } from './TLSSettingsSection.js';\nimport { useCommonStyles } from '../styles.js';\n\nconst TLSClientAuth = ({\n enabled,\n serverName,\n clientCertificateConfigured,\n clientKeyConfigured,\n onToggle,\n onServerNameChange,\n onClientCertificateChange,\n onClientKeyChange,\n onClientCertificateReset,\n onClientKeyReset,\n tooltips,\n readOnly\n}) => {\n var _a, _b, _c;\n const commonStyles = useCommonStyles();\n return /* @__PURE__ */ React__default.createElement(\n TLSSettingsSection,\n {\n enabled,\n label: \"TLS Client Authentication\",\n tooltipText: \"Validate using TLS client authentication, in which the server authenticates the client\",\n onToggle: (newEnabled) => onToggle(newEnabled),\n readOnly\n },\n /* @__PURE__ */ React__default.createElement(\n InlineField,\n {\n label: \"ServerName\",\n labelWidth: 24,\n tooltip: (_a = tooltips == null ? undefined : tooltips.serverNameLabel) != null ? _a : \"A Servername is used to verify the hostname on the returned certificate\",\n required: true,\n htmlFor: \"client-auth-servername-input\",\n interactive: true,\n grow: true,\n className: commonStyles.inlineFieldNoMarginRight,\n disabled: readOnly\n },\n /* @__PURE__ */ React__default.createElement(\n Input,\n {\n id: \"client-auth-servername-input\",\n placeholder: \"domain.example.com\",\n value: serverName,\n onChange: (e) => onServerNameChange(e.currentTarget.value),\n required: true\n }\n )\n ),\n /* @__PURE__ */ React__default.createElement(\n InlineField,\n {\n label: \"Client Certificate\",\n labelWidth: 24,\n tooltip: (_b = tooltips == null ? undefined : tooltips.certificateLabel) != null ? _b : \"The client certificate can be generated from a Certificate Authority or be self-signed\",\n required: true,\n htmlFor: \"client-auth-client-certificate-input\",\n interactive: true,\n grow: true,\n className: cx(commonStyles.inlineFieldNoMarginRight, commonStyles.inlineFieldWithSecret),\n disabled: readOnly\n },\n /* @__PURE__ */ React__default.createElement(\n SecretTextArea,\n {\n id: \"client-auth-client-certificate-input\",\n isConfigured: clientCertificateConfigured,\n onChange: (e) => onClientCertificateChange(e.currentTarget.value),\n onReset: readOnly ? () => {\n } : onClientCertificateReset,\n placeholder: \"Begins with --- BEGIN CERTIFICATE ---\",\n rows: 6,\n required: true\n }\n )\n ),\n /* @__PURE__ */ React__default.createElement(\n InlineField,\n {\n label: \"Client Key\",\n labelWidth: 24,\n tooltip: (_c = tooltips == null ? undefined : tooltips.keyLabel) != null ? _c : \"The client key can be generated from a Certificate Authority or be self-signed\",\n required: true,\n htmlFor: \"client-auth-client-key-input\",\n interactive: true,\n grow: true,\n className: cx(commonStyles.inlineFieldNoMarginRight, commonStyles.inlineFieldWithSecret),\n disabled: readOnly\n },\n /* @__PURE__ */ React__default.createElement(\n SecretTextArea,\n {\n id: \"client-auth-client-key-input\",\n isConfigured: clientKeyConfigured,\n onChange: (e) => onClientKeyChange(e.currentTarget.value),\n onReset: readOnly ? () => {\n } : onClientKeyReset,\n placeholder: `Begins with --- RSA PRIVATE KEY CERTIFICATE ---`,\n rows: 6,\n required: true\n }\n )\n )\n );\n};\n\nexport { TLSClientAuth };\n//# sourceMappingURL=TLSClientAuth.js.map\n","import React__default from 'react';\nimport { TLSSettingsSection } from './TLSSettingsSection.js';\n\nconst SkipTLSVerification = ({ enabled, onToggle, readOnly }) => {\n return /* @__PURE__ */ React__default.createElement(\n TLSSettingsSection,\n {\n enabled,\n label: \"Skip TLS certificate validation\",\n tooltipText: \"Skipping TLS certificate validation is not recommended unless absolutely necessary or for testing\",\n onToggle: (newEnabled) => onToggle(newEnabled),\n readOnly\n }\n );\n};\n\nexport { SkipTLSVerification };\n//# sourceMappingURL=SkipTLSVerification.js.map\n","import React__default from 'react';\nimport { css } from '@emotion/css';\nimport { useTheme2 } from '@grafana/ui';\nimport { SelfSignedCertificate } from './SelfSignedCertificate.js';\nimport { TLSClientAuth } from './TLSClientAuth.js';\nimport { SkipTLSVerification } from './SkipTLSVerification.js';\nimport { ConfigSubSection } from '../../ConfigSection/ConfigSubSection.js';\nimport '@grafana/data';\n\nconst TLSSettings = ({ selfSignedCertificate, TLSClientAuth: TLSClientAuth$1, skipTLSVerification, readOnly }) => {\n const { spacing } = useTheme2();\n const styles = {\n container: css({\n marginTop: spacing(3)\n })\n };\n return /* @__PURE__ */ React__default.createElement(\n ConfigSubSection,\n {\n className: styles.container,\n title: \"TLS settings\",\n description: \"Additional security measures that can be applied on top of authentication\"\n },\n /* @__PURE__ */ React__default.createElement(SelfSignedCertificate, { ...selfSignedCertificate, readOnly }),\n /* @__PURE__ */ React__default.createElement(TLSClientAuth, { ...TLSClientAuth$1, readOnly }),\n /* @__PURE__ */ React__default.createElement(SkipTLSVerification, { ...skipTLSVerification, readOnly })\n );\n};\n\nexport { TLSSettings };\n//# sourceMappingURL=TLSSettings.js.map\n","import React__default from 'react';\nimport { css, cx } from '@emotion/css';\nimport { useTheme2, InlineFieldRow, InlineField, Input, SecretInput, IconButton } from '@grafana/ui';\nimport { useCommonStyles } from '../styles.js';\n\nconst CustomHeader = ({ header, onChange, onBlur, onDelete, readOnly }) => {\n const { spacing } = useTheme2();\n const commonStyles = useCommonStyles();\n const styles = {\n container: css({\n alignItems: \"center\"\n }),\n input: css({\n minWidth: \"100%\"\n }),\n headerNameField: css({\n width: \"40%\",\n marginRight: 0,\n paddingRight: spacing(1)\n }),\n headerValueField: css({\n width: \"45%\",\n marginRight: 0\n }),\n removeHeaderBtn: css({\n margin: `0 0 3px 10px`\n })\n };\n return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(InlineFieldRow, { className: styles.container }, /* @__PURE__ */ React__default.createElement(\n InlineField,\n {\n label: \"Header\",\n labelWidth: 9,\n grow: true,\n className: styles.headerNameField,\n htmlFor: `custom-header-${header.id}-name-input`,\n disabled: readOnly\n },\n /* @__PURE__ */ React__default.createElement(\n Input,\n {\n id: `custom-header-${header.id}-name-input`,\n placeholder: \"X-Custom-Header\",\n value: header.name,\n width: 12,\n onChange: (e) => onChange({ ...header, name: e.currentTarget.value }),\n onBlur,\n className: styles.input\n }\n )\n ), /* @__PURE__ */ React__default.createElement(\n InlineField,\n {\n label: \"Value\",\n labelWidth: 9,\n grow: true,\n className: cx(commonStyles.inlineFieldWithSecret, styles.headerValueField),\n htmlFor: `custom-header-${header.id}-value-input`,\n disabled: readOnly\n },\n /* @__PURE__ */ React__default.createElement(\n SecretInput,\n {\n id: `custom-header-${header.id}-value-input`,\n isConfigured: header.configured,\n placeholder: \"Header value\",\n value: header.value,\n width: 12,\n onChange: (e) => onChange({ ...header, value: e.currentTarget.value }),\n onReset: readOnly ? () => {\n } : () => onChange({ ...header, configured: false, value: \"\" }),\n onBlur,\n className: styles.input\n }\n )\n ), /* @__PURE__ */ React__default.createElement(\n IconButton,\n {\n name: \"trash-alt\",\n tooltip: \"Remove header\",\n tooltipPlacement: \"top\",\n className: styles.removeHeaderBtn,\n onClick: onDelete,\n type: \"button\",\n disabled: readOnly\n }\n )));\n};\n\nexport { CustomHeader };\n//# sourceMappingURL=CustomHeader.js.map\n","import React__default, { useState, useEffect } from 'react';\nimport { css } from '@emotion/css';\nimport { useTheme2, Button } from '@grafana/ui';\nimport { CustomHeader } from './CustomHeader.js';\nimport { ConfigSubSection } from '../../ConfigSection/ConfigSubSection.js';\nimport '@grafana/data';\n\nconst CustomHeaders = ({ headers: headersFromProps, onChange, readOnly }) => {\n const { spacing } = useTheme2();\n const [headers, setHeaders] = useState(\n headersFromProps.map((header) => ({\n ...header,\n id: uniqueId(),\n value: \"\"\n }))\n );\n useEffect(() => {\n setHeaders((headers2) => {\n let changed = false;\n const newHeaders = headers2.map((header) => {\n var _a;\n const configured = (_a = headersFromProps.find((h) => h.name === header.name)) == null ? undefined : _a.configured;\n if (typeof configured !== \"undefined\" && header.configured !== configured) {\n changed = true;\n return { ...header, configured };\n }\n return header;\n });\n if (changed) {\n return newHeaders;\n }\n return headers2;\n });\n }, [headersFromProps]);\n const onHeaderAdd = () => {\n setHeaders([...headers, { id: uniqueId(), name: \"\", value: \"\", configured: false }]);\n };\n const onHeaderChange = (id, header) => {\n setHeaders(headers.map((h) => h.id === id ? { ...header } : h));\n };\n const onHeaderDelete = (id) => {\n const index = headers.findIndex((h) => h.id === id);\n if (index === -1) {\n return;\n }\n const newHeaders = [...headers];\n newHeaders.splice(index, 1);\n setHeaders(newHeaders);\n onChange(\n newHeaders.map(({ name, value, configured }) => ({\n name,\n value,\n configured\n }))\n );\n };\n const onBlur = () => {\n onChange(\n headers.map(({ name, value, configured }) => ({\n name,\n value,\n configured\n }))\n );\n };\n const styles = {\n container: css({\n marginTop: spacing(3)\n }),\n addHeaderButton: css({\n marginTop: spacing(1.5)\n })\n };\n return /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.container }, /* @__PURE__ */ React__default.createElement(\n ConfigSubSection,\n {\n title: \"HTTP headers\",\n description: \"Pass along additional context and metadata about the request/response\",\n isCollapsible: true,\n isInitiallyOpen: headers.length > 0\n },\n /* @__PURE__ */ React__default.createElement(\"div\", null, headers.map((header) => /* @__PURE__ */ React__default.createElement(\n CustomHeader,\n {\n key: header.id,\n header,\n onChange: (header2) => onHeaderChange(header2.id, header2),\n onDelete: () => onHeaderDelete(header.id),\n onBlur,\n readOnly\n }\n ))),\n /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.addHeaderButton }, /* @__PURE__ */ React__default.createElement(Button, { icon: \"plus\", variant: \"secondary\", fill: \"outline\", onClick: onHeaderAdd, disabled: readOnly }, headers.length === 0 ? \"Add header\" : \"Add another header\"))\n ));\n};\nfunction uniqueId() {\n return Math.random().toString(16).slice(2);\n}\n\nexport { CustomHeaders };\n//# sourceMappingURL=CustomHeaders.js.map\n","import React__default from 'react';\nimport { css } from '@emotion/css';\nimport { AuthMethodSettings } from './auth-method/AuthMethodSettings.js';\nimport { TLSSettings } from './tls/TLSSettings.js';\nimport '@grafana/ui';\nimport { CustomHeaders } from './custom-headers/CustomHeaders.js';\nimport { ConfigSection } from '../ConfigSection/ConfigSection.js';\nimport '@grafana/data';\n\nconst Auth = ({\n selectedMethod,\n mostCommonMethod,\n visibleMethods,\n defaultOptionsOverrides,\n customMethods,\n onAuthMethodSelect,\n basicAuth,\n TLS,\n customHeaders,\n readOnly = false\n}) => {\n const styles = {\n container: css({\n maxWidth: 578\n })\n };\n return /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.container }, /* @__PURE__ */ React__default.createElement(ConfigSection, { title: \"Authentication\" }, /* @__PURE__ */ React__default.createElement(\n AuthMethodSettings,\n {\n selectedMethod,\n mostCommonMethod,\n customMethods,\n visibleMethods,\n defaultOptionsOverrides,\n onAuthMethodSelect,\n basicAuth,\n readOnly\n }\n ), TLS && /* @__PURE__ */ React__default.createElement(TLSSettings, { ...TLS, readOnly }), customHeaders && /* @__PURE__ */ React__default.createElement(CustomHeaders, { ...customHeaders, readOnly })));\n};\n\nexport { Auth };\n//# sourceMappingURL=Auth.js.map\n","import 'react';\nimport '@emotion/css';\nimport { AuthMethod } from './types.js';\nimport './auth-method/AuthMethodSettings.js';\nimport '@grafana/ui';\nimport '@grafana/data';\n\nconst headerNamePrefix = \"httpHeaderName\";\nconst headerValuePrefix = \"httpHeaderValue\";\nfunction convertLegacyAuthProps({\n config,\n onChange\n}) {\n const props = {\n selectedMethod: getSelectedMethod(config),\n onAuthMethodSelect: getOnAuthMethodSelectHandler(config, onChange),\n basicAuth: getBasicAuthProps(config, onChange),\n TLS: getTLSProps(config, onChange),\n customHeaders: getCustomHeaders(config, onChange),\n readOnly: config.readOnly\n };\n return props;\n}\nfunction getSelectedMethod(config) {\n if (config.basicAuth) {\n return AuthMethod.BasicAuth;\n }\n if (config.withCredentials) {\n return AuthMethod.CrossSiteCredentials;\n }\n if (config.jsonData.oauthPassThru) {\n return AuthMethod.OAuthForward;\n }\n return AuthMethod.NoAuth;\n}\nfunction getOnAuthMethodSelectHandler(config, onChange) {\n return (method) => {\n onChange({\n ...config,\n basicAuth: method === AuthMethod.BasicAuth,\n withCredentials: method === AuthMethod.CrossSiteCredentials,\n jsonData: {\n ...config.jsonData,\n oauthPassThru: method === AuthMethod.OAuthForward\n }\n });\n };\n}\nfunction getBasicAuthProps(config, onChange) {\n return {\n user: config.basicAuthUser,\n passwordConfigured: config.secureJsonFields.basicAuthPassword,\n onUserChange: (user) => onChange({ ...config, basicAuthUser: user }),\n onPasswordChange: (password) => onChange({\n ...config,\n secureJsonData: {\n ...config.secureJsonData,\n basicAuthPassword: password\n }\n }),\n onPasswordReset: () => onChange({\n ...config,\n secureJsonData: { ...config.secureJsonData, basicAuthPassword: \"\" },\n secureJsonFields: {\n ...config.secureJsonFields,\n basicAuthPassword: false\n }\n })\n };\n}\nfunction getTLSProps(config, onChange) {\n var _a, _b, _c;\n return {\n selfSignedCertificate: {\n enabled: Boolean(config.jsonData.tlsAuthWithCACert),\n certificateConfigured: !!((_a = config.secureJsonFields) == null ? undefined : _a.tlsCACert),\n onToggle: (enabled) => enabled ? onChange({\n ...config,\n jsonData: { ...config.jsonData, tlsAuthWithCACert: enabled }\n }) : onChange({\n ...config,\n jsonData: { ...config.jsonData, tlsAuthWithCACert: enabled },\n secureJsonData: { ...config.secureJsonData, tlsCACert: \"\" },\n secureJsonFields: { ...config.secureJsonFields, tlsCACert: false }\n }),\n onCertificateChange: (certificate) => onChange({\n ...config,\n secureJsonData: { ...config.secureJsonData, tlsCACert: certificate }\n }),\n onCertificateReset: () => onChange({\n ...config,\n secureJsonData: { ...config.secureJsonData, tlsCACert: \"\" },\n secureJsonFields: { ...config.secureJsonFields, tlsCACert: false }\n })\n },\n TLSClientAuth: {\n enabled: config.jsonData.tlsAuth,\n serverName: config.jsonData.serverName,\n clientCertificateConfigured: !!((_b = config.secureJsonFields) == null ? undefined : _b.tlsClientCert),\n clientKeyConfigured: !!((_c = config.secureJsonFields) == null ? undefined : _c.tlsClientKey),\n onToggle: (enabled) => enabled ? onChange({\n ...config,\n jsonData: { ...config.jsonData, tlsAuth: enabled }\n }) : onChange({\n ...config,\n jsonData: { ...config.jsonData, tlsAuth: enabled, serverName: \"\" },\n secureJsonData: { ...config.secureJsonData, tlsClientCert: \"\", tlsClientKey: \"\" },\n secureJsonFields: { ...config.secureJsonFields, tlsClientCert: false, tlsClientKey: false }\n }),\n onServerNameChange: (serverName) => onChange({\n ...config,\n jsonData: { ...config.jsonData, serverName }\n }),\n onClientCertificateChange: (clientCertificate) => onChange({\n ...config,\n secureJsonData: {\n ...config.secureJsonData,\n tlsClientCert: clientCertificate\n }\n }),\n onClientCertificateReset: () => onChange({\n ...config,\n secureJsonData: {\n ...config.secureJsonData,\n tlsClientCert: \"\"\n },\n secureJsonFields: {\n ...config.secureJsonFields,\n tlsClientCert: false\n }\n }),\n onClientKeyChange: (clientKey) => onChange({\n ...config,\n secureJsonData: {\n ...config.secureJsonData,\n tlsClientKey: clientKey\n }\n }),\n onClientKeyReset: () => onChange({\n ...config,\n secureJsonData: {\n ...config.secureJsonData,\n tlsClientKey: \"\"\n },\n secureJsonFields: {\n ...config.secureJsonFields,\n tlsClientKey: false\n }\n })\n },\n skipTLSVerification: {\n enabled: config.jsonData.tlsSkipVerify,\n onToggle: (enabled) => onChange({\n ...config,\n jsonData: { ...config.jsonData, tlsSkipVerify: enabled }\n })\n }\n };\n}\nfunction getCustomHeaders(config, onChange) {\n const headers = Object.keys(config.jsonData).filter((key) => key.startsWith(headerNamePrefix)).sort().map((key) => {\n var _a;\n const index = key.slice(headerNamePrefix.length);\n return {\n name: config.jsonData[key],\n configured: (_a = config.secureJsonFields[`${headerValuePrefix}${index}`]) != null ? _a : false\n };\n });\n return {\n headers,\n onChange: (headers2) => {\n const newJsonData = Object.fromEntries(\n Object.entries(config.jsonData).filter(([key]) => !key.startsWith(headerNamePrefix))\n );\n const newSecureJsonData = Object.fromEntries(\n Object.entries(config.secureJsonData || {}).filter(([key]) => !key.startsWith(headerValuePrefix))\n );\n const newSecureJsonFields = Object.fromEntries(\n Object.entries(config.secureJsonFields).filter(([key]) => !key.startsWith(headerValuePrefix))\n );\n headers2.forEach((header, index) => {\n newJsonData[`${headerNamePrefix}${index + 1}`] = header.name;\n if (header.configured) {\n newSecureJsonFields[`${headerValuePrefix}${index + 1}`] = true;\n } else {\n newSecureJsonData[`${headerValuePrefix}${index + 1}`] = header.value;\n }\n });\n onChange({\n ...config,\n jsonData: newJsonData,\n secureJsonData: newSecureJsonData,\n secureJsonFields: newSecureJsonFields\n });\n }\n };\n}\n\nexport { convertLegacyAuthProps, getBasicAuthProps, getCustomHeaders, getOnAuthMethodSelectHandler, getSelectedMethod, getTLSProps };\n//# sourceMappingURL=utils.js.map\n","import React__default from 'react';\nimport { css, cx } from '@emotion/css';\nimport { InlineField, TagsInput, Input } from '@grafana/ui';\nimport { ConfigSubSection } from '../ConfigSection/ConfigSubSection.js';\nimport '@grafana/data';\n\nconst AdvancedHttpSettings = ({\n config,\n onChange,\n className\n}) => {\n const onCookiesChange = (cookies) => {\n onChange({\n ...config,\n jsonData: {\n ...config.jsonData,\n keepCookies: cookies\n }\n });\n };\n const onTimeoutChange = (event) => {\n onChange({\n ...config,\n jsonData: {\n ...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';\n\nimport { DataSourcePluginOptionsEditorProps, GrafanaTheme2 } from '@grafana/data';\nimport {\n AdvancedHttpSettings,\n Auth,\n ConfigSection,\n ConnectionSettings,\n DataSourceDescription,\n convertLegacyAuthProps,\n} from '@grafana/plugin-ui';\nimport { config } from '@grafana/runtime';\nimport { Divider, SecureSocksProxySettings, Stack, useStyles2 } from '@grafana/ui';\n\nimport { ParcaDataSourceOptions } from './types';\n\ninterface Props extends DataSourcePluginOptionsEditorProps<ParcaDataSourceOptions> {}\n\nexport const ConfigEditor = (props: Props) => {\n const { options, onOptionsChange } = props;\n const styles = useStyles2(getStyles);\n\n return (\n <div className={styles.container}>\n <DataSourceDescription\n dataSourceName=\"Parca\"\n docsLink=\"https://grafana.com/docs/grafana/latest/datasources/parca\"\n hasRequiredFields={false}\n />\n\n <Divider spacing={4} />\n\n <ConnectionSettings config={options} onChange={onOptionsChange} urlPlaceholder=\"http://localhost:7070\" />\n\n <Divider spacing={4} />\n <Auth\n {...convertLegacyAuthProps({\n config: options,\n onChange: onOptionsChange,\n })}\n />\n\n <Divider spacing={4} />\n <ConfigSection\n title=\"Additional settings\"\n description=\"Additional settings are optional settings that can be configured for more control over your data source.\"\n isCollapsible={true}\n isInitiallyOpen={false}\n >\n <Stack gap={5} direction=\"column\">\n <AdvancedHttpSettings config={options} onChange={onOptionsChange} />\n\n {config.secureSocksDSProxyEnabled && (\n <SecureSocksProxySettings options={options} onOptionsChange={onOptionsChange} />\n )}\n </Stack>\n </ConfigSection>\n </div>\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n container: css({\n marginBottom: theme.spacing(2),\n maxWidth: '900px',\n }),\n});\n","import { useEffect } from 'react';\nvar useEffectOnce = function (effect) {\n useEffect(effect, []);\n};\nexport default useEffectOnce;\n","import useEffectOnce from './useEffectOnce';\nvar useMount = function (fn) {\n useEffectOnce(function () {\n fn();\n });\n};\nexport default useMount;\n","import { css } from '@emotion/css';\nimport { CSSProperties } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\ninterface StackProps {\n direction?: CSSProperties['flexDirection'];\n alignItems?: CSSProperties['alignItems'];\n wrap?: boolean;\n gap?: number;\n flexGrow?: CSSProperties['flexGrow'];\n children: React.ReactNode;\n}\n\nexport function Stack(props: StackProps) {\n const styles = useStyles2(getStyles, props);\n return <div className={styles.root}>{props.children}</div>;\n}\n\nconst getStyles = (theme: GrafanaTheme2, props: StackProps) => ({\n root: css({\n display: 'flex',\n flexDirection: props.direction ?? 'row',\n flexWrap: (props.wrap ?? true) ? 'wrap' : undefined,\n alignItems: props.alignItems,\n gap: theme.spacing(props.gap ?? 2),\n flexGrow: props.flexGrow,\n }),\n});\n","import { css } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\nimport { Stack } from './Stack';\n\ninterface EditorRowProps {\n children: React.ReactNode;\n stackProps?: Partial<React.ComponentProps<typeof Stack>>;\n}\n\nexport const EditorRow = ({ children, stackProps }: EditorRowProps) => {\n const styles = useStyles2(getStyles);\n\n return (\n <div className={styles.root}>\n <Stack gap={2} {...stackProps}>\n {children}\n </Stack>\n </div>\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n root: css({\n padding: theme.spacing(1),\n backgroundColor: theme.colors.background.secondary,\n borderRadius: theme.shape.radius.default,\n }),\n };\n};\n","import * as React from 'react';\n\nimport { Stack } from './Stack';\n\ninterface EditorRowsProps {\n children: React.ReactNode;\n}\n\nexport const EditorRows = ({ children }: EditorRowsProps) => {\n return (\n <Stack gap={0.5} direction=\"column\">\n {children}\n </Stack>\n );\n};\n","import { useRef } from 'react';\nvar useLatest = function (value) {\n var ref = useRef(value);\n ref.current = value;\n return ref;\n};\nexport default useLatest;\n","import { language, languageConfiguration } from './lang';\n\nexport const languageDefinition = {\n id: 'parca',\n extensions: ['.parca'],\n aliases: ['parca'],\n mimetypes: [],\n def: {\n language,\n languageConfiguration,\n },\n};\n","import type { languages } from 'monaco-editor';\n\nexport const languageConfiguration: languages.LanguageConfiguration = {\n // the default separators except `@$`\n wordPattern: /(-?\\d*\\.\\d\\w*)|([^`~!#%^&*()\\-=+\\[{\\]}\\\\|;:'\",.<>\\/?\\s]+)/g,\n brackets: [['{', '}']],\n autoClosingPairs: [\n { open: '{', close: '}' },\n { open: '\"', close: '\"' },\n { open: \"'\", close: \"'\" },\n ],\n surroundingPairs: [\n { open: '{', close: '}' },\n { open: '\"', close: '\"' },\n { open: \"'\", close: \"'\" },\n ],\n folding: {},\n};\n\nexport const language: languages.IMonarchLanguage = {\n ignoreCase: false,\n defaultToken: '',\n tokenPostfix: '.fireql',\n\n keywords: [],\n operators: [],\n\n // we include these common regular expressions\n symbols: /[=><!~?:&|+\\-*\\/^%]+/,\n escapes: /\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,\n digits: /\\d+(_+\\d+)*/,\n octaldigits: /[0-7]+(_+[0-7]+)*/,\n binarydigits: /[0-1]+(_+[0-1]+)*/,\n hexdigits: /[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,\n integersuffix: /(ll|LL|u|U|l|L)?(ll|LL|u|U|l|L)?/,\n floatsuffix: /[fFlL]?/,\n\n tokenizer: {\n root: [\n // labels\n [/[a-z_]\\w*(?=\\s*(=|!=|=~|!~))/, 'tag'],\n\n // strings\n [/\"([^\"\\\\]|\\\\.)*$/, 'string.invalid'], // non-teminated string\n [/'([^'\\\\]|\\\\.)*$/, 'string.invalid'], // non-teminated string\n [/\"/, 'string', '@string_double'],\n [/'/, 'string', '@string_single'],\n\n // whitespace\n { include: '@whitespace' },\n\n // delimiters and operators\n [/[{}()\\[\\]]/, '@brackets'],\n [/[<>](?!@symbols)/, '@brackets'],\n [\n /@symbols/,\n {\n cases: {\n '@operators': 'delimiter',\n '@default': '',\n },\n },\n ],\n\n // numbers\n [/\\d+/, 'number'],\n [/\\d*\\d+[eE]([\\-+]?\\d+)?(@floatsuffix)/, 'number.float'],\n [/\\d*\\.\\d+([eE][\\-+]?\\d+)?(@floatsuffix)/, 'number.float'],\n [/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/, 'number.hex'],\n [/0[0-7']*[0-7](@integersuffix)/, 'number.octal'],\n [/0[bB][0-1']*[0-1](@integersuffix)/, 'number.binary'],\n [/\\d[\\d']*\\d(@integersuffix)/, 'number'],\n [/\\d(@integersuffix)/, 'number'],\n ],\n\n string_double: [\n [/[^\\\\\"]+/, 'string'],\n [/@escapes/, 'string.escape'],\n [/\\\\./, 'string.escape.invalid'],\n [/\"/, 'string', '@pop'],\n ],\n\n string_single: [\n [/[^\\\\']+/, 'string'],\n [/@escapes/, 'string.escape'],\n [/\\\\./, 'string.escape.invalid'],\n [/'/, 'string', '@pop'],\n ],\n\n clauses: [\n [/[^(,)]/, 'tag'],\n [/\\)/, 'identifier', '@pop'],\n ],\n\n whitespace: [[/[ \\t\\r\\n]+/, 'white']],\n },\n};\n","import { monacoTypes, Monaco } from '@grafana/ui';\n\n/**\n * Class that implements CompletionItemProvider interface and allows us to provide suggestion for the Monaco\n * autocomplete system.\n *\n * At this moment we just pass it all the labels/values we get from Fire backend later on we may do something a bit\n * smarter if there will be lots of labels.\n */\nexport class CompletionProvider implements monacoTypes.languages.CompletionItemProvider {\n triggerCharacters = ['{', ',', '[', '(', '=', '~', ' ', '\"'];\n\n private labels: { [label: string]: string[] } = {};\n\n constructor(\n private datasource: {\n getLabelNames: () => Promise<string[]>;\n getLabelValues: (label: string) => Promise<string[]>;\n },\n private monaco: Monaco,\n private editor: monacoTypes.editor.IStandaloneCodeEditor\n ) {}\n\n async init() {\n const names = await this.datasource.getLabelNames();\n this.labels = names.reduce<{ [label: string]: string[] }>((acc, name) => {\n acc[name] = [];\n return acc;\n }, {});\n }\n\n provideCompletionItems(\n model: monacoTypes.editor.ITextModel,\n position: monacoTypes.Position\n ): monacoTypes.languages.ProviderResult<monacoTypes.languages.CompletionList> {\n // if the model-id does not match, then this call is from a different editor-instance,\n // not \"our instance\", so return nothing\n if (this.editor.getModel()?.id !== model.id) {\n return { suggestions: [] };\n }\n\n const { range, offset } = getRangeAndOffset(this.monaco, model, position);\n const situation = getSituation(model.getValue(), offset);\n // Cannot be async/await cause of the ProviderResult return type\n return this.getCompletions(situation).then((completionItems) => {\n // monaco by-default alphabetically orders the items.\n // to stop it, we use a number-as-string sortkey,\n // so that monaco keeps the order we use\n const maxIndexDigits = completionItems.length.toString().length;\n const suggestions: monacoTypes.languages.CompletionItem[] = completionItems.map((item, index) => ({\n kind: getMonacoCompletionItemKind(item.type, this.monaco!),\n label: item.label,\n insertText: item.insertText,\n sortText: index.toString().padStart(maxIndexDigits, '0'), // to force the order we have\n range,\n }));\n return { suggestions };\n });\n }\n\n /**\n * Get suggestion based on the situation we are in like whether we should suggest label names or values.\n * @param situation\n * @private\n */\n private async getCompletions(situation: Situation): Promise<Completion[]> {\n if (!Object.keys(this.labels).length) {\n return [];\n }\n switch (situation.type) {\n // Not really sure what would make sense to suggest in this case so just leave it\n case 'UNKNOWN': {\n return [];\n }\n case 'EMPTY': {\n return Object.keys(this.labels).map((key) => {\n return {\n label: key,\n insertText: `{${key}=\"`,\n type: 'LABEL_NAME',\n };\n });\n }\n case 'IN_LABEL_NAME':\n return Object.keys(this.labels).map((key) => {\n return {\n label: key,\n insertText: key,\n type: 'LABEL_NAME',\n };\n });\n case 'IN_LABEL_VALUE':\n let values = [];\n if (this.labels[situation.labelName].length) {\n values = this.labels[situation.labelName];\n } else {\n values = await this.datasource.getLabelValues(situation.labelName);\n this.labels[situation.labelName] = values;\n }\n\n return values.map((val) => {\n return {\n label: val,\n insertText: situation.betweenQuotes ? val : `\"${val}\"`,\n type: 'LABEL_VALUE',\n };\n });\n default:\n throw new Error(`Unexpected situation ${situation}`);\n }\n }\n}\n\n/**\n * Get item kind which is used for icon next to the suggestion.\n * @param type\n * @param monaco\n */\nfunction getMonacoCompletionItemKind(type: CompletionType, monaco: Monaco): monacoTypes.languages.CompletionItemKind {\n switch (type) {\n case 'LABEL_NAME':\n return monaco.languages.CompletionItemKind.Enum;\n case 'LABEL_VALUE':\n return monaco.languages.CompletionItemKind.EnumMember;\n default:\n throw new Error(`Unexpected CompletionType: ${type}`);\n }\n}\n\nexport type CompletionType = 'LABEL_NAME' | 'LABEL_VALUE';\ntype Completion = {\n type: CompletionType;\n label: string;\n insertText: string;\n};\n\nexport type Label = {\n name: string;\n value: string;\n};\n\nexport type Situation =\n | {\n type: 'UNKNOWN';\n }\n | {\n type: 'EMPTY';\n }\n | {\n type: 'IN_LABEL_NAME';\n otherLabels: Label[];\n }\n | {\n type: 'IN_LABEL_VALUE';\n labelName: string;\n betweenQuotes: boolean;\n otherLabels: Label[];\n };\n\nconst labelNameRegex = /[a-zA-Z_][a-zA-Z0-9_]*/;\nconst labelValueRegex = /[^\"]*/; // anything except a double quote\nconst labelPairsRegex = new RegExp(`(${labelNameRegex.source})=\"(${labelValueRegex.source})\"`, 'g');\nconst inLabelValueRegex = new RegExp(`(${labelNameRegex.source})=(\"?)${labelValueRegex.source}$`);\nconst inLabelNameRegex = new RegExp(/[{,]\\s*[a-zA-Z0-9_]*$/);\n\n/**\n * Figure out where is the cursor and what kind of suggestions are appropriate.\n * As currently Fire handles just a simple {foo=\"bar\", baz=\"zyx\"} kind of values we can do with simple regex to figure\n * out where we are with the cursor.\n * @param text\n * @param offset\n */\nfunction getSituation(text: string, offset: number): Situation {\n if (text === '') {\n return {\n type: 'EMPTY',\n };\n }\n\n // Get all the labels so far in the query, so we can do some more filtering.\n const matches = text.matchAll(labelPairsRegex);\n const existingLabels = Array.from(matches).reduce<Label[]>((acc, match) => {\n const [_, name, value] = match[1];\n acc.push({ name, value });\n return acc;\n }, []);\n\n // Check if we are editing a label value right now. If so also get name of the label\n const matchLabelValue = text.substring(0, offset).match(inLabelValueRegex);\n if (matchLabelValue) {\n return {\n type: 'IN_LABEL_VALUE',\n labelName: matchLabelValue[1],\n betweenQuotes: !!matchLabelValue[2],\n otherLabels: existingLabels,\n };\n }\n\n // Check if we are editing a label name\n const matchLabelName = text.substring(0, offset).match(inLabelNameRegex);\n if (matchLabelName) {\n return {\n type: 'IN_LABEL_NAME',\n otherLabels: existingLabels,\n };\n }\n\n // Will happen only if user writes something that isn't really a label selector\n return {\n type: 'UNKNOWN',\n };\n}\n\nfunction getRangeAndOffset(monaco: Monaco, model: monacoTypes.editor.ITextModel, position: monacoTypes.Position) {\n const word = model.getWordAtPosition(position);\n const range =\n word != null\n ? monaco.Range.lift({\n startLineNumber: position.lineNumber,\n endLineNumber: position.lineNumber,\n startColumn: word.startColumn,\n endColumn: word.endColumn,\n })\n : monaco.Range.fromPositions(position);\n\n // documentation says `position` will be \"adjusted\" in `getOffsetAt` so we clone it here just for sure.\n const positionClone = {\n column: position.column,\n lineNumber: position.lineNumber,\n };\n\n const offset = model.getOffsetAt(positionClone);\n return { offset, range };\n}\n","import { css } from '@emotion/css';\nimport { useEffect, useRef } from 'react';\nimport { useLatest } from 'react-use';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { CodeEditor, Monaco, useStyles2, monacoTypes } from '@grafana/ui';\n\nimport { ParcaDataSource } from '../datasource';\nimport { languageDefinition } from '../lang';\n\nimport { CompletionProvider } from './autocomplete';\n\ninterface Props {\n value: string;\n datasource: ParcaDataSource;\n onChange: (val: string) => void;\n onRunQuery: (value: string) => void;\n}\n\nexport function LabelsEditor(props: Props) {\n const setupAutocompleteFn = useAutocomplete(props.datasource);\n const styles = useStyles2(getStyles);\n\n const onRunQueryRef = useLatest(props.onRunQuery);\n const containerRef = useRef<HTMLDivElement>(null);\n\n return (\n <div\n className={styles.wrapper}\n // NOTE: we will be setting inline-style-width/height on this element\n ref={containerRef}\n >\n <CodeEditor\n value={props.value}\n language={langId}\n onBlur={props.onChange}\n containerStyles={styles.queryField}\n monacoOptions={{\n folding: false,\n fontSize: 14,\n lineNumbers: 'off',\n overviewRulerLanes: 0,\n renderLineHighlight: 'none',\n scrollbar: {\n vertical: 'hidden',\n verticalScrollbarSize: 8, // used as \"padding-right\"\n horizontal: 'hidden',\n horizontalScrollbarSize: 0,\n },\n scrollBeyondLastLine: false,\n wordWrap: 'on',\n padding: {\n top: 5,\n bottom: 6,\n },\n }}\n onBeforeEditorMount={ensureParcaQL}\n onEditorDidMount={(editor, monaco) => {\n setupAutocompleteFn(editor, monaco);\n\n const updateElementHeight = () => {\n const containerDiv = containerRef.current;\n if (containerDiv !== null) {\n const pixelHeight = editor.getContentHeight();\n containerDiv.style.height = `${pixelHeight + EDITOR_HEIGHT_OFFSET}px`;\n containerDiv.style.width = '100%';\n const pixelWidth = containerDiv.clientWidth;\n editor.layout({ width: pixelWidth, height: pixelHeight });\n }\n };\n\n editor.onDidContentSizeChange(updateElementHeight);\n updateElementHeight();\n\n editor.addCommand(monaco.KeyMod.Shift | monaco.KeyCode.Enter, () => {\n onRunQueryRef.current(editor.getValue());\n });\n }}\n />\n </div>\n );\n}\n\n// this number was chosen by testing various values. it might be necessary\n// because of the width of the border, not sure.\n//it needs to do 2 things:\n// 1. when the editor is single-line, it should make the editor height be visually correct\n// 2. when the editor is multi-line, the editor should not be \"scrollable\" (meaning,\n// you do a scroll-movement in the editor, and it will scroll the content by a couple pixels\n// up & down. this we want to avoid)\nconst EDITOR_HEIGHT_OFFSET = 2;\n\n/**\n * Hook that returns function that will set up monaco autocomplete for the label selector\n * @param datasource\n */\nfunction useAutocomplete(datasource: ParcaDataSource) {\n const autocompleteDisposeFun = useRef<(() => void) | null>(null);\n useEffect(() => {\n // when we unmount, we unregister the autocomplete-function, if it was registered\n return () => {\n autocompleteDisposeFun.current?.();\n };\n }, []);\n\n // This should be run in monaco onEditorDidMount\n return async (editor: monacoTypes.editor.IStandaloneCodeEditor, monaco: Monaco) => {\n const provider = new CompletionProvider(datasource, monaco, editor);\n await provider.init();\n const { dispose } = monaco.languages.registerCompletionItemProvider(langId, provider);\n autocompleteDisposeFun.current = dispose;\n };\n}\n\n// we must only run the setup code once\nlet parcaqlSetupDone = false;\nconst langId = 'parca';\n\nfunction ensureParcaQL(monaco: Monaco) {\n if (parcaqlSetupDone === false) {\n parcaqlSetupDone = true;\n const { aliases, extensions, mimetypes, def } = languageDefinition;\n monaco.languages.register({ id: langId, aliases, extensions, mimetypes });\n monaco.languages.setMonarchTokensProvider(langId, def.language);\n monaco.languages.setLanguageConfiguration(langId, def.languageConfiguration);\n }\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n queryField: css({\n flex: 1,\n // Not exactly sure but without this the editor doe not shrink after resizing (so you can make it bigger but not\n // smaller). At the same time this does not actually make the editor 100px because it has flex 1 so I assume\n // this should sort of act as a flex-basis (but flex-basis does not work for this). So yeah CSS magic.\n width: '100px',\n }),\n wrapper: css({\n display: 'flex',\n flex: 1,\n border: '1px solid rgba(36, 41, 46, 0.3)',\n borderRadius: theme.shape.radius.default,\n }),\n };\n};\n","import { useReducer } from 'react';\nvar toggleReducer = function (state, nextValue) {\n return typeof nextValue === 'boolean' ? nextValue : !state;\n};\nvar useToggle = function (initialValue) {\n return useReducer(toggleReducer, initialValue);\n};\nexport default useToggle;\n","import { css, cx } from '@emotion/css';\nimport { useToggle } from 'react-use';\n\nimport { CoreApp, GrafanaTheme2 } from '@grafana/data';\nimport { Icon, useStyles2, RadioButtonGroup, Field, clearButtonStyles, Button } from '@grafana/ui';\n\nimport { Query } from '../types';\n\nimport { Stack } from './Stack';\n\nexport interface Props {\n query: Query;\n onQueryTypeChange: (val: Query['queryType']) => void;\n app?: CoreApp;\n}\n\nconst rangeOptions: Array<{ value: Query['queryType']; label: string; description: string }> = [\n { value: 'metrics', label: 'Metric', description: 'Return aggregated metrics' },\n { value: 'profile', label: 'Profile', description: 'Return profile' },\n { value: 'both', label: 'Both', description: 'Return both metric and profile data' },\n];\n\nfunction getOptions(app?: CoreApp) {\n if (app === CoreApp.Explore) {\n return rangeOptions;\n }\n return rangeOptions.filter((option) => option.value !== 'both');\n}\n\n/**\n * Base on QueryOptionGroup component from grafana/ui but that is not available yet.\n */\nexport function QueryOptions({ query, onQueryTypeChange, app }: Props) {\n const [isOpen, toggleOpen] = useToggle(false);\n const styles = useStyles2(getStyles);\n const options = getOptions(app);\n const buttonStyles = useStyles2(clearButtonStyles);\n\n return (\n <Stack gap={0} direction=\"column\">\n <Button className={cx(styles.header, buttonStyles)} onClick={toggleOpen} title=\"Click to edit options\">\n <div className={styles.toggle}>\n <Icon name={isOpen ? 'angle-down' : 'angle-right'} />\n </div>\n <h6 className={styles.title}>Options</h6>\n {!isOpen && (\n <div className={styles.description}>\n <span>Type: {query.queryType}</span>\n </div>\n )}\n </Button>\n {isOpen && (\n <div className={styles.body}>\n <Field label={'Query Type'}>\n <RadioButtonGroup options={options} value={query.queryType} onChange={onQueryTypeChange} />\n </Field>\n </div>\n )}\n </Stack>\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\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 header: css({\n display: 'flex',\n cursor: 'pointer',\n alignItems: 'baseline',\n color: theme.colors.text.primary,\n '&:hover': {\n background: theme.colors.emphasize(theme.colors.background.primary, 0.03),\n },\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 paddingLeft: theme.spacing(2),\n gap: theme.spacing(2),\n display: 'flex',\n }),\n body: css({\n display: 'flex',\n paddingTop: theme.spacing(2),\n gap: theme.spacing(2),\n flexWrap: 'wrap',\n }),\n toggle: css({\n color: theme.colors.text.secondary,\n marginRight: `${theme.spacing(1)}`,\n }),\n };\n};\n","import { defaults } from 'lodash';\nimport { useMemo, useState } from 'react';\nimport { useMount } from 'react-use';\n\nimport { CoreApp, QueryEditorProps } from '@grafana/data';\nimport { ButtonCascader, CascaderOption } from '@grafana/ui';\n\nimport { defaultParcaDataQuery, defaultParcaQueryType, ParcaDataQuery as Parca } from '../dataquery.gen';\nimport { ParcaDataSource } from '../datasource';\nimport { ParcaDataSourceOptions, ProfileTypeMessage, Query } from '../types';\n\nimport { EditorRow } from './EditorRow';\nimport { EditorRows } from './EditorRows';\nimport { LabelsEditor } from './LabelsEditor';\nimport { QueryOptions } from './QueryOptions';\n\nexport type Props = QueryEditorProps<ParcaDataSource, Query, ParcaDataSourceOptions>;\n\nexport const defaultQuery: Partial<Parca> = {\n ...defaultParcaDataQuery,\n queryType: defaultParcaQueryType,\n};\n\nexport function QueryEditor(props: Props) {\n const [profileTypes, setProfileTypes] = useState<ProfileTypeMessage[]>([]);\n\n function onProfileTypeChange(value: string[], selectedOptions: CascaderOption[]) {\n if (selectedOptions.length === 0) {\n return;\n }\n const id = selectedOptions[selectedOptions.length - 1].value;\n if (typeof id !== 'string') {\n throw new Error('id is not string');\n }\n props.onChange({ ...props.query, profileTypeId: id });\n }\n\n function onLabelSelectorChange(value: string) {\n props.onChange({ ...props.query, labelSelector: value });\n }\n\n function handleRunQuery(value: string) {\n props.onChange({ ...props.query, labelSelector: value });\n props.onRunQuery();\n }\n\n useMount(async () => {\n const profileTypes = await props.datasource.getProfileTypes();\n setProfileTypes(profileTypes);\n });\n\n // Turn profileTypes into cascader options\n const cascaderOptions = useMemo(() => {\n let mainTypes = new Map<string, CascaderOption>();\n // Classify profile types by name then sample type.\n for (let profileType of profileTypes) {\n if (!mainTypes.has(profileType.name)) {\n mainTypes.set(profileType.name, {\n label: profileType.name,\n value: profileType.ID,\n children: [],\n });\n }\n mainTypes.get(profileType.name)?.children?.push({\n label: profileType.sample_type,\n value: profileType.ID,\n });\n }\n return Array.from(mainTypes.values());\n }, [profileTypes]);\n\n const selectedProfileName = useMemo(() => {\n if (!profileTypes) {\n return 'Loading';\n }\n const profile = profileTypes.find((type) => type.ID === props.query.profileTypeId);\n if (!profile) {\n return 'Select a profile type';\n }\n\n return profile.name + ' - ' + profile.sample_type;\n }, [props.query.profileTypeId, profileTypes]);\n\n let query = normalizeQuery(props.query, props.app);\n\n return (\n <EditorRows>\n <EditorRow stackProps={{ wrap: false, gap: 1 }}>\n <ButtonCascader onChange={onProfileTypeChange} options={cascaderOptions} buttonProps={{ variant: 'secondary' }}>\n {selectedProfileName}\n </ButtonCascader>\n <LabelsEditor\n value={query.labelSelector}\n onChange={onLabelSelectorChange}\n datasource={props.datasource}\n onRunQuery={handleRunQuery}\n />\n </EditorRow>\n <EditorRow>\n <QueryOptions\n query={query}\n onQueryTypeChange={(val) => {\n props.onChange({ ...query, queryType: val });\n }}\n app={props.app}\n />\n </EditorRow>\n </EditorRows>\n );\n}\n\nfunction normalizeQuery(query: Query, app?: CoreApp) {\n let normalized = defaults(query, defaultQuery);\n if (app !== CoreApp.Explore && normalized.queryType === 'both') {\n // In dashboards and other places, we can't show both types of graphs at the same time.\n // This will also be a default when having 'both' query and adding it from explore to dashboard\n normalized.queryType = 'profile';\n }\n return normalized;\n}\n","// Code generated - EDITING IS FUTILE. DO NOT EDIT.\n//\n// Generated by:\n// public/app/plugins/gen.go\n// Using jennies:\n// TSTypesJenny\n// PluginTsTypesJenny\n//\n// Run 'make gen-cue' from repository root to regenerate.\n\nimport * as common from '@grafana/schema';\n\nexport type ParcaQueryType = ('metrics' | 'profile' | 'both');\n\nexport const defaultParcaQueryType: ParcaQueryType = 'both';\n\nexport interface ParcaDataQuery extends common.DataQuery {\n /**\n * Specifies the query label selectors.\n */\n labelSelector: string;\n /**\n * Specifies the type of profile to query.\n */\n profileTypeId: string;\n}\n\nexport const defaultParcaDataQuery: Partial<ParcaDataQuery> = {\n labelSelector: '{}',\n};\n","import { Observable, of } from 'rxjs';\n\nimport { DataQueryRequest, DataQueryResponse, DataSourceInstanceSettings, ScopedVars } from '@grafana/data';\nimport { DataSourceWithBackend, getTemplateSrv, TemplateSrv } from '@grafana/runtime';\n\nimport { ParcaDataSourceOptions, Query, ProfileTypeMessage } from './types';\n\nexport class ParcaDataSource extends DataSourceWithBackend<Query, ParcaDataSourceOptions> {\n constructor(\n instanceSettings: DataSourceInstanceSettings<ParcaDataSourceOptions>,\n private readonly templateSrv: TemplateSrv = getTemplateSrv()\n ) {\n super(instanceSettings);\n }\n\n query(request: DataQueryRequest<Query>): Observable<DataQueryResponse> {\n if (!request.targets.every((q) => q.profileTypeId)) {\n // When changing data source in explore, firs query can be sent without filled in profileTypeId\n return of({ data: [] });\n }\n\n return super.query(request);\n }\n\n applyTemplateVariables(query: Query, scopedVars: ScopedVars): Query {\n return {\n ...query,\n labelSelector: this.templateSrv.replace(query.labelSelector ?? '', scopedVars),\n };\n }\n\n async getProfileTypes(): Promise<ProfileTypeMessage[]> {\n return await super.getResource('profileTypes');\n }\n\n async getLabelNames(): Promise<string[]> {\n return await super.getResource('labelNames');\n }\n\n async getLabelValues(labelName: string): Promise<string[]> {\n return await super.getResource('labelValues', { label: labelName });\n }\n}\n","import { DataSourcePlugin } from '@grafana/data';\n\nimport { ConfigEditor } from './ConfigEditor';\nimport { QueryEditor } from './QueryEditor/QueryEditor';\nimport { ParcaDataSource } from './datasource';\nimport { Query, ParcaDataSourceOptions } from './types';\n\nexport const plugin = new DataSourcePlugin<ParcaDataSource, Query, ParcaDataSourceOptions>(ParcaDataSource)\n .setConfigEditor(ConfigEditor)\n .setQueryEditor(QueryEditor);\n"],"names":["module","exports","__WEBPACK_EXTERNAL_MODULE__7__","f","k","Symbol","for","l","m","Object","prototype","hasOwnProperty","n","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","p","key","ref","__self","__source","q","c","a","g","b","d","e","h","call","defaultProps","$$typeof","type","props","_owner","current","jsx","jsxs","__WEBPACK_EXTERNAL_MODULE__89__","__WEBPACK_EXTERNAL_MODULE__241__","__WEBPACK_EXTERNAL_MODULE__269__","__WEBPACK_EXTERNAL_MODULE__308__","__WEBPACK_EXTERNAL_MODULE__531__","__WEBPACK_EXTERNAL_MODULE__781__","__WEBPACK_EXTERNAL_MODULE__959__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","__esModule","definition","o","defineProperty","enumerable","get","obj","prop","r","toStringTag","value","slice","lastIndexOf","DataSourceDescription","dataSourceName","docsLink","hasRequiredFields","className","theme","useTheme2","styles","container","css","margin","marginTop","spacing","text","typography","body","color","colors","secondary","link","textDecoration","cx","href","target","rel","GenericConfigSection","children","title","description","isCollapsible","isInitiallyOpen","kind","isOpen","setIsOpen","useState","iconName","isSubSection","collapsibleButtonAriaLabel","header","display","justifyContent","alignItems","subtitle","fontWeight","fontWeightRegular","descriptionText","marginBottom","bodySmall","content","IconButton","name","onClick","size","ConfigSection","ConnectionSettings","config","onChange","urlPlaceholder","urlTooltip","urlLabel","isValidUrl","url","test","maxWidth","InlineField","htmlFor","label","labelWidth","tooltip","grow","disabled","readOnly","required","invalid","error","interactive","Input","id","event","currentTarget","placeholder","useCommonStyles","inlineFieldNoMarginRight","marginRight","inlineFieldWithSecret","flexGrow","BasicAuth","user","passwordConfigured","userLabel","userTooltip","userPlaceholder","passwordLabel","passwordTooltip","passwordPlaceholder","onUserChange","onPasswordChange","onPasswordReset","commonStyles","lastInlineField","SecretInput","isConfigured","onReset","ConfigSubSection","AuthMethod","AuthMethod2","defaultOptions","CrossSiteCredentials","OAuthForward","NoAuth","AuthMethodSettings","selectedMethod","mostCommonMethod","visibleMethods","visibleMethodsFromProps","defaultOptionsOverrides","customMethods","onAuthMethodSelect","basicAuth","_a","_b","_c","_d","authMethodChanged","setAuthMethodChanged","useMemo","_a2","map","hasSelect","length","preparedOptions","customOptions","reduce","acc","method","preparedDefaultOptions","allOptions","filter","Boolean","option","selected","AuthFieldsComponent","startsWith","find","component","authMethods","padding","border","weak","selectedMethodFields","Field","Select","inputId","options","TLSSettingsSection","enabled","tooltipText","onToggle","checkboxContainer","infoIcon","marginLeft","Checkbox","Tooltip","placement","Icon","SelfSignedCertificate","certificateConfigured","onCertificateChange","onCertificateReset","tooltips","newEnabled","certificateLabel","SecretTextArea","rows","TLSClientAuth","serverName","clientCertificateConfigured","clientKeyConfigured","onServerNameChange","onClientCertificateChange","onClientKeyChange","onClientCertificateReset","onClientKeyReset","serverNameLabel","keyLabel","SkipTLSVerification","TLSSettings","selfSignedCertificate","TLSClientAuth$1","skipTLSVerification","CustomHeader","onBlur","onDelete","input","minWidth","headerNameField","width","paddingRight","headerValueField","removeHeaderBtn","InlineFieldRow","configured","tooltipPlacement","CustomHeaders","headers","headersFromProps","setHeaders","uniqueId","useEffect","headers2","changed","newHeaders","addHeaderButton","header2","onHeaderChange","index","findIndex","splice","onHeaderDelete","Button","icon","variant","fill","Math","random","toString","Auth","TLS","customHeaders","headerNamePrefix","headerValuePrefix","convertLegacyAuthProps","getSelectedMethod","getOnAuthMethodSelectHandler","getBasicAuthProps","getTLSProps","getCustomHeaders","withCredentials","jsonData","oauthPassThru","basicAuthUser","secureJsonFields","basicAuthPassword","password","secureJsonData","tlsAuthWithCACert","tlsCACert","certificate","tlsAuth","tlsClientCert","tlsClientKey","clientCertificate","clientKey","tlsSkipVerify","keys","sort","newJsonData","fromEntries","entries","newSecureJsonData","newSecureJsonFields","forEach","AdvancedHttpSettings","TagsInput","tags","keepCookies","cookies","min","timeout","parseInt","getStyles","effect","fn","Stack","useStyles2","div","root","flexDirection","direction","flexWrap","wrap","gap","EditorRow","stackProps","backgroundColor","background","borderRadius","shape","radius","default","EditorRows","useRef","languageDefinition","extensions","aliases","mimetypes","def","language","ignoreCase","defaultToken","tokenPostfix","keywords","operators","symbols","escapes","digits","octaldigits","binarydigits","hexdigits","integersuffix","floatsuffix","tokenizer","include","cases","string_double","string_single","clauses","whitespace","languageConfiguration","wordPattern","brackets","autoClosingPairs","open","close","surroundingPairs","folding","CompletionProvider","init","names","this","datasource","getLabelNames","labels","provideCompletionItems","model","position","editor","getModel","suggestions","range","offset","monaco","word","getWordAtPosition","Range","lift","startLineNumber","lineNumber","endLineNumber","startColumn","endColumn","fromPositions","positionClone","column","getOffsetAt","getRangeAndOffset","situation","matches","matchAll","labelPairsRegex","existingLabels","Array","from","match","_","push","matchLabelValue","substring","inLabelValueRegex","labelName","betweenQuotes","otherLabels","matchLabelName","inLabelNameRegex","getSituation","getValue","getCompletions","then","completionItems","maxIndexDigits","item","getMonacoCompletionItemKind","insertText","sortText","padStart","values","getLabelValues","val","Error","constructor","triggerCharacters","languages","CompletionItemKind","Enum","EnumMember","labelNameRegex","labelValueRegex","RegExp","source","LabelsEditor","setupAutocompleteFn","autocompleteDisposeFun","provider","dispose","registerCompletionItemProvider","langId","useAutocomplete","onRunQueryRef","useLatest","onRunQuery","containerRef","wrapper","CodeEditor","containerStyles","queryField","monacoOptions","fontSize","lineNumbers","overviewRulerLanes","renderLineHighlight","scrollbar","vertical","verticalScrollbarSize","horizontal","horizontalScrollbarSize","scrollBeyondLastLine","wordWrap","top","bottom","onBeforeEditorMount","ensureParcaQL","onEditorDidMount","updateElementHeight","containerDiv","pixelHeight","getContentHeight","style","height","EDITOR_HEIGHT_OFFSET","pixelWidth","clientWidth","layout","onDidContentSizeChange","addCommand","KeyMod","Shift","KeyCode","Enter","parcaqlSetupDone","register","setMonarchTokensProvider","setLanguageConfiguration","flex","toggleReducer","state","nextValue","initialValue","useReducer","rangeOptions","QueryOptions","query","onQueryTypeChange","app","toggleOpen","useToggle","CoreApp","Explore","getOptions","buttonStyles","clearButtonStyles","toggle","h6","span","queryType","RadioButtonGroup","switchLabel","cursor","primary","emphasize","overflow","fontWeightMedium","paddingLeft","paddingTop","defaultQuery","labelSelector","defaultParcaDataQuery","ParcaDataSource","DataSourceWithBackend","request","targets","every","profileTypeId","super","of","data","applyTemplateVariables","scopedVars","templateSrv","replace","getProfileTypes","instanceSettings","getTemplateSrv","plugin","DataSourcePlugin","setConfigEditor","onOptionsChange","Divider","secureSocksDSProxyEnabled","SecureSocksProxySettings","setQueryEditor","profileTypes","setProfileTypes","useMount","cascaderOptions","mainTypes","Map","profileType","has","set","ID","sample_type","selectedProfileName","profile","normalized","defaults","normalizeQuery","ButtonCascader","selectedOptions","buttonProps"],"sourceRoot":""}
.
Edit
..
Edit
CHANGELOG.md
Edit
LICENSE
Edit
README.md
Edit
img
Edit
module.js
Edit
module.js.LICENSE.txt
Edit
module.js.map
Edit
plugin.json
Edit